@asgardeo/auth-spa 0.3.5 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asgardeo-spa.production.esm.js +10 -10
- package/dist/asgardeo-spa.production.esm.js.map +1 -1
- package/dist/asgardeo-spa.production.js +9 -9
- package/dist/asgardeo-spa.production.js.map +1 -1
- package/dist/asgardeo-spa.production.min.js +1 -1
- package/dist/asgardeo-spa.production.min.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.esm.js +37 -37
- package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.js +37 -37
- package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
- package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
- package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
- package/dist/src/client.js +1 -1
- package/dist/src/client.js.map +1 -1
- package/dist/src/helpers/session-management-helper.js +2 -2
- package/dist/src/helpers/session-management-helper.js.map +1 -1
- package/dist/src/utils/spa-utils.d.ts +1 -1
- package/dist/src/utils/spa-utils.d.ts.map +1 -1
- package/dist/src/utils/spa-utils.js +9 -6
- package/dist/src/utils/spa-utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/client.ts +1 -1
- package/src/helpers/session-management-helper.ts +2 -2
- package/src/utils/spa-utils.ts +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function o(e,t,n,r,i,c,o){try{var a=e[c](o),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,i)}function a(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function a(e){o(c,r,i,a,l,"next",e)}function l(e){o(c,r,i,a,l,"throw",e)}a(void 0)}))}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}function Z(e){return Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Z(e)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function b(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function p(e,t,n){return p=b()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&h(i,n.prototype),i},p.apply(null,arguments)}function I(e){var t="function"==typeof Map?new Map:void 0;return I=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return p(e,arguments,Z(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),h(r,e)},I(e)}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return g(e)}function X(e){var t=b();return function(){var n,r=Z(e);if(t){var i=Z(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return y(this,n)}}function G(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],o=!0,a=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);o=!0);}catch(e){a=!0,i=e}finally{try{o||null==n.return||n.return()}finally{if(a)throw i}}return c}(e,t)||V(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e){return function(e){if(Array.isArray(e))return W(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||V(e)||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.")}()}function V(e,t){if(e){if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(e,t):void 0}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=V(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,c=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw c}}}}var v=function(e){return e&&e.Math==Math&&e},R=v("object"==("undefined"==typeof globalThis?"undefined":c(globalThis))&&globalThis)||v("object"==("undefined"==typeof window?"undefined":c(window))&&window)||v("object"==("undefined"==typeof self?"undefined":c(self))&&self)||v("object"==c(e)&&e)||function(){return this}()||Function("return this")(),S={},Y=function(e){try{return!!e()}catch(e){return!0}},J=!Y((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),K=!Y((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),L=K,N=Function.prototype.call,H=L?N.bind(N):function(){return N.apply(N,arguments)},x={},k={}.propertyIsEnumerable,U=Object.getOwnPropertyDescriptor,A=U&&!k.call({1:2},1);x.f=A?function(e){var t=U(this,e);return!!t&&t.enumerable}:k;var w,F,T=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},B=K,z=Function.prototype,j=z.bind,M=z.call,Q=B&&j.bind(M,M),P=B?function(e){return e&&Q(e)}:function(e){return e&&function(){return M.apply(e,arguments)}},E=P,O=E({}.toString),D=E("".slice),_=function(e){return D(O(e),8,-1)},q=P,$=Y,ee=_,te=R.Object,ne=q("".split),re=$((function(){return!te("z").propertyIsEnumerable(0)}))?function(e){return"String"==ee(e)?ne(e,""):te(e)}:te,ie=R.TypeError,ce=function(e){if(null==e)throw ie("Can't call method on "+e);return e},oe=re,ae=ce,le=function(e){return oe(ae(e))},ue=function(e){return"function"==typeof e},de=ue,se=function(e){return"object"==c(e)?null!==e:de(e)},me=R,Ze=ue,he=function(e){return Ze(e)?e:void 0},be=function(e,t){return arguments.length<2?he(me[e]):me[e]&&me[e][t]},pe=P({}.isPrototypeOf),Ie=be("navigator","userAgent")||"",ge=R,ye=Ie,Xe=ge.process,Ge=ge.Deno,fe=Xe&&Xe.versions||Ge&&Ge.version,Ve=fe&&fe.v8;Ve&&(F=(w=Ve.split("."))[0]>0&&w[0]<4?1:+(w[0]+w[1])),!F&&ye&&(!(w=ye.match(/Edge\/(\d+)/))||w[1]>=74)&&(w=ye.match(/Chrome\/(\d+)/))&&(F=+w[1]);var We=F,Ce=We,ve=Y,Re=!!Object.getOwnPropertySymbols&&!ve((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Ce&&Ce<41})),Se=Re&&!Symbol.sham&&"symbol"==c(Symbol.iterator),Ye=be,Je=ue,Ke=pe,Le=Se,Ne=R.Object,He=Le?function(e){return"symbol"==c(e)}:function(e){var t=Ye("Symbol");return Je(t)&&Ke(t.prototype,Ne(e))},xe=R.String,ke=function(e){try{return xe(e)}catch(e){return"Object"}},Ue=ue,Ae=ke,we=R.TypeError,Fe=function(e){if(Ue(e))return e;throw we(Ae(e)+" is not a function")},Te=Fe,Be=function(e,t){var n=e[t];return null==n?void 0:Te(n)},ze=H,je=ue,Me=se,Qe=R.TypeError,Pe=function(e,t){var n,r;if("string"===t&&je(n=e.toString)&&!Me(r=ze(n,e)))return r;if(je(n=e.valueOf)&&!Me(r=ze(n,e)))return r;if("string"!==t&&je(n=e.toString)&&!Me(r=ze(n,e)))return r;throw Qe("Can't convert object to primitive value")},Ee={exports:{}},Oe=R,De=Object.defineProperty,_e=function(e,t){try{De(Oe,e,{value:t,configurable:!0,writable:!0})}catch(n){Oe[e]=t}return t},qe=_e,$e=R["__core-js_shared__"]||qe("__core-js_shared__",{}),et=$e;(Ee.exports=function(e,t){return et[e]||(et[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.2",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.2/LICENSE",source:"https://github.com/zloirock/core-js"});var tt=ce,nt=R.Object,rt=function(e){return nt(tt(e))},it=rt,ct=P({}.hasOwnProperty),ot=Object.hasOwn||function(e,t){return ct(it(e),t)},at=P,lt=0,ut=Math.random(),dt=at(1..toString),st=function(e){return"Symbol("+(void 0===e?"":e)+")_"+dt(++lt+ut,36)},mt=R,Zt=Ee.exports,ht=ot,bt=st,pt=Re,It=Se,gt=Zt("wks"),yt=mt.Symbol,Xt=yt&&yt.for,Gt=It?yt:yt&&yt.withoutSetter||bt,ft=function(e){if(!ht(gt,e)||!pt&&"string"!=typeof gt[e]){var t="Symbol."+e;pt&&ht(yt,e)?gt[e]=yt[e]:gt[e]=It&&Xt?Xt(t):Gt(t)}return gt[e]},Vt=H,Wt=se,Ct=He,vt=Be,Rt=Pe,St=ft,Yt=R.TypeError,Jt=St("toPrimitive"),Kt=function(e,t){if(!Wt(e)||Ct(e))return e;var n,r=vt(e,Jt);if(r){if(void 0===t&&(t="default"),n=Vt(r,e,t),!Wt(n)||Ct(n))return n;throw Yt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Rt(e,t)},Lt=Kt,Nt=He,Ht=function(e){var t=Lt(e,"string");return Nt(t)?t:t+""},xt=se,kt=R.document,Ut=xt(kt)&&xt(kt.createElement),At=function(e){return Ut?kt.createElement(e):{}},wt=At,Ft=!J&&!Y((function(){return 7!=Object.defineProperty(wt("div"),"a",{get:function(){return 7}}).a})),Tt=J,Bt=H,zt=x,jt=T,Mt=le,Qt=Ht,Pt=ot,Et=Ft,Ot=Object.getOwnPropertyDescriptor;S.f=Tt?Ot:function(e,t){if(e=Mt(e),t=Qt(t),Et)try{return Ot(e,t)}catch(e){}if(Pt(e,t))return jt(!Bt(zt.f,e,t),e[t])};var Dt={},_t=J&&Y((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),qt=R,$t=se,en=qt.String,tn=qt.TypeError,nn=function(e){if($t(e))return e;throw tn(en(e)+" is not an object")},rn=J,cn=Ft,on=_t,an=nn,ln=Ht,un=R.TypeError,dn=Object.defineProperty,sn=Object.getOwnPropertyDescriptor;Dt.f=rn?on?function(e,t,n){if(an(e),t=ln(t),an(n),"function"==typeof e&&"prototype"===t&&"value"in n&&"writable"in n&&!n.writable){var r=sn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return dn(e,t,n)}:dn:function(e,t,n){if(an(e),t=ln(t),an(n),cn)try{return dn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw un("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var mn=Dt,Zn=T,hn=J?function(e,t,n){return mn.f(e,t,Zn(1,n))}:function(e,t,n){return e[t]=n,e},bn={exports:{}},pn=ue,In=$e,gn=P(Function.toString);pn(In.inspectSource)||(In.inspectSource=function(e){return gn(e)});var yn,Xn,Gn,fn=In.inspectSource,Vn=ue,Wn=fn,Cn=R.WeakMap,vn=Vn(Cn)&&/native code/.test(Wn(Cn)),Rn=Ee.exports,Sn=st,Yn=Rn("keys"),Jn=function(e){return Yn[e]||(Yn[e]=Sn(e))},Kn={},Ln=vn,Nn=R,Hn=P,xn=se,kn=hn,Un=ot,An=$e,wn=Jn,Fn=Kn,Tn=Nn.TypeError,Bn=Nn.WeakMap;if(Ln||An.state){var zn=An.state||(An.state=new Bn),jn=Hn(zn.get),Mn=Hn(zn.has),Qn=Hn(zn.set);yn=function(e,t){if(Mn(zn,e))throw new Tn("Object already initialized");return t.facade=e,Qn(zn,e,t),t},Xn=function(e){return jn(zn,e)||{}},Gn=function(e){return Mn(zn,e)}}else{var Pn=wn("state");Fn[Pn]=!0,yn=function(e,t){if(Un(e,Pn))throw new Tn("Object already initialized");return t.facade=e,kn(e,Pn,t),t},Xn=function(e){return Un(e,Pn)?e[Pn]:{}},Gn=function(e){return Un(e,Pn)}}var En={set:yn,get:Xn,has:Gn,enforce:function(e){return Gn(e)?Xn(e):yn(e,{})},getterFor:function(e){return function(t){var n;if(!xn(t)||(n=Xn(t)).type!==e)throw Tn("Incompatible receiver, "+e+" required");return n}}},On=J,Dn=ot,_n=Function.prototype,qn=On&&Object.getOwnPropertyDescriptor,$n=Dn(_n,"name"),er={EXISTS:$n,PROPER:$n&&"something"===function(){}.name,CONFIGURABLE:$n&&(!On||On&&qn(_n,"name").configurable)},tr=R,nr=ue,rr=ot,ir=hn,cr=_e,or=fn,ar=er.CONFIGURABLE,lr=En.get,ur=En.enforce,dr=String(String).split("String");(bn.exports=function(e,t,n,r){var i,c=!!r&&!!r.unsafe,o=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet,l=r&&void 0!==r.name?r.name:t;nr(n)&&("Symbol("===String(l).slice(0,7)&&(l="["+String(l).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!rr(n,"name")||ar&&n.name!==l)&&ir(n,"name",l),(i=ur(n)).source||(i.source=dr.join("string"==typeof l?l:""))),e!==tr?(c?!a&&e[t]&&(o=!0):delete e[t],o?e[t]=n:ir(e,t,n)):o?e[t]=n:cr(t,n)})(Function.prototype,"toString",(function(){return nr(this)&&lr(this).source||or(this)}));var sr={},mr=Math.ceil,Zr=Math.floor,hr=function(e){var t=+e;return t!=t||0===t?0:(t>0?Zr:mr)(t)},br=hr,pr=Math.max,Ir=Math.min,gr=function(e,t){var n=br(e);return n<0?pr(n+t,0):Ir(n,t)},yr=hr,Xr=Math.min,Gr=function(e){return e>0?Xr(yr(e),9007199254740991):0},fr=Gr,Vr=function(e){return fr(e.length)},Wr=le,Cr=gr,vr=Vr,Rr=function(e){return function(t,n,r){var i,c=Wr(t),o=vr(c),a=Cr(r,o);if(e&&n!=n){for(;o>a;)if((i=c[a++])!=i)return!0}else for(;o>a;a++)if((e||a in c)&&c[a]===n)return e||a||0;return!e&&-1}},Sr={includes:Rr(!0),indexOf:Rr(!1)},Yr=ot,Jr=le,Kr=Sr.indexOf,Lr=Kn,Nr=P([].push),Hr=function(e,t){var n,r=Jr(e),i=0,c=[];for(n in r)!Yr(Lr,n)&&Yr(r,n)&&Nr(c,n);for(;t.length>i;)Yr(r,n=t[i++])&&(~Kr(c,n)||Nr(c,n));return c},xr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],kr=Hr,Ur=xr.concat("length","prototype");sr.f=Object.getOwnPropertyNames||function(e){return kr(e,Ur)};var Ar={};Ar.f=Object.getOwnPropertySymbols;var wr=be,Fr=sr,Tr=Ar,Br=nn,zr=P([].concat),jr=wr("Reflect","ownKeys")||function(e){var t=Fr.f(Br(e)),n=Tr.f;return n?zr(t,n(e)):t},Mr=ot,Qr=jr,Pr=S,Er=Dt,Or=function(e,t,n){for(var r=Qr(t),i=Er.f,c=Pr.f,o=0;o<r.length;o++){var a=r[o];Mr(e,a)||n&&Mr(n,a)||i(e,a,c(t,a))}},Dr=Y,_r=ue,qr=/#|\.prototype\./,$r=function(e,t){var n=ti[ei(e)];return n==ri||n!=ni&&(_r(t)?Dr(t):!!t)},ei=$r.normalize=function(e){return String(e).replace(qr,".").toLowerCase()},ti=$r.data={},ni=$r.NATIVE="N",ri=$r.POLYFILL="P",ii=$r,ci=R,oi=S.f,ai=hn,li=bn.exports,ui=_e,di=Or,si=ii,mi=function(e,t){var n,r,i,o,a,l=e.target,u=e.global,d=e.stat;if(n=u?ci:d?ci[l]||ui(l,{}):(ci[l]||{}).prototype)for(r in t){if(o=t[r],i=e.noTargetGet?(a=oi(n,r))&&a.value:n[r],!si(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(c(o)==c(i))continue;di(o,i)}(e.sham||i&&i.sham)&&ai(o,"sham",!0),li(n,r,o,e)}},Zi={};Zi[ft("toStringTag")]="z";var hi="[object z]"===String(Zi),bi=R,pi=hi,Ii=ue,gi=_,yi=ft("toStringTag"),Xi=bi.Object,Gi="Arguments"==gi(function(){return arguments}()),fi=pi?gi:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Xi(e),yi))?n:Gi?gi(t):"Object"==(r=gi(t))&&Ii(t.callee)?"Arguments":r},Vi=fi,Wi=R.String,Ci=function(e){if("Symbol"===Vi(e))throw TypeError("Cannot convert a Symbol value to a string");return Wi(e)},vi={},Ri=Hr,Si=xr,Yi=Object.keys||function(e){return Ri(e,Si)},Ji=J,Ki=_t,Li=Dt,Ni=nn,Hi=le,xi=Yi;vi.f=Ji&&!Ki?Object.defineProperties:function(e,t){Ni(e);for(var n,r=Hi(t),i=xi(t),c=i.length,o=0;c>o;)Li.f(e,n=i[o++],r[n]);return e};var ki,Ui=be("document","documentElement"),Ai=nn,wi=vi,Fi=xr,Ti=Kn,Bi=Ui,zi=At,ji=Jn("IE_PROTO"),Mi=function(){},Qi=function(e){return"<script>"+e+"<\/script>"},Pi=function(e){e.write(Qi("")),e.close();var t=e.parentWindow.Object;return e=null,t},Ei=function(){try{ki=new ActiveXObject("htmlfile")}catch(e){}var e,t;Ei="undefined"!=typeof document?document.domain&&ki?Pi(ki):((t=zi("iframe")).style.display="none",Bi.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(Qi("document.F=Object")),e.close(),e.F):Pi(ki);for(var n=Fi.length;n--;)delete Ei.prototype[Fi[n]];return Ei()};Ti[ji]=!0;var Oi=Object.create||function(e,t){var n;return null!==e?(Mi.prototype=Ai(e),n=new Mi,Mi.prototype=null,n[ji]=e):n=Ei(),void 0===t?n:wi.f(n,t)},Di={},_i=Ht,qi=Dt,$i=T,ec=function(e,t,n){var r=_i(t);r in e?qi.f(e,r,$i(0,n)):e[r]=n},tc=gr,nc=Vr,rc=ec,ic=R.Array,cc=Math.max,oc=function(e,t,n){for(var r=nc(e),i=tc(t,r),c=tc(void 0===n?r:n,r),o=ic(cc(c-i,0)),a=0;i<c;i++,a++)rc(o,a,e[i]);return o.length=a,o},ac=_,lc=le,uc=sr.f,dc=oc,sc="object"==("undefined"==typeof window?"undefined":c(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];Di.f=function(e){return sc&&"Window"==ac(e)?function(e){try{return uc(e)}catch(e){return dc(sc)}}(e):uc(lc(e))};var mc={},Zc=ft;mc.f=Zc;var hc=R,bc=ot,pc=mc,Ic=Dt.f,gc=function(e){var t=hc.Symbol||(hc.Symbol={});bc(t,e)||Ic(t,e,{value:pc.f(e)})},yc=H,Xc=be,Gc=ft,fc=bn.exports,Vc=function(){var e=Xc("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=Gc("toPrimitive");t&&!t[r]&&fc(t,r,(function(e){return yc(n,this)}))},Wc=Dt.f,Cc=ot,vc=ft("toStringTag"),Rc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Cc(e,vc)&&Wc(e,vc,{configurable:!0,value:t})},Sc=Fe,Yc=K,Jc=P(P.bind),Kc=function(e,t){return Sc(e),void 0===t?e:Yc?Jc(e,t):function(){return e.apply(t,arguments)}},Lc=_,Nc=Array.isArray||function(e){return"Array"==Lc(e)},Hc=P,xc=Y,kc=ue,Uc=fi,Ac=fn,wc=function(){},Fc=[],Tc=be("Reflect","construct"),Bc=/^\s*(?:class|function)\b/,zc=Hc(Bc.exec),jc=!Bc.exec(wc),Mc=function(e){if(!kc(e))return!1;try{return Tc(wc,Fc,e),!0}catch(e){return!1}},Qc=function(e){if(!kc(e))return!1;switch(Uc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return jc||!!zc(Bc,Ac(e))}catch(e){return!0}};Qc.sham=!0;var Pc=!Tc||xc((function(){var e;return Mc(Mc.call)||!Mc(Object)||!Mc((function(){e=!0}))||e}))?Qc:Mc,Ec=R,Oc=Nc,Dc=Pc,_c=se,qc=ft("species"),$c=Ec.Array,eo=function(e){var t;return Oc(e)&&(t=e.constructor,(Dc(t)&&(t===$c||Oc(t.prototype))||_c(t)&&null===(t=t[qc]))&&(t=void 0)),void 0===t?$c:t},to=function(e,t){return new(eo(e))(0===t?0:t)},no=Kc,ro=re,io=rt,co=Vr,oo=to,ao=P([].push),lo=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,o=7==e,a=5==e||c;return function(l,u,d,s){for(var m,Z,h=io(l),b=ro(h),p=no(u,d),I=co(b),g=0,y=s||oo,X=t?y(l,I):n||o?y(l,0):void 0;I>g;g++)if((a||g in b)&&(Z=p(m=b[g],g,h),e))if(t)X[g]=Z;else if(Z)switch(e){case 3:return!0;case 5:return m;case 6:return g;case 2:ao(X,m)}else switch(e){case 4:return!1;case 7:ao(X,m)}return c?-1:r||i?i:X}},uo={forEach:lo(0),map:lo(1),filter:lo(2),some:lo(3),every:lo(4),find:lo(5),findIndex:lo(6),filterReject:lo(7)},so=mi,mo=R,Zo=H,ho=P,bo=J,po=Re,Io=Y,go=ot,yo=pe,Xo=nn,Go=le,fo=Ht,Vo=Ci,Wo=T,Co=Oi,vo=Yi,Ro=sr,So=Di,Yo=Ar,Jo=S,Ko=Dt,Lo=vi,No=x,Ho=bn.exports,xo=Ee.exports,ko=Kn,Uo=st,Ao=ft,wo=mc,Fo=gc,To=Vc,Bo=Rc,zo=En,jo=uo.forEach,Mo=Jn("hidden"),Qo=zo.set,Po=zo.getterFor("Symbol"),Eo=Object.prototype,Oo=mo.Symbol,Do=Oo&&Oo.prototype,_o=mo.TypeError,qo=mo.QObject,$o=Jo.f,ea=Ko.f,ta=So.f,na=No.f,ra=ho([].push),ia=xo("symbols"),ca=xo("op-symbols"),oa=xo("wks"),aa=!qo||!qo.prototype||!qo.prototype.findChild,la=bo&&Io((function(){return 7!=Co(ea({},"a",{get:function(){return ea(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=$o(Eo,t);r&&delete Eo[t],ea(e,t,n),r&&e!==Eo&&ea(Eo,t,r)}:ea,ua=function(e,t){var n=ia[e]=Co(Do);return Qo(n,{type:"Symbol",tag:e,description:t}),bo||(n.description=t),n},da=function(e,t,n){e===Eo&&da(ca,t,n),Xo(e);var r=fo(t);return Xo(n),go(ia,r)?(n.enumerable?(go(e,Mo)&&e[Mo][r]&&(e[Mo][r]=!1),n=Co(n,{enumerable:Wo(0,!1)})):(go(e,Mo)||ea(e,Mo,Wo(1,{})),e[Mo][r]=!0),la(e,r,n)):ea(e,r,n)},sa=function(e,t){Xo(e);var n=Go(t),r=vo(n).concat(ba(n));return jo(r,(function(t){bo&&!Zo(ma,n,t)||da(e,t,n[t])})),e},ma=function(e){var t=fo(e),n=Zo(na,this,t);return!(this===Eo&&go(ia,t)&&!go(ca,t))&&(!(n||!go(this,t)||!go(ia,t)||go(this,Mo)&&this[Mo][t])||n)},Za=function(e,t){var n=Go(e),r=fo(t);if(n!==Eo||!go(ia,r)||go(ca,r)){var i=$o(n,r);return!i||!go(ia,r)||go(n,Mo)&&n[Mo][r]||(i.enumerable=!0),i}},ha=function(e){var t=ta(Go(e)),n=[];return jo(t,(function(e){go(ia,e)||go(ko,e)||ra(n,e)})),n},ba=function(e){var t=e===Eo,n=ta(t?ca:Go(e)),r=[];return jo(n,(function(e){!go(ia,e)||t&&!go(Eo,e)||ra(r,ia[e])})),r};po||(Ho(Do=(Oo=function(){if(yo(Do,this))throw _o("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Vo(arguments[0]):void 0,t=Uo(e),n=function e(n){this===Eo&&Zo(e,ca,n),go(this,Mo)&&go(this[Mo],t)&&(this[Mo][t]=!1),la(this,t,Wo(1,n))};return bo&&aa&&la(Eo,t,{configurable:!0,set:n}),ua(t,e)}).prototype,"toString",(function(){return Po(this).tag})),Ho(Oo,"withoutSetter",(function(e){return ua(Uo(e),e)})),No.f=ma,Ko.f=da,Lo.f=sa,Jo.f=Za,Ro.f=So.f=ha,Yo.f=ba,wo.f=function(e){return ua(Ao(e),e)},bo&&(ea(Do,"description",{configurable:!0,get:function(){return Po(this).description}}),Ho(Eo,"propertyIsEnumerable",ma,{unsafe:!0}))),so({global:!0,wrap:!0,forced:!po,sham:!po},{Symbol:Oo}),jo(vo(oa),(function(e){Fo(e)})),so({target:"Symbol",stat:!0,forced:!po},{useSetter:function(){aa=!0},useSimple:function(){aa=!1}}),so({target:"Object",stat:!0,forced:!po,sham:!bo},{create:function(e,t){return void 0===t?Co(e):sa(Co(e),t)},defineProperty:da,defineProperties:sa,getOwnPropertyDescriptor:Za}),so({target:"Object",stat:!0,forced:!po},{getOwnPropertyNames:ha}),To(),Bo(Oo,"Symbol"),ko[Mo]=!0;var pa=Re&&!!Symbol.for&&!!Symbol.keyFor,Ia=mi,ga=be,ya=ot,Xa=Ci,Ga=Ee.exports,fa=pa,Va=Ga("string-to-symbol-registry"),Wa=Ga("symbol-to-string-registry");Ia({target:"Symbol",stat:!0,forced:!fa},{for:function(e){var t=Xa(e);if(ya(Va,t))return Va[t];var n=ga("Symbol")(t);return Va[t]=n,Wa[n]=t,n}});var Ca=mi,va=ot,Ra=He,Sa=ke,Ya=pa,Ja=(0,Ee.exports)("symbol-to-string-registry");Ca({target:"Symbol",stat:!0,forced:!Ya},{keyFor:function(e){if(!Ra(e))throw TypeError(Sa(e)+" is not a symbol");if(va(Ja,e))return Ja[e]}});var Ka=K,La=Function.prototype,Na=La.apply,Ha=La.call,xa="object"==("undefined"==typeof Reflect?"undefined":c(Reflect))&&Reflect.apply||(Ka?Ha.bind(Na):function(){return Ha.apply(Na,arguments)}),ka=P([].slice),Ua=mi,Aa=be,wa=xa,Fa=H,Ta=P,Ba=Y,za=Nc,ja=ue,Ma=se,Qa=He,Pa=ka,Ea=Re,Oa=Aa("JSON","stringify"),Da=Ta(/./.exec),_a=Ta("".charAt),qa=Ta("".charCodeAt),$a=Ta("".replace),el=Ta(1..toString),tl=/[\uD800-\uDFFF]/g,nl=/^[\uD800-\uDBFF]$/,rl=/^[\uDC00-\uDFFF]$/,il=!Ea||Ba((function(){var e=Aa("Symbol")();return"[null]"!=Oa([e])||"{}"!=Oa({a:e})||"{}"!=Oa(Object(e))})),cl=Ba((function(){return'"\\udf06\\ud834"'!==Oa("\udf06\ud834")||'"\\udead"'!==Oa("\udead")})),ol=function(e,t){var n=Pa(arguments),r=t;if((Ma(t)||void 0!==e)&&!Qa(e))return za(t)||(t=function(e,t){if(ja(r)&&(t=Fa(r,this,e,t)),!Qa(t))return t}),n[1]=t,wa(Oa,null,n)},al=function(e,t,n){var r=_a(n,t-1),i=_a(n,t+1);return Da(nl,e)&&!Da(rl,i)||Da(rl,e)&&!Da(nl,r)?"\\u"+el(qa(e,0),16):e};Oa&&Ua({target:"JSON",stat:!0,forced:il||cl},{stringify:function(e,t,n){var r=Pa(arguments),i=wa(il?ol:Oa,null,r);return cl&&"string"==typeof i?$a(i,tl,al):i}});var ll=Ar,ul=rt;mi({target:"Object",stat:!0,forced:!Re||Y((function(){ll.f(1)}))},{getOwnPropertySymbols:function(e){var t=ll.f;return t?t(ul(e)):[]}});var dl=mi,sl=J,ml=R,Zl=P,hl=ot,bl=ue,pl=pe,Il=Ci,gl=Dt.f,yl=Or,Xl=ml.Symbol,Gl=Xl&&Xl.prototype;if(sl&&bl(Xl)&&(!("description"in Gl)||void 0!==Xl().description)){var fl={},Vl=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Il(arguments[0]),t=pl(Gl,this)?new Xl(e):void 0===e?Xl():Xl(e);return""===e&&(fl[t]=!0),t};yl(Vl,Xl),Vl.prototype=Gl,Gl.constructor=Vl;var Wl="Symbol(test)"==String(Xl("test")),Cl=Zl(Gl.toString),vl=Zl(Gl.valueOf),Rl=/^Symbol\((.*)\)[^)]+$/,Sl=Zl("".replace),Yl=Zl("".slice);gl(Gl,"description",{configurable:!0,get:function(){var e=vl(this),t=Cl(e);if(hl(fl,e))return"";var n=Wl?Yl(t,7,-1):Sl(t,Rl,"$1");return""===n?void 0:n}}),dl({global:!0,forced:!0},{Symbol:Vl})}gc("asyncIterator"),gc("hasInstance"),gc("isConcatSpreadable"),gc("iterator"),gc("match"),gc("matchAll"),gc("replace"),gc("search"),gc("species"),gc("split");var Jl=Vc;gc("toPrimitive"),Jl();var Kl=be,Ll=Rc;gc("toStringTag"),Ll(Kl("Symbol"),"Symbol"),gc("unscopables");var Nl=Y,Hl=We,xl=ft("species"),kl=function(e){return Hl>=51||!Nl((function(){var t=[];return(t.constructor={})[xl]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},Ul=mi,Al=R,wl=Y,Fl=Nc,Tl=se,Bl=rt,zl=Vr,jl=ec,Ml=to,Ql=kl,Pl=We,El=ft("isConcatSpreadable"),Ol=Al.TypeError,Dl=Pl>=51||!wl((function(){var e=[];return e[El]=!1,e.concat()[0]!==e})),_l=Ql("concat"),ql=function(e){if(!Tl(e))return!1;var t=e[El];return void 0!==t?!!t:Fl(e)};Ul({target:"Array",proto:!0,forced:!Dl||!_l},{concat:function(e){var t,n,r,i,c,o=Bl(this),a=Ml(o,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(ql(c=-1===t?o:arguments[t])){if(l+(i=zl(c))>9007199254740991)throw Ol("Maximum allowed index exceeded");for(n=0;n<i;n++,l++)n in c&&jl(a,l,c[n])}else{if(l>=9007199254740991)throw Ol("Maximum allowed index exceeded");jl(a,l++,c)}return a.length=l,a}});var $l=rt,eu=gr,tu=Vr,nu=Math.min,ru=[].copyWithin||function(e,t){var n=$l(this),r=tu(n),i=eu(e,r),c=eu(t,r),o=arguments.length>2?arguments[2]:void 0,a=nu((void 0===o?r:eu(o,r))-c,r-i),l=1;for(c<i&&i<c+a&&(l=-1,c+=a-1,i+=a-1);a-- >0;)c in n?n[i]=n[c]:delete n[i],i+=l,c+=l;return n},iu=Oi,cu=Dt,ou=ft("unscopables"),au=Array.prototype;null==au[ou]&&cu.f(au,ou,{configurable:!0,value:iu(null)});var lu=function(e){au[ou][e]=!0},uu=lu;mi({target:"Array",proto:!0},{copyWithin:ru}),uu("copyWithin");var du=rt,su=gr,mu=Vr,Zu=function(e){for(var t=du(this),n=mu(t),r=arguments.length,i=su(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,o=void 0===c?n:su(c,n);o>i;)t[i++]=e;return t},hu=lu;mi({target:"Array",proto:!0},{fill:Zu}),hu("fill");var bu=uo.filter;mi({target:"Array",proto:!0,forced:!kl("filter")},{filter:function(e){return bu(this,e,arguments.length>1?arguments[1]:void 0)}});var pu=mi,Iu=uo.find,gu=lu,yu=!0;"find"in[]&&Array(1).find((function(){yu=!1})),pu({target:"Array",proto:!0,forced:yu},{find:function(e){return Iu(this,e,arguments.length>1?arguments[1]:void 0)}}),gu("find");var Xu=mi,Gu=uo.findIndex,fu=lu,Vu=!0;"findIndex"in[]&&Array(1).findIndex((function(){Vu=!1})),Xu({target:"Array",proto:!0,forced:Vu},{findIndex:function(e){return Gu(this,e,arguments.length>1?arguments[1]:void 0)}}),fu("findIndex");var Wu=Nc,Cu=Vr,vu=Kc,Ru=R.TypeError,Su=function e(t,n,r,i,c,o,a,l){for(var u,d=c,s=0,m=!!a&&vu(a,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],o>0&&Wu(u))d=e(t,n,u,Cu(u),d,o-1)-1;else{if(d>=9007199254740991)throw Ru("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Yu=Su,Ju=rt,Ku=Vr,Lu=hr,Nu=to;mi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Ju(this),n=Ku(t),r=Nu(t,0);return r.length=Yu(r,t,t,n,0,void 0===e?1:Lu(e)),r}});var Hu=Su,xu=Fe,ku=rt,Uu=Vr,Au=to;mi({target:"Array",proto:!0},{flatMap:function(e){var t,n=ku(this),r=Uu(n);return xu(e),(t=Au(n,0)).length=Hu(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var wu=H,Fu=nn,Tu=Be,Bu=function(e,t,n){var r,i;Fu(e);try{if(!(r=Tu(e,"return"))){if("throw"===t)throw n;return n}r=wu(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return Fu(r),n},zu=nn,ju=Bu,Mu={},Qu=Mu,Pu=ft("iterator"),Eu=Array.prototype,Ou=function(e){return void 0!==e&&(Qu.Array===e||Eu[Pu]===e)},Du=fi,_u=Be,qu=Mu,$u=ft("iterator"),ed=function(e){if(null!=e)return _u(e,$u)||_u(e,"@@iterator")||qu[Du(e)]},td=H,nd=Fe,rd=nn,id=ke,cd=ed,od=R.TypeError,ad=function(e,t){var n=arguments.length<2?cd(e):t;if(nd(n))return rd(td(n,e));throw od(id(e)+" is not iterable")},ld=Kc,ud=H,dd=rt,sd=function(e,t,n,r){try{return r?t(zu(n)[0],n[1]):t(n)}catch(t){ju(e,"throw",t)}},md=Ou,Zd=Pc,hd=Vr,bd=ec,pd=ad,Id=ed,gd=R.Array,yd=function(e){var t=dd(e),n=Zd(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=ld(i,r>2?arguments[2]:void 0));var o,a,l,u,d,s,m=Id(t),Z=0;if(!m||this==gd&&md(m))for(o=hd(t),a=n?new this(o):gd(o);o>Z;Z++)s=c?i(t[Z],Z):t[Z],bd(a,Z,s);else for(d=(u=pd(t,m)).next,a=n?new this:[];!(l=ud(d,u)).done;Z++)s=c?sd(u,i,[l.value,Z],!0):l.value,bd(a,Z,s);return a.length=Z,a},Xd=ft("iterator"),Gd=!1;try{var fd=0,Vd={next:function(){return{done:!!fd++}},return:function(){Gd=!0}};Vd[Xd]=function(){return this},Array.from(Vd,(function(){throw 2}))}catch(e){}var Wd=function(e,t){if(!t&&!Gd)return!1;var n=!1;try{var r={};r[Xd]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Cd=yd;mi({target:"Array",stat:!0,forced:!Wd((function(e){Array.from(e)}))},{from:Cd});var vd=Sr.includes,Rd=lu;mi({target:"Array",proto:!0},{includes:function(e){return vd(this,e,arguments.length>1?arguments[1]:void 0)}}),Rd("includes");var Sd,Yd,Jd,Kd=!Y((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Ld=R,Nd=ot,Hd=ue,xd=rt,kd=Kd,Ud=Jn("IE_PROTO"),Ad=Ld.Object,wd=Ad.prototype,Fd=kd?Ad.getPrototypeOf:function(e){var t=xd(e);if(Nd(t,Ud))return t[Ud];var n=t.constructor;return Hd(n)&&t instanceof n?n.prototype:t instanceof Ad?wd:null},Td=Y,Bd=ue,zd=Fd,jd=bn.exports,Md=ft("iterator"),Qd=!1;[].keys&&("next"in(Jd=[].keys())?(Yd=zd(zd(Jd)))!==Object.prototype&&(Sd=Yd):Qd=!0);var Pd=null==Sd||Td((function(){var e={};return Sd[Md].call(e)!==e}));Pd&&(Sd={}),Bd(Sd[Md])||jd(Sd,Md,(function(){return this}));var Ed={IteratorPrototype:Sd,BUGGY_SAFARI_ITERATORS:Qd},Od=Ed.IteratorPrototype,Dd=Oi,_d=T,qd=Rc,$d=Mu,es=function(){return this},ts=function(e,t,n,r){var i=t+" Iterator";return e.prototype=Dd(Od,{next:_d(+!r,n)}),qd(e,i,!1),$d[i]=es,e},ns=R,rs=ue,is=ns.String,cs=ns.TypeError,os=function(e){if("object"==c(e)||rs(e))return e;throw cs("Can't set "+is(e)+" as a prototype")},as=P,ls=nn,us=os,ds=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=as(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return ls(n),us(r),t?e(n,r):n.__proto__=r,n}}():void 0),ss=mi,ms=H,Zs=er,hs=ue,bs=ts,ps=Fd,Is=ds,gs=Rc,ys=hn,Xs=bn.exports,Gs=Mu,fs=Zs.PROPER,Vs=Zs.CONFIGURABLE,Ws=Ed.IteratorPrototype,Cs=Ed.BUGGY_SAFARI_ITERATORS,vs=ft("iterator"),Rs=function(){return this},Ss=function(e,t,n,r,i,c,o){bs(n,t,r);var a,l,u,d=function(e){if(e===i&&b)return b;if(!Cs&&e in Z)return Z[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},s=t+" Iterator",m=!1,Z=e.prototype,h=Z[vs]||Z["@@iterator"]||i&&Z[i],b=!Cs&&h||d(i),p="Array"==t&&Z.entries||h;if(p&&(a=ps(p.call(new e)))!==Object.prototype&&a.next&&(ps(a)!==Ws&&(Is?Is(a,Ws):hs(a[vs])||Xs(a,vs,Rs)),gs(a,s,!0)),fs&&"values"==i&&h&&"values"!==h.name&&(Vs?ys(Z,"name","values"):(m=!0,b=function(){return ms(h,this)})),i)if(l={values:d("values"),keys:c?b:d("keys"),entries:d("entries")},o)for(u in l)(Cs||m||!(u in Z))&&Xs(Z,u,l[u]);else ss({target:t,proto:!0,forced:Cs||m},l);return Z[vs]!==b&&Xs(Z,vs,b,{name:i}),Gs[t]=b,l},Ys=le,Js=lu,Ks=Mu,Ls=En,Ns=Dt.f,Hs=Ss,xs=J,ks=Ls.set,Us=Ls.getterFor("Array Iterator"),As=Hs(Array,"Array",(function(e,t){ks(this,{type:"Array Iterator",target:Ys(e),index:0,kind:t})}),(function(){var e=Us(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),ws=Ks.Arguments=Ks.Array;if(Js("keys"),Js("values"),Js("entries"),xs&&"values"!==ws.name)try{Ns(ws,"name",{value:"values"})}catch(e){}var Fs=Y,Ts=function(e,t){var n=[][e];return!!n&&Fs((function(){n.call(null,t||function(){return 1},1)}))},Bs=mi,zs=re,js=le,Ms=Ts,Qs=P([].join),Ps=zs!=Object,Es=Ms("join",",");Bs({target:"Array",proto:!0,forced:Ps||!Es},{join:function(e){return Qs(js(this),void 0===e?",":e)}});var Os=uo.map;mi({target:"Array",proto:!0,forced:!kl("map")},{map:function(e){return Os(this,e,arguments.length>1?arguments[1]:void 0)}});var Ds=mi,_s=Y,qs=Pc,$s=ec,em=R.Array;Ds({target:"Array",stat:!0,forced:_s((function(){function e(){}return!(em.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(qs(this)?this:em)(t);t>e;)$s(n,e,arguments[e++]);return n.length=t,n}});var tm=mi,nm=R,rm=Nc,im=Pc,cm=se,om=gr,am=Vr,lm=le,um=ec,dm=ft,sm=ka,mm=kl("slice"),Zm=dm("species"),hm=nm.Array,bm=Math.max;tm({target:"Array",proto:!0,forced:!mm},{slice:function(e,t){var n,r,i,c=lm(this),o=am(c),a=om(e,o),l=om(void 0===t?o:t,o);if(rm(c)&&(n=c.constructor,(im(n)&&(n===hm||rm(n.prototype))||cm(n)&&null===(n=n[Zm]))&&(n=void 0),n===hm||void 0===n))return sm(c,a,l);for(r=new(void 0===n?hm:n)(bm(l-a,0)),i=0;a<l;a++,i++)a in c&&um(r,i,c[a]);return r.length=i,r}});var pm=oc,Im=Math.floor,gm=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},ym=function(e,t,n,r){for(var i=t.length,c=n.length,o=0,a=0;o<i||a<c;)e[o+a]=o<i&&a<c?r(t[o],n[a])<=0?t[o++]:n[a++]:o<i?t[o++]:n[a++];return e},Xm=function e(t,n){var r=t.length,i=Im(r/2);return r<8?gm(t,n):ym(t,e(pm(t,0,i),n),e(pm(t,i),n),n)},Gm=Ie.match(/firefox\/(\d+)/i),fm=!!Gm&&+Gm[1],Vm=/MSIE|Trident/.test(Ie),Wm=Ie.match(/AppleWebKit\/(\d+)\./),Cm=!!Wm&&+Wm[1],vm=mi,Rm=P,Sm=Fe,Ym=rt,Jm=Vr,Km=Ci,Lm=Y,Nm=Xm,Hm=Ts,xm=fm,km=Vm,Um=We,Am=Cm,wm=[],Fm=Rm(wm.sort),Tm=Rm(wm.push),Bm=Lm((function(){wm.sort(void 0)})),zm=Lm((function(){wm.sort(null)})),jm=Hm("sort"),Mm=!Lm((function(){if(Um)return Um<70;if(!(xm&&xm>3)){if(km)return!0;if(Am)return Am<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)wm.push({k:t+r,v:n})}for(wm.sort((function(e,t){return t.v-e.v})),r=0;r<wm.length;r++)t=wm[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));vm({target:"Array",proto:!0,forced:Bm||!zm||!jm||!Mm},{sort:function(e){void 0!==e&&Sm(e);var t=Ym(this);if(Mm)return void 0===e?Fm(t):Fm(t,e);var n,r,i=[],c=Jm(t);for(r=0;r<c;r++)r in t&&Tm(i,t[r]);for(Nm(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:Km(t)>Km(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var Qm=be,Pm=Dt,Em=J,Om=ft("species"),Dm=function(e){var t=Qm(e),n=Pm.f;Em&&t&&!t[Om]&&n(t,Om,{configurable:!0,get:function(){return this}})};Dm("Array");var _m=mi,qm=R,$m=gr,eZ=hr,tZ=Vr,nZ=rt,rZ=to,iZ=ec,cZ=kl("splice"),oZ=qm.TypeError,aZ=Math.max,lZ=Math.min;_m({target:"Array",proto:!0,forced:!cZ},{splice:function(e,t){var n,r,i,c,o,a,l=nZ(this),u=tZ(l),d=$m(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=lZ(aZ(eZ(t),0),u-d)),u+n-r>9007199254740991)throw oZ("Maximum allowed length exceeded");for(i=rZ(l,r),c=0;c<r;c++)(o=d+c)in l&&iZ(i,c,l[o]);if(i.length=r,n<r){for(c=d;c<u-r;c++)a=c+n,(o=c+r)in l?l[a]=l[o]:delete l[a];for(c=u;c>u-r+n;c--)delete l[c-1]}else if(n>r)for(c=u-r;c>d;c--)a=c+n-1,(o=c+r-1)in l?l[a]=l[o]:delete l[a];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-r+n,i}}),lu("flat"),lu("flatMap");var uZ="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,dZ=bn.exports,sZ=function(e,t,n){for(var r in t)dZ(e,r,t[r],n);return e},mZ=pe,ZZ=R.TypeError,hZ=function(e,t){if(mZ(t,e))return e;throw ZZ("Incorrect invocation")},bZ=hr,pZ=Gr,IZ=R.RangeError,gZ=function(e){if(void 0===e)return 0;var t=bZ(e),n=pZ(t);if(t!==n)throw IZ("Wrong length or index");return n},yZ=R.Array,XZ=Math.abs,GZ=Math.pow,fZ=Math.floor,VZ=Math.log,WZ=Math.LN2,CZ={pack:function(e,t,n){var r,i,c,o=yZ(n),a=8*n-t-1,l=(1<<a)-1,u=l>>1,d=23===t?GZ(2,-24)-GZ(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=XZ(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=fZ(VZ(e)/WZ),e*(c=GZ(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*GZ(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*GZ(2,t),r+=u):(i=e*GZ(2,u-1)*GZ(2,t),r=0));t>=8;)o[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,a+=t;a>0;)o[m++]=255&r,r/=256,a-=8;return o[--m]|=128*s,o},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,o=c>>1,a=i-7,l=r-1,u=e[l--],d=127&u;for(u>>=7;a>0;)d=256*d+e[l--],a-=8;for(n=d&(1<<-a)-1,d>>=-a,a+=t;a>0;)n=256*n+e[l--],a-=8;if(0===d)d=1-o;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=GZ(2,t),d-=o}return(u?-1:1)*n*GZ(2,d-t)}},vZ=R,RZ=P,SZ=J,YZ=uZ,JZ=er,KZ=hn,LZ=sZ,NZ=Y,HZ=hZ,xZ=hr,kZ=Gr,UZ=gZ,AZ=CZ,wZ=Fd,FZ=ds,TZ=sr.f,BZ=Dt.f,zZ=Zu,jZ=oc,MZ=Rc,QZ=JZ.PROPER,PZ=JZ.CONFIGURABLE,EZ=En.get,OZ=En.set,DZ=vZ.ArrayBuffer,_Z=DZ,qZ=_Z&&_Z.prototype,$Z=vZ.DataView,eh=$Z&&$Z.prototype,th=Object.prototype,nh=vZ.Array,rh=vZ.RangeError,ih=RZ(zZ),ch=RZ([].reverse),oh=AZ.pack,ah=AZ.unpack,lh=function(e){return[255&e]},uh=function(e){return[255&e,e>>8&255]},dh=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},sh=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},mh=function(e){return oh(e,23,4)},Zh=function(e){return oh(e,52,8)},hh=function(e,t){BZ(e.prototype,t,{get:function(){return EZ(this)[t]}})},bh=function(e,t,n,r){var i=UZ(n),c=EZ(e);if(i+t>c.byteLength)throw rh("Wrong index");var o=EZ(c.buffer).bytes,a=i+c.byteOffset,l=jZ(o,a,a+t);return r?l:ch(l)},ph=function(e,t,n,r,i,c){var o=UZ(n),a=EZ(e);if(o+t>a.byteLength)throw rh("Wrong index");for(var l=EZ(a.buffer).bytes,u=o+a.byteOffset,d=r(+i),s=0;s<t;s++)l[u+s]=d[c?s:t-s-1]};if(YZ){var Ih=QZ&&"ArrayBuffer"!==DZ.name;if(NZ((function(){DZ(1)}))&&NZ((function(){new DZ(-1)}))&&!NZ((function(){return new DZ,new DZ(1.5),new DZ(NaN),Ih&&!PZ})))Ih&&PZ&&KZ(DZ,"name","ArrayBuffer");else{(_Z=function(e){return HZ(this,qZ),new DZ(UZ(e))}).prototype=qZ;for(var gh,yh=TZ(DZ),Xh=0;yh.length>Xh;)(gh=yh[Xh++])in _Z||KZ(_Z,gh,DZ[gh]);qZ.constructor=_Z}FZ&&wZ(eh)!==th&&FZ(eh,th);var Gh=new $Z(new _Z(2)),fh=RZ(eh.setInt8);Gh.setInt8(0,2147483648),Gh.setInt8(1,2147483649),!Gh.getInt8(0)&&Gh.getInt8(1)||LZ(eh,{setInt8:function(e,t){fh(this,e,t<<24>>24)},setUint8:function(e,t){fh(this,e,t<<24>>24)}},{unsafe:!0})}else _Z=function(e){HZ(this,qZ);var t=UZ(e);OZ(this,{bytes:ih(nh(t),0),byteLength:t}),SZ||(this.byteLength=t)},qZ=_Z.prototype,$Z=function(e,t,n){HZ(this,eh),HZ(e,qZ);var r=EZ(e).byteLength,i=xZ(t);if(i<0||i>r)throw rh("Wrong offset");if(i+(n=void 0===n?r-i:kZ(n))>r)throw rh("Wrong length");OZ(this,{buffer:e,byteLength:n,byteOffset:i}),SZ||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},eh=$Z.prototype,SZ&&(hh(_Z,"byteLength"),hh($Z,"buffer"),hh($Z,"byteLength"),hh($Z,"byteOffset")),LZ(eh,{getInt8:function(e){return bh(this,1,e)[0]<<24>>24},getUint8:function(e){return bh(this,1,e)[0]},getInt16:function(e){var t=bh(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=bh(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return sh(bh(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return sh(bh(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return ah(bh(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return ah(bh(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){ph(this,1,e,lh,t)},setUint8:function(e,t){ph(this,1,e,lh,t)},setInt16:function(e,t){ph(this,2,e,uh,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){ph(this,2,e,uh,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){ph(this,4,e,dh,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){ph(this,4,e,dh,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){ph(this,4,e,mh,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){ph(this,8,e,Zh,t,arguments.length>2?arguments[2]:void 0)}});MZ(_Z,"ArrayBuffer"),MZ($Z,"DataView");var Vh={ArrayBuffer:_Z,DataView:$Z},Wh=Dm,Ch=Vh.ArrayBuffer;mi({global:!0,forced:R.ArrayBuffer!==Ch},{ArrayBuffer:Ch}),Wh("ArrayBuffer");var vh=nn,Rh=Pe,Sh=R.TypeError,Yh=ot,Jh=bn.exports,Kh=function(e){if(vh(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw Sh("Incorrect hint");return Rh(this,e)},Lh=ft("toPrimitive"),Nh=Date.prototype;Yh(Nh,Lh)||Jh(Nh,Lh,Kh);var Hh=ue,xh=se,kh=Dt,Uh=Fd,Ah=ft("hasInstance"),wh=Function.prototype;Ah in wh||kh.f(wh,Ah,{value:function(e){if(!Hh(this)||!xh(e))return!1;var t=this.prototype;if(!xh(t))return e instanceof this;for(;e=Uh(e);)if(t===e)return!0;return!1}});var Fh=J,Th=er.EXISTS,Bh=P,zh=Dt.f,jh=Function.prototype,Mh=Bh(jh.toString),Qh=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Ph=Bh(Qh.exec);Fh&&!Th&&zh(jh,"name",{configurable:!0,get:function(){try{return Ph(Qh,Mh(this))[1]}catch(e){return""}}}),mi({global:!0},{globalThis:R}),Rc(R.JSON,"JSON",!0);var Eh={exports:{}},Oh=Y((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Dh=Y,_h=se,qh=_,$h=Oh,eb=Object.isExtensible,tb=Dh((function(){eb(1)}))||$h?function(e){return!!_h(e)&&((!$h||"ArrayBuffer"!=qh(e))&&(!eb||eb(e)))}:eb,nb=!Y((function(){return Object.isExtensible(Object.preventExtensions({}))})),rb=mi,ib=P,cb=Kn,ob=se,ab=ot,lb=Dt.f,ub=sr,db=Di,sb=tb,mb=nb,Zb=!1,hb=st("meta"),bb=0,pb=function(e){lb(e,hb,{value:{objectID:"O"+bb++,weakData:{}}})},Ib=Eh.exports={enable:function(){Ib.enable=function(){},Zb=!0;var e=ub.f,t=ib([].splice),n={};n[hb]=1,e(n).length&&(ub.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===hb){t(r,i,1);break}return r},rb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:db.f}))},fastKey:function(e,t){if(!ob(e))return"symbol"==c(e)?e:("string"==typeof e?"S":"P")+e;if(!ab(e,hb)){if(!sb(e))return"F";if(!t)return"E";pb(e)}return e[hb].objectID},getWeakData:function(e,t){if(!ab(e,hb)){if(!sb(e))return!0;if(!t)return!1;pb(e)}return e[hb].weakData},onFreeze:function(e){return mb&&Zb&&sb(e)&&!ab(e,hb)&&pb(e),e}};cb[hb]=!0;var gb=Kc,yb=H,Xb=nn,Gb=ke,fb=Ou,Vb=Vr,Wb=pe,Cb=ad,vb=ed,Rb=Bu,Sb=R.TypeError,Yb=function(e,t){this.stopped=e,this.result=t},Jb=Yb.prototype,Kb=function(e,t,n){var r,i,o,a,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),Z=!(!n||!n.IS_ITERATOR),h=!(!n||!n.INTERRUPTED),b=gb(t,s),p=function(e){return r&&Rb(r,"normal",e),new Yb(!0,e)},I=function(e){return m?(Xb(e),h?b(e[0],e[1],p):b(e[0],e[1])):h?b(e,p):b(e)};if(Z)r=e;else{if(!(i=vb(e)))throw Sb(Gb(e)+" is not iterable");if(fb(i)){for(o=0,a=Vb(e);a>o;o++)if((l=I(e[o]))&&Wb(Jb,l))return l;return new Yb(!1)}r=Cb(e,i)}for(u=r.next;!(d=yb(u,r)).done;){try{l=I(d.value)}catch(e){Rb(r,"throw",e)}if("object"==c(l)&&l&&Wb(Jb,l))return l}return new Yb(!1)},Lb=ue,Nb=se,Hb=ds,xb=function(e,t,n){var r,i;return Hb&&Lb(r=t.constructor)&&r!==n&&Nb(i=r.prototype)&&i!==n.prototype&&Hb(e,i),e},kb=mi,Ub=R,Ab=P,wb=ii,Fb=bn.exports,Tb=Eh.exports,Bb=Kb,zb=hZ,jb=ue,Mb=se,Qb=Y,Pb=Wd,Eb=Rc,Ob=xb,Db=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",o=Ub[e],a=o&&o.prototype,l=o,u={},d=function(e){var t=Ab(a[e]);Fb(a,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!Mb(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!Mb(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!Mb(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(wb(e,!jb(o)||!(i||a.forEach&&!Qb((function(){(new o).entries().next()})))))l=n.getConstructor(t,e,r,c),Tb.enable();else if(wb(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,Z=Qb((function(){s.has(1)})),h=Pb((function(e){new o(e)})),b=!i&&Qb((function(){for(var e=new o,t=5;t--;)e[c](t,t);return!e.has(-0)}));h||((l=t((function(e,t){zb(e,a);var n=Ob(new o,e,l);return null!=t&&Bb(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=a,a.constructor=l),(Z||b)&&(d("delete"),d("has"),r&&d("get")),(b||m)&&d(c),i&&a.clear&&delete a.clear}return u[e]=l,kb({global:!0,forced:l!=o},u),Eb(l,e),i||n.setStrong(l,e,r),l},_b=Dt.f,qb=Oi,$b=sZ,ep=Kc,tp=hZ,np=Kb,rp=Ss,ip=Dm,cp=J,op=Eh.exports.fastKey,ap=En.set,lp=En.getterFor,up={getConstructor:function(e,t,n,r){var i=e((function(e,i){tp(e,c),ap(e,{type:t,index:qb(null),first:void 0,last:void 0,size:0}),cp||(e.size=0),null!=i&&np(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=lp(t),a=function(e,t,n){var r,i,c=o(e),a=l(e,t);return a?a.value=n:(c.last=a={index:i=op(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=a),r&&(r.next=a),cp?c.size++:e.size++,"F"!==i&&(c.index[i]=a)),e},l=function(e,t){var n,r=o(e),i=op(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return $b(c,{clear:function(){for(var e=o(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,cp?e.size=0:this.size=0},delete:function(e){var t=this,n=o(t),r=l(t,e);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),cp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=o(this),r=ep(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),$b(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return a(this,0===e?0:e,t)}}:{add:function(e){return a(this,e=0===e?0:e,e)}}),cp&&_b(c,"size",{get:function(){return o(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=lp(t),c=lp(r);rp(e,t,(function(e,t){ap(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),ip(t)}};Db("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),up);var dp=Math.log,sp=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:dp(1+e)},mp=mi,Zp=sp,hp=Math.acosh,bp=Math.log,pp=Math.sqrt,Ip=Math.LN2;mp({target:"Math",stat:!0,forced:!hp||710!=Math.floor(hp(Number.MAX_VALUE))||hp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?bp(e)+Ip:Zp(e-1+pp(e-1)*pp(e+1))}});var gp=mi,yp=Math.asinh,Xp=Math.log,Gp=Math.sqrt;gp({target:"Math",stat:!0,forced:!(yp&&1/yp(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Xp(t+Gp(t*t+1)):t}});var fp=mi,Vp=Math.atanh,Wp=Math.log;fp({target:"Math",stat:!0,forced:!(Vp&&1/Vp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:Wp((1+e)/(1-e))/2}});var Cp=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},vp=mi,Rp=Cp,Sp=Math.abs,Yp=Math.pow;vp({target:"Math",stat:!0},{cbrt:function(e){return Rp(e=+e)*Yp(Sp(e),1/3)}});var Jp=mi,Kp=Math.floor,Lp=Math.log,Np=Math.LOG2E;Jp({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-Kp(Lp(e+.5)*Np):32}});var Hp=Math.expm1,xp=Math.exp,kp=!Hp||Hp(10)>22025.465794806718||Hp(10)<22025.465794806718||-2e-17!=Hp(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:xp(e)-1}:Hp,Up=mi,Ap=kp,wp=Math.cosh,Fp=Math.abs,Tp=Math.E;Up({target:"Math",stat:!0,forced:!wp||wp(710)===1/0},{cosh:function(e){var t=Ap(Fp(e)-1)+1;return(t+1/(t*Tp*Tp))*(Tp/2)}});var Bp=kp;mi({target:"Math",stat:!0,forced:Bp!=Math.expm1},{expm1:Bp});var zp=Cp,jp=Math.abs,Mp=Math.pow,Qp=Mp(2,-52),Pp=Mp(2,-23),Ep=Mp(2,127)*(2-Pp),Op=Mp(2,-126),Dp=Math.fround||function(e){var t,n,r=jp(e),i=zp(e);return r<Op?i*function(e){return e+1/Qp-1/Qp}(r/Op/Pp)*Op*Pp:(n=(t=(1+Pp/Qp)*r)-(t-r))>Ep||n!=n?i*(1/0):i*n};mi({target:"Math",stat:!0},{fround:Dp});var _p=mi,qp=Math.hypot,$p=Math.abs,eI=Math.sqrt;_p({target:"Math",stat:!0,forced:!!qp&&qp(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,o=arguments.length,a=0;c<o;)a<(n=$p(arguments[c++]))?(i=i*(r=a/n)*r+1,a=n):i+=n>0?(r=n/a)*r:n;return a===1/0?1/0:a*eI(i)}});var tI=mi,nI=Y,rI=Math.imul;tI({target:"Math",stat:!0,forced:nI((function(){return-5!=rI(4294967295,5)||2!=rI.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,o=n&i;return 0|c*o+((n&r>>>16)*o+c*(n&i>>>16)<<16>>>0)}});var iI=Math.log,cI=Math.LOG10E;mi({target:"Math",stat:!0},{log10:Math.log10||function(e){return iI(e)*cI}}),mi({target:"Math",stat:!0},{log1p:sp});var oI=mi,aI=Math.log,lI=Math.LN2;oI({target:"Math",stat:!0},{log2:function(e){return aI(e)/lI}}),mi({target:"Math",stat:!0},{sign:Cp});var uI=mi,dI=Y,sI=kp,mI=Math.abs,ZI=Math.exp,hI=Math.E;uI({target:"Math",stat:!0,forced:dI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return mI(e=+e)<1?(sI(e)-sI(-e))/2:(ZI(e-1)-ZI(-e-1))*(hI/2)}});var bI=mi,pI=kp,II=Math.exp;bI({target:"Math",stat:!0},{tanh:function(e){var t=pI(e=+e),n=pI(-e);return t==1/0?1:n==1/0?-1:(t-n)/(II(e)+II(-e))}}),Rc(Math,"Math",!0);var gI=mi,yI=Math.ceil,XI=Math.floor;gI({target:"Math",stat:!0},{trunc:function(e){return(e>0?XI:yI)(e)}});var GI=P(1..valueOf),fI="\t\n\v\f\r \u2028\u2029\ufeff",VI=ce,WI=Ci,CI=P("".replace),vI="[\t\n\v\f\r \u2028\u2029\ufeff]",RI=RegExp("^"+vI+vI+"*"),SI=RegExp(vI+vI+"*$"),YI=function(e){return function(t){var n=WI(VI(t));return 1&e&&(n=CI(n,RI,"")),2&e&&(n=CI(n,SI,"")),n}},JI={start:YI(1),end:YI(2),trim:YI(3)},KI=J,LI=R,NI=P,HI=ii,xI=bn.exports,kI=ot,UI=xb,AI=pe,wI=He,FI=Kt,TI=Y,BI=sr.f,zI=S.f,jI=Dt.f,MI=GI,QI=JI.trim,PI=LI.Number,EI=PI.prototype,OI=LI.TypeError,DI=NI("".slice),_I=NI("".charCodeAt),qI=function(e){var t=FI(e,"number");return"bigint"==typeof t?t:$I(t)},$I=function(e){var t,n,r,i,c,o,a,l,u=FI(e,"number");if(wI(u))throw OI("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=QI(u),43===(t=_I(u,0))||45===t){if(88===(n=_I(u,2))||120===n)return NaN}else if(48===t){switch(_I(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(o=(c=DI(u,2)).length,a=0;a<o;a++)if((l=_I(c,a))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(HI("Number",!PI(" 0o1")||!PI("0b1")||PI("+0x1"))){for(var eg,tg=function(e){var t=arguments.length<1?0:PI(qI(e)),n=this;return AI(EI,n)&&TI((function(){MI(n)}))?UI(Object(t),n,tg):t},ng=KI?BI(PI):"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(","),rg=0;ng.length>rg;rg++)kI(PI,eg=ng[rg])&&!kI(tg,eg)&&jI(tg,eg,zI(PI,eg));tg.prototype=EI,EI.constructor=tg,xI(LI,"Number",tg)}mi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var ig=R.isFinite;mi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&ig(e)}});var cg=se,og=Math.floor,ag=Number.isInteger||function(e){return!cg(e)&&isFinite(e)&&og(e)===e};mi({target:"Number",stat:!0},{isInteger:ag}),mi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var lg=mi,ug=ag,dg=Math.abs;lg({target:"Number",stat:!0},{isSafeInteger:function(e){return ug(e)&&dg(e)<=9007199254740991}}),mi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),mi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var sg=R,mg=Y,Zg=Ci,hg=JI.trim,bg=P("".charAt),pg=sg.parseFloat,Ig=sg.Symbol,gg=Ig&&Ig.iterator,yg=1/pg("\t\n\v\f\r \u2028\u2029\ufeff-0")!=-1/0||gg&&!mg((function(){pg(Object(gg))}))?function(e){var t=hg(Zg(e)),n=pg(t);return 0===n&&"-"==bg(t,0)?-0:n}:pg;mi({target:"Number",stat:!0,forced:Number.parseFloat!=yg},{parseFloat:yg});var Xg=R,Gg=Y,fg=P,Vg=Ci,Wg=JI.trim,Cg=Xg.parseInt,vg=Xg.Symbol,Rg=vg&&vg.iterator,Sg=/^[+-]?0x/i,Yg=fg(Sg.exec),Jg=8!==Cg("\t\n\v\f\r \u2028\u2029\ufeff08")||22!==Cg("\t\n\v\f\r \u2028\u2029\ufeff0x16")||Rg&&!Gg((function(){Cg(Object(Rg))}))?function(e,t){var n=Wg(Vg(e));return Cg(n,t>>>0||(Yg(Sg,n)?16:10))}:Cg,Kg=Jg;mi({target:"Number",stat:!0,forced:Number.parseInt!=Kg},{parseInt:Kg});var Lg=hr,Ng=Ci,Hg=ce,xg=R.RangeError,kg=function(e){var t=Ng(Hg(this)),n="",r=Lg(e);if(r<0||r==1/0)throw xg("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},Ug=mi,Ag=R,wg=P,Fg=hr,Tg=GI,Bg=kg,zg=Y,jg=Ag.RangeError,Mg=Ag.String,Qg=Math.floor,Pg=wg(Bg),Eg=wg("".slice),Og=wg(1..toFixed),Dg=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},_g=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=Qg(i/1e7)},qg=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=Qg(r/t),r=r%t*1e7},$g=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=Mg(e[t]);n=""===n?r:n+Pg("0",7-r.length)+r}return n};Ug({target:"Number",proto:!0,forced:zg((function(){return"0.000"!==Og(8e-5,3)||"1"!==Og(.9,0)||"1.25"!==Og(1.255,2)||"1000000000000000128"!==Og(0xde0b6b3a7640080,0)}))||!zg((function(){Og({})}))},{toFixed:function(e){var t,n,r,i,c=Tg(this),o=Fg(e),a=[0,0,0,0,0,0],l="",u="0";if(o<0||o>20)throw jg("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return Mg(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*Dg(2,69,1))-69,n=t<0?c*Dg(2,-t,1):c/Dg(2,t,1),n*=4503599627370496,(t=52-t)>0){for(_g(a,0,n),r=o;r>=7;)_g(a,1e7,0),r-=7;for(_g(a,Dg(10,r,1),0),r=t-1;r>=23;)qg(a,1<<23),r-=23;qg(a,1<<r),_g(a,1,1),qg(a,2),u=$g(a)}else _g(a,0,n),_g(a,1<<-t,0),u=$g(a)+Pg("0",o);return u=o>0?l+((i=u.length)<=o?"0."+Pg("0",o-i)+u:Eg(u,0,i-o)+"."+Eg(u,i-o)):l+u}});var ey=J,ty=P,ny=H,ry=Y,iy=Yi,cy=Ar,oy=x,ay=rt,ly=re,uy=Object.assign,dy=Object.defineProperty,sy=ty([].concat),my=!uy||ry((function(){if(ey&&1!==uy({b:1},uy(dy({},"a",{enumerable:!0,get:function(){dy(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=uy({},e)[n]||iy(uy({},t)).join("")!=r}))?function(e,t){for(var n=ay(e),r=arguments.length,i=1,c=cy.f,o=oy.f;r>i;)for(var a,l=ly(arguments[i++]),u=c?sy(iy(l),c(l)):iy(l),d=u.length,s=0;d>s;)a=u[s++],ey&&!ny(o,l,a)||(n[a]=l[a]);return n}:uy,Zy=my;mi({target:"Object",stat:!0,forced:Object.assign!==Zy},{assign:Zy});var hy=R,by=Cm,py=!Y((function(){if(!(by&&by<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete hy[e]}})),Iy=Fe,gy=rt,yy=Dt;J&&mi({target:"Object",proto:!0,forced:py},{__defineGetter__:function(e,t){yy.f(gy(this),e,{get:Iy(t),enumerable:!0,configurable:!0})}});var Xy=Fe,Gy=rt,fy=Dt;J&&mi({target:"Object",proto:!0,forced:py},{__defineSetter__:function(e,t){fy.f(Gy(this),e,{set:Xy(t),enumerable:!0,configurable:!0})}});var Vy=J,Wy=P,Cy=Yi,vy=le,Ry=Wy(x.f),Sy=Wy([].push),Yy=function(e){return function(t){for(var n,r=vy(t),i=Cy(r),c=i.length,o=0,a=[];c>o;)n=i[o++],Vy&&!Ry(r,n)||Sy(a,e?[n,r[n]]:r[n]);return a}},Jy={entries:Yy(!0),values:Yy(!1)},Ky=Jy.entries;mi({target:"Object",stat:!0},{entries:function(e){return Ky(e)}});var Ly=mi,Ny=nb,Hy=Y,xy=se,ky=Eh.exports.onFreeze,Uy=Object.freeze;Ly({target:"Object",stat:!0,forced:Hy((function(){Uy(1)})),sham:!Ny},{freeze:function(e){return Uy&&xy(e)?Uy(ky(e)):e}});var Ay=Kb,wy=ec;mi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Ay(e,(function(e,n){wy(t,e,n)}),{AS_ENTRIES:!0}),t}});var Fy=mi,Ty=Y,By=le,zy=S.f,jy=J,My=Ty((function(){zy(1)}));Fy({target:"Object",stat:!0,forced:!jy||My,sham:!jy},{getOwnPropertyDescriptor:function(e,t){return zy(By(e),t)}});var Qy=jr,Py=le,Ey=S,Oy=ec;mi({target:"Object",stat:!0,sham:!J},{getOwnPropertyDescriptors:function(e){for(var t,n,r=Py(e),i=Ey.f,c=Qy(r),o={},a=0;c.length>a;)void 0!==(n=i(r,t=c[a++]))&&Oy(o,t,n);return o}});var Dy=mi,_y=Y,qy=Di.f;Dy({target:"Object",stat:!0,forced:_y((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:qy});var $y=rt,eX=Fd,tX=Kd;mi({target:"Object",stat:!0,forced:Y((function(){eX(1)})),sham:!tX},{getPrototypeOf:function(e){return eX($y(e))}});var nX=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};mi({target:"Object",stat:!0},{is:nX});var rX=tb;mi({target:"Object",stat:!0,forced:Object.isExtensible!==rX},{isExtensible:rX});var iX=mi,cX=Y,oX=se,aX=_,lX=Oh,uX=Object.isFrozen;iX({target:"Object",stat:!0,forced:cX((function(){uX(1)}))||lX},{isFrozen:function(e){return!oX(e)||(!(!lX||"ArrayBuffer"!=aX(e))||!!uX&&uX(e))}});var dX=mi,sX=Y,mX=se,ZX=_,hX=Oh,bX=Object.isSealed;dX({target:"Object",stat:!0,forced:sX((function(){bX(1)}))||hX},{isSealed:function(e){return!mX(e)||(!(!hX||"ArrayBuffer"!=ZX(e))||!!bX&&bX(e))}});var pX=rt,IX=Yi;mi({target:"Object",stat:!0,forced:Y((function(){IX(1)}))},{keys:function(e){return IX(pX(e))}});var gX=mi,yX=J,XX=py,GX=rt,fX=Ht,VX=Fd,WX=S.f;yX&&gX({target:"Object",proto:!0,forced:XX},{__lookupGetter__:function(e){var t,n=GX(this),r=fX(e);do{if(t=WX(n,r))return t.get}while(n=VX(n))}});var CX=mi,vX=J,RX=py,SX=rt,YX=Ht,JX=Fd,KX=S.f;vX&&CX({target:"Object",proto:!0,forced:RX},{__lookupSetter__:function(e){var t,n=SX(this),r=YX(e);do{if(t=KX(n,r))return t.set}while(n=JX(n))}});var LX=mi,NX=se,HX=Eh.exports.onFreeze,xX=nb,kX=Y,UX=Object.preventExtensions;LX({target:"Object",stat:!0,forced:kX((function(){UX(1)})),sham:!xX},{preventExtensions:function(e){return UX&&NX(e)?UX(HX(e)):e}});var AX=mi,wX=se,FX=Eh.exports.onFreeze,TX=nb,BX=Y,zX=Object.seal;AX({target:"Object",stat:!0,forced:BX((function(){zX(1)})),sham:!TX},{seal:function(e){return zX&&wX(e)?zX(FX(e)):e}});var jX=fi,MX=hi?{}.toString:function(){return"[object "+jX(this)+"]"},QX=hi,PX=bn.exports,EX=MX;QX||PX(Object.prototype,"toString",EX,{unsafe:!0});var OX=Jy.values;mi({target:"Object",stat:!0},{values:function(e){return OX(e)}});var DX,_X,qX,$X,eG="process"==_(R.process),tG=Pc,nG=ke,rG=R.TypeError,iG=function(e){if(tG(e))return e;throw rG(nG(e)+" is not a constructor")},cG=nn,oG=iG,aG=ft("species"),lG=function(e,t){var n,r=cG(e).constructor;return void 0===r||null==(n=cG(r)[aG])?t:oG(n)},uG=R.TypeError,dG=function(e,t){if(e<t)throw uG("Not enough arguments");return e},sG=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ie),mG=R,ZG=xa,hG=Kc,bG=ue,pG=ot,IG=Y,gG=Ui,yG=ka,XG=At,GG=dG,fG=sG,VG=eG,WG=mG.setImmediate,CG=mG.clearImmediate,vG=mG.process,RG=mG.Dispatch,SG=mG.Function,YG=mG.MessageChannel,JG=mG.String,KG=0,LG={};try{DX=mG.location}catch(e){}var NG=function(e){if(pG(LG,e)){var t=LG[e];delete LG[e],t()}},HG=function(e){return function(){NG(e)}},xG=function(e){NG(e.data)},kG=function(e){mG.postMessage(JG(e),DX.protocol+"//"+DX.host)};WG&&CG||(WG=function(e){GG(arguments.length,1);var t=bG(e)?e:SG(e),n=yG(arguments,1);return LG[++KG]=function(){ZG(t,void 0,n)},_X(KG),KG},CG=function(e){delete LG[e]},VG?_X=function(e){vG.nextTick(HG(e))}:RG&&RG.now?_X=function(e){RG.now(HG(e))}:YG&&!fG?($X=(qX=new YG).port2,qX.port1.onmessage=xG,_X=hG($X.postMessage,$X)):mG.addEventListener&&bG(mG.postMessage)&&!mG.importScripts&&DX&&"file:"!==DX.protocol&&!IG(kG)?(_X=kG,mG.addEventListener("message",xG,!1)):_X="onreadystatechange"in XG("script")?function(e){gG.appendChild(XG("script")).onreadystatechange=function(){gG.removeChild(this),NG(e)}}:function(e){setTimeout(HG(e),0)});var UG,AG,wG,FG,TG,BG,zG,jG,MG={set:WG,clear:CG},QG=R,PG=/ipad|iphone|ipod/i.test(Ie)&&void 0!==QG.Pebble,EG=/web0s(?!.*chrome)/i.test(Ie),OG=R,DG=Kc,_G=S.f,qG=MG.set,$G=sG,ef=PG,tf=EG,nf=eG,rf=OG.MutationObserver||OG.WebKitMutationObserver,cf=OG.document,of=OG.process,af=OG.Promise,lf=_G(OG,"queueMicrotask"),uf=lf&&lf.value;uf||(UG=function(){var e,t;for(nf&&(e=of.domain)&&e.exit();AG;){t=AG.fn,AG=AG.next;try{t()}catch(e){throw AG?FG():wG=void 0,e}}wG=void 0,e&&e.enter()},$G||nf||tf||!rf||!cf?!ef&&af&&af.resolve?((zG=af.resolve(void 0)).constructor=af,jG=DG(zG.then,zG),FG=function(){jG(UG)}):nf?FG=function(){of.nextTick(UG)}:(qG=DG(qG,OG),FG=function(){qG(UG)}):(TG=!0,BG=cf.createTextNode(""),new rf(UG).observe(BG,{characterData:!0}),FG=function(){BG.data=TG=!TG}));var df=uf||function(e){var t={fn:e,next:void 0};wG&&(wG.next=t),AG||(AG=t,FG()),wG=t},sf=R,mf=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},Zf=function(){this.head=null,this.tail=null};Zf.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var hf=Zf,bf=R.Promise,pf="object"==("undefined"==typeof window?"undefined":c(window))&&"object"!=("undefined"==typeof Deno?"undefined":c(Deno)),If=R,gf=bf,yf=ue,Xf=ii,Gf=fn,ff=ft,Vf=pf,Wf=We;gf&&gf.prototype;var Cf=ff("species"),vf=!1,Rf=yf(If.PromiseRejectionEvent),Sf=Xf("Promise",(function(){var e=Gf(gf),t=e!==String(gf);if(!t&&66===Wf)return!0;if(Wf>=51&&/native code/.test(e))return!1;var n=new gf((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[Cf]=r,!(vf=n.then((function(){}))instanceof r)||!t&&Vf&&!Rf})),Yf={CONSTRUCTOR:Sf,REJECTION_EVENT:Rf,SUBCLASSING:vf},Jf={},Kf=Fe,Lf=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=Kf(t),this.reject=Kf(n)};Jf.f=function(e){return new Lf(e)};var Nf,Hf,xf,kf=mi,Uf=eG,Af=R,wf=H,Ff=bn.exports,Tf=sZ,Bf=ds,zf=Rc,jf=Dm,Mf=Fe,Qf=ue,Pf=se,Ef=hZ,Of=lG,Df=MG.set,_f=df,qf=function(e,t){var n=sf.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},$f=mf,eV=hf,tV=En,nV=bf,rV=Jf,iV=Yf.CONSTRUCTOR,cV=Yf.REJECTION_EVENT,oV=Yf.SUBCLASSING,aV=tV.getterFor("Promise"),lV=tV.set,uV=nV&&nV.prototype,dV=nV,sV=uV,mV=Af.TypeError,ZV=Af.document,hV=Af.process,bV=rV.f,pV=bV,IV=!!(ZV&&ZV.createEvent&&Af.dispatchEvent),gV=function(e){var t;return!(!Pf(e)||!Qf(t=e.then))&&t},yV=function(e,t){var n,r,i,c=t.value,o=1==t.state,a=o?e.ok:e.fail,l=e.resolve,u=e.reject,d=e.domain;try{a?(o||(2===t.rejection&&WV(t),t.rejection=1),!0===a?n=c:(d&&d.enter(),n=a(c),d&&(d.exit(),i=!0)),n===e.promise?u(mV("Promise-chain cycle")):(r=gV(n))?wf(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},XV=function(e,t){e.notified||(e.notified=!0,_f((function(){for(var n,r=e.reactions;n=r.get();)yV(n,e);e.notified=!1,t&&!e.rejection&&fV(e)})))},GV=function(e,t,n){var r,i;IV?((r=ZV.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),Af.dispatchEvent(r)):r={promise:t,reason:n},!cV&&(i=Af["on"+e])?i(r):"unhandledrejection"===e&&qf("Unhandled promise rejection",n)},fV=function(e){wf(Df,Af,(function(){var t,n=e.facade,r=e.value;if(VV(e)&&(t=$f((function(){Uf?hV.emit("unhandledRejection",r,n):GV("unhandledrejection",n,r)})),e.rejection=Uf||VV(e)?2:1,t.error))throw t.value}))},VV=function(e){return 1!==e.rejection&&!e.parent},WV=function(e){wf(Df,Af,(function(){var t=e.facade;Uf?hV.emit("rejectionHandled",t):GV("rejectionhandled",t,e.value)}))},CV=function(e,t,n){return function(r){e(t,r,n)}},vV=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,XV(e,!0))},RV=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw mV("Promise can't be resolved itself");var i=gV(n);i?_f((function(){var r={done:!1};try{wf(i,n,CV(e,r,t),CV(vV,r,t))}catch(e){vV(r,e,t)}})):(t.value=n,t.state=1,XV(t,!1))}catch(e){vV({done:!1},e,t)}}};if(iV&&(sV=(dV=function(e){Ef(this,sV),Mf(e),wf(Nf,this);var t=aV(this);try{e(CV(RV,t),CV(vV,t))}catch(e){vV(t,e)}}).prototype,(Nf=function(e){lV(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new eV,rejection:!1,state:0,value:void 0})}).prototype=Tf(sV,{then:function(e,t){var n=aV(this),r=bV(Of(this,dV));return n.parent=!0,r.ok=!Qf(e)||e,r.fail=Qf(t)&&t,r.domain=Uf?hV.domain:void 0,0==n.state?n.reactions.add(r):_f((function(){yV(r,n)})),r.promise}}),Hf=function(){var e=new Nf,t=aV(e);this.promise=e,this.resolve=CV(RV,t),this.reject=CV(vV,t)},rV.f=bV=function(e){return e===dV||undefined===e?new Hf(e):pV(e)},Qf(nV)&&uV!==Object.prototype)){xf=uV.then,oV||Ff(uV,"then",(function(e,t){var n=this;return new dV((function(e,t){wf(xf,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete uV.constructor}catch(e){}Bf&&Bf(uV,sV)}kf({global:!0,wrap:!0,forced:iV},{Promise:dV}),zf(dV,"Promise",!1),jf("Promise");var SV=bf,YV=Yf.CONSTRUCTOR||!Wd((function(e){SV.all(e).then(void 0,(function(){}))})),JV=H,KV=Fe,LV=Jf,NV=mf,HV=Kb;mi({target:"Promise",stat:!0,forced:YV},{all:function(e){var t=this,n=LV.f(t),r=n.resolve,i=n.reject,c=NV((function(){var n=KV(t.resolve),c=[],o=0,a=1;HV(e,(function(e){var l=o++,u=!1;a++,JV(n,t,e).then((function(e){u||(u=!0,c[l]=e,--a||r(c))}),i)})),--a||r(c)}));return c.error&&i(c.value),n.promise}});var xV=mi,kV=Yf.CONSTRUCTOR,UV=bf,AV=be,wV=ue,FV=bn.exports,TV=UV&&UV.prototype;if(xV({target:"Promise",proto:!0,forced:kV,real:!0},{catch:function(e){return this.then(void 0,e)}}),wV(UV)){var BV=AV("Promise").prototype.catch;TV.catch!==BV&&FV(TV,"catch",BV,{unsafe:!0})}var zV=H,jV=Fe,MV=Jf,QV=mf,PV=Kb;mi({target:"Promise",stat:!0,forced:YV},{race:function(e){var t=this,n=MV.f(t),r=n.reject,i=QV((function(){var i=jV(t.resolve);PV(e,(function(e){zV(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var EV=H,OV=Jf;mi({target:"Promise",stat:!0,forced:Yf.CONSTRUCTOR},{reject:function(e){var t=OV.f(this);return EV(t.reject,void 0,e),t.promise}});var DV=nn,_V=se,qV=Jf,$V=function(e,t){if(DV(e),_V(t)&&t.constructor===e)return t;var n=qV.f(e);return(0,n.resolve)(t),n.promise},eW=mi,tW=Yf.CONSTRUCTOR,nW=$V;be("Promise"),eW({target:"Promise",stat:!0,forced:tW},{resolve:function(e){return nW(this,e)}});var rW=H,iW=Fe,cW=Jf,oW=mf,aW=Kb;mi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=cW.f(t),r=n.resolve,i=n.reject,c=oW((function(){var n=iW(t.resolve),i=[],c=0,o=1;aW(e,(function(e){var a=c++,l=!1;o++,rW(n,t,e).then((function(e){l||(l=!0,i[a]={status:"fulfilled",value:e},--o||r(i))}),(function(e){l||(l=!0,i[a]={status:"rejected",reason:e},--o||r(i))}))})),--o||r(i)}));return c.error&&i(c.value),n.promise}});var lW=mi,uW=bf,dW=Y,sW=be,mW=ue,ZW=lG,hW=$V,bW=bn.exports,pW=uW&&uW.prototype;if(lW({target:"Promise",proto:!0,real:!0,forced:!!uW&&dW((function(){pW.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=ZW(this,sW("Promise")),n=mW(e);return this.then(n?function(n){return hW(t,e()).then((function(){return n}))}:e,n?function(n){return hW(t,e()).then((function(){throw n}))}:e)}}),mW(uW)){var IW=sW("Promise").prototype.finally;pW.finally!==IW&&bW(pW,"finally",IW,{unsafe:!0})}var gW=xa,yW=Fe,XW=nn;mi({target:"Reflect",stat:!0,forced:!Y((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return gW(yW(e),t,XW(n))}});var GW=P,fW=Fe,VW=se,WW=ot,CW=ka,vW=K,RW=R.Function,SW=GW([].concat),YW=GW([].join),JW={},KW=function(e,t,n){if(!WW(JW,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";JW[t]=RW("C,a","return new C("+YW(r,",")+")")}return JW[t](e,n)},LW=vW?RW.bind:function(e){var t=fW(this),n=t.prototype,r=CW(arguments,1),i=function(){var n=SW(r,CW(arguments));return this instanceof i?KW(t,n.length,n):t.apply(e,n)};return VW(n)&&(i.prototype=n),i},NW=mi,HW=xa,xW=LW,kW=iG,UW=nn,AW=se,wW=Oi,FW=Y,TW=be("Reflect","construct"),BW=Object.prototype,zW=[].push,jW=FW((function(){function e(){}return!(TW((function(){}),[],e)instanceof e)})),MW=!FW((function(){TW((function(){}))})),QW=jW||MW;NW({target:"Reflect",stat:!0,forced:QW,sham:QW},{construct:function(e,t){kW(e),UW(t);var n=arguments.length<3?e:kW(arguments[2]);if(MW&&!jW)return TW(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return HW(zW,r,t),new(HW(xW,e,r))}var i=n.prototype,c=wW(AW(i)?i:BW),o=HW(e,c,t);return AW(o)?o:c}});var PW=J,EW=nn,OW=Ht,DW=Dt;mi({target:"Reflect",stat:!0,forced:Y((function(){Reflect.defineProperty(DW.f({},1,{value:1}),1,{value:2})})),sham:!PW},{defineProperty:function(e,t,n){EW(e);var r=OW(t);EW(n);try{return DW.f(e,r,n),!0}catch(e){return!1}}});var _W=mi,qW=nn,$W=S.f;_W({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=$W(qW(e),t);return!(n&&!n.configurable)&&delete e[t]}});var eC=ot,tC=function(e){return void 0!==e&&(eC(e,"value")||eC(e,"writable"))},nC=H,rC=se,iC=nn,cC=tC,oC=S,aC=Fd;mi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return iC(t)===c?t[n]:(r=oC.f(t,n))?cC(r)?r.value:void 0===r.get?void 0:nC(r.get,c):rC(i=aC(t))?e(i,n,c):void 0}});var lC=nn,uC=S;mi({target:"Reflect",stat:!0,sham:!J},{getOwnPropertyDescriptor:function(e,t){return uC.f(lC(e),t)}});var dC=nn,sC=Fd;mi({target:"Reflect",stat:!0,sham:!Kd},{getPrototypeOf:function(e){return sC(dC(e))}}),mi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var mC=nn,ZC=tb;mi({target:"Reflect",stat:!0},{isExtensible:function(e){return mC(e),ZC(e)}}),mi({target:"Reflect",stat:!0},{ownKeys:jr});var hC=be,bC=nn;mi({target:"Reflect",stat:!0,sham:!nb},{preventExtensions:function(e){bC(e);try{var t=hC("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var pC=mi,IC=H,gC=nn,yC=se,XC=tC,GC=Dt,fC=S,VC=Fd,WC=T;var CC=Y((function(){var e=function(){},t=GC.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));pC({target:"Reflect",stat:!0,forced:CC},{set:function e(t,n,r){var i,c,o,a=arguments.length<4?t:arguments[3],l=fC.f(gC(t),n);if(!l){if(yC(c=VC(t)))return e(c,n,r,a);l=WC(0)}if(XC(l)){if(!1===l.writable||!yC(a))return!1;if(i=fC.f(a,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,GC.f(a,n,i)}else GC.f(a,n,WC(0,r))}else{if(void 0===(o=l.set))return!1;IC(o,a,r)}return!0}});var vC=nn,RC=os,SC=ds;SC&&mi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){vC(e),RC(t);try{return SC(e,t),!0}catch(e){return!1}}});var YC=se,JC=_,KC=ft("match"),LC=function(e){var t;return YC(e)&&(void 0!==(t=e[KC])?!!t:"RegExp"==JC(e))},NC=nn,HC=function(){var e=NC(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},xC=H,kC=ot,UC=pe,AC=HC,wC=RegExp.prototype,FC=function(e){var t=e.flags;return void 0!==t||"flags"in wC||kC(e,"flags")||!UC(wC,e)?t:xC(AC,e)},TC=Y,BC=R.RegExp,zC=TC((function(){var e=BC("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),jC=zC||TC((function(){return!BC("a","y").sticky})),MC=zC||TC((function(){var e=BC("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),QC={BROKEN_CARET:MC,MISSED_STICKY:jC,UNSUPPORTED_Y:zC},PC=Dt.f,EC=Y,OC=R.RegExp,DC=EC((function(){var e=OC(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),_C=Y,qC=R.RegExp,$C=_C((function(){var e=qC("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),ev=J,tv=R,nv=P,rv=ii,iv=xb,cv=hn,ov=sr.f,av=pe,lv=LC,uv=Ci,dv=FC,sv=QC,mv=function(e,t,n){n in e||PC(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},Zv=bn.exports,hv=Y,bv=ot,pv=En.enforce,Iv=Dm,gv=DC,yv=$C,Xv=ft("match"),Gv=tv.RegExp,fv=Gv.prototype,Vv=tv.SyntaxError,Wv=nv(fv.exec),Cv=nv("".charAt),vv=nv("".replace),Rv=nv("".indexOf),Sv=nv("".slice),Yv=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Jv=/a/g,Kv=/a/g,Lv=new Gv(Jv)!==Jv,Nv=sv.MISSED_STICKY,Hv=sv.UNSUPPORTED_Y,xv=ev&&(!Lv||Nv||gv||yv||hv((function(){return Kv[Xv]=!1,Gv(Jv)!=Jv||Gv(Kv)==Kv||"/a/i"!=Gv(Jv,"i")})));if(rv("RegExp",xv)){for(var kv=function(e,t){var n,r,i,c,o,a,l=av(fv,this),u=lv(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===kv)return e;if((u||av(fv,e))&&(e=e.source,d&&(t=dv(m))),e=void 0===e?"":uv(e),t=void 0===t?"":uv(t),m=e,gv&&"dotAll"in Jv&&(r=!!t&&Rv(t,"s")>-1)&&(t=vv(t,/s/g,"")),n=t,Nv&&"sticky"in Jv&&(i=!!t&&Rv(t,"y")>-1)&&Hv&&(t=vv(t,/y/g,"")),yv&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],o={},a=!1,l=!1,u=0,d="";r<=n;r++){if("\\"===(t=Cv(e,r)))t+=Cv(e,++r);else if("]"===t)a=!1;else if(!a)switch(!0){case"["===t:a=!0;break;case"("===t:Wv(Yv,Sv(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||bv(o,d))throw new Vv("Invalid capture group name");o[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=t:i+=t}return[i,c]}(e),e=c[0],s=c[1]),o=iv(Gv(e,t),l?this:fv,kv),(r||i||s.length)&&(a=pv(o),r&&(a.dotAll=!0,a.raw=kv(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=Cv(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+Cv(e,++r);return i}(e),n)),i&&(a.sticky=!0),s.length&&(a.groups=s)),e!==m)try{cv(o,"source",""===m?"(?:)":m)}catch(e){}return o},Uv=ov(Gv),Av=0;Uv.length>Av;)mv(kv,Gv,Uv[Av++]);fv.constructor=kv,kv.prototype=fv,Zv(tv,"RegExp",kv)}Iv("RegExp");var wv=H,Fv=P,Tv=Ci,Bv=HC,zv=QC,jv=Ee.exports,Mv=Oi,Qv=En.get,Pv=DC,Ev=$C,Ov=jv("native-string-replace",String.prototype.replace),Dv=RegExp.prototype.exec,_v=Dv,qv=Fv("".charAt),$v=Fv("".indexOf),eR=Fv("".replace),tR=Fv("".slice),nR=function(){var e=/a/,t=/b*/g;return wv(Dv,e,"a"),wv(Dv,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),rR=zv.BROKEN_CARET,iR=void 0!==/()??/.exec("")[1];(nR||iR||rR||Pv||Ev)&&(_v=function(e){var t,n,r,i,c,o,a,l=this,u=Qv(l),d=Tv(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=wv(_v,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,Z=rR&&l.sticky,h=wv(Bv,l),b=l.source,p=0,I=d;if(Z&&(h=eR(h,"y",""),-1===$v(h,"g")&&(h+="g"),I=tR(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==qv(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",h)),iR&&(n=new RegExp("^"+b+"$(?!\\s)",h)),nR&&(r=l.lastIndex),i=wv(Dv,Z?n:l,I),Z?i?(i.input=tR(i.input,p),i[0]=tR(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:nR&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),iR&&i&&i.length>1&&wv(Ov,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=o=Mv(null),c=0;c<m.length;c++)o[(a=m[c])[0]]=i[a[1]];return i});var cR=_v;mi({target:"RegExp",proto:!0,forced:/./.exec!==cR},{exec:cR});var oR=J,aR=Dt,lR=HC,uR=Y,dR=RegExp.prototype;oR&&uR((function(){return"sy"!==Object.getOwnPropertyDescriptor(dR,"flags").get.call({dotAll:!0,sticky:!0})}))&&aR.f(dR,"flags",{configurable:!0,get:lR});var sR=R,mR=J,ZR=QC.MISSED_STICKY,hR=_,bR=Dt.f,pR=En.get,IR=RegExp.prototype,gR=sR.TypeError;mR&&ZR&&bR(IR,"sticky",{configurable:!0,get:function(){if(this!==IR){if("RegExp"===hR(this))return!!pR(this).sticky;throw gR("Incompatible receiver, RegExp required")}}});var yR,XR,GR=mi,fR=R,VR=H,WR=P,CR=ue,vR=se,RR=(yR=!1,(XR=/[ac]/).exec=function(){return yR=!0,/./.exec.apply(this,arguments)},!0===XR.test("abc")&&yR),SR=fR.Error,YR=WR(/./.test);GR({target:"RegExp",proto:!0,forced:!RR},{test:function(e){var t=this.exec;if(!CR(t))return YR(this,e);var n=VR(t,this,e);if(null!==n&&!vR(n))throw new SR("RegExp exec method returned something other than an Object or null");return!!n}});var JR=er.PROPER,KR=bn.exports,LR=nn,NR=Ci,HR=Y,xR=FC,kR=RegExp.prototype.toString,UR=HR((function(){return"/a/b"!=kR.call({source:"a",flags:"b"})})),AR=JR&&"toString"!=kR.name;(UR||AR)&&KR(RegExp.prototype,"toString",(function(){var e=LR(this);return"/"+NR(e.source)+"/"+NR(xR(e))}),{unsafe:!0}),Db("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),up);var wR=P,FR=hr,TR=Ci,BR=ce,zR=wR("".charAt),jR=wR("".charCodeAt),MR=wR("".slice),QR=function(e){return function(t,n){var r,i,c=TR(BR(t)),o=FR(n),a=c.length;return o<0||o>=a?e?"":void 0:(r=jR(c,o))<55296||r>56319||o+1===a||(i=jR(c,o+1))<56320||i>57343?e?zR(c,o):r:e?MR(c,o,o+2):i-56320+(r-55296<<10)+65536}},PR={codeAt:QR(!1),charAt:QR(!0)},ER=PR.codeAt;mi({target:"String",proto:!0},{codePointAt:function(e){return ER(this,e)}});var OR,DR=LC,_R=R.TypeError,qR=function(e){if(DR(e))throw _R("The method doesn't accept regular expressions");return e},$R=ft("match"),eS=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[$R]=!1,"/./"[e](t)}catch(e){}}return!1},tS=mi,nS=P,rS=S.f,iS=Gr,cS=Ci,oS=qR,aS=ce,lS=eS,uS=nS("".endsWith),dS=nS("".slice),sS=Math.min,mS=lS("endsWith");tS({target:"String",proto:!0,forced:!!(mS||(OR=rS(String.prototype,"endsWith"),!OR||OR.writable))&&!mS},{endsWith:function(e){var t=cS(aS(this));oS(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:sS(iS(n),r),c=cS(e);return uS?uS(t,c,i):dS(t,i-c.length,i)===c}});var ZS=mi,hS=P,bS=gr,pS=R.RangeError,IS=String.fromCharCode,gS=String.fromCodePoint,yS=hS([].join);ZS({target:"String",stat:!0,forced:!!gS&&1!=gS.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],bS(t,1114111)!==t)throw pS(t+" is not a valid code point");n[i]=t<65536?IS(t):IS(55296+((t-=65536)>>10),t%1024+56320)}return yS(n,"")}});var XS=mi,GS=qR,fS=ce,VS=Ci,WS=eS,CS=P("".indexOf);XS({target:"String",proto:!0,forced:!WS("includes")},{includes:function(e){return!!~CS(VS(fS(this)),VS(GS(e)),arguments.length>1?arguments[1]:void 0)}});var vS=PR.charAt,RS=Ci,SS=En,YS=Ss,JS=SS.set,KS=SS.getterFor("String Iterator");YS(String,"String",(function(e){JS(this,{type:"String Iterator",string:RS(e),index:0})}),(function(){var e,t=KS(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=vS(n,r),t.index+=e.length,{value:e,done:!1})}));var LS=P,NS=bn.exports,HS=cR,xS=Y,kS=ft,US=hn,AS=kS("species"),wS=RegExp.prototype,FS=function(e,t,n,r){var i=kS(e),c=!xS((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),o=c&&!xS((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[AS]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!o||n){var a=LS(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var o=LS(e),l=t.exec;return l===HS||l===wS.exec?c&&!i?{done:!0,value:a(t,n,r)}:{done:!0,value:o(n,t,r)}:{done:!1}}));NS(String.prototype,e,l[0]),NS(wS,i,l[1])}r&&US(wS[i],"sham",!0)},TS=PR.charAt,BS=function(e,t,n){return t+(n?TS(e,t).length:1)},zS=H,jS=nn,MS=ue,QS=_,PS=cR,ES=R.TypeError,OS=function(e,t){var n=e.exec;if(MS(n)){var r=zS(n,e,t);return null!==r&&jS(r),r}if("RegExp"===QS(e))return zS(PS,e,t);throw ES("RegExp#exec called on incompatible receiver")},DS=H,_S=nn,qS=Gr,$S=Ci,eY=ce,tY=Be,nY=BS,rY=OS;FS("match",(function(e,t,n){return[function(t){var n=eY(this),r=null==t?void 0:tY(t,e);return r?DS(r,t,n):new RegExp(t)[e]($S(n))},function(e){var r=_S(this),i=$S(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return rY(r,i);var o=r.unicode;r.lastIndex=0;for(var a,l=[],u=0;null!==(a=rY(r,i));){var d=$S(a[0]);l[u]=d,""===d&&(r.lastIndex=nY(i,qS(r.lastIndex),o)),u++}return 0===u?null:l}]}));var iY=mi,cY=R,oY=H,aY=P,lY=ts,uY=ce,dY=Gr,sY=Ci,mY=nn,ZY=LC,hY=FC,bY=Be,pY=bn.exports,IY=Y,gY=lG,yY=BS,XY=OS,GY=En,fY=ft("matchAll"),VY=GY.set,WY=GY.getterFor("RegExp String Iterator"),CY=RegExp.prototype,vY=cY.TypeError,RY=aY("".indexOf),SY=aY("".matchAll),YY=!!SY&&!IY((function(){SY("a",/./)})),JY=lY((function(e,t,n,r){VY(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=WY(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=XY(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===sY(r[0])&&(t.lastIndex=yY(n,dY(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),KY=function(e){var t,n,r,i=mY(this),c=sY(e),o=gY(i,RegExp),a=sY(hY(i));return t=new o(o===RegExp?i.source:i,a),n=!!~RY(a,"g"),r=!!~RY(a,"u"),t.lastIndex=dY(i.lastIndex),new JY(t,c,n,r)};iY({target:"String",proto:!0,forced:YY},{matchAll:function(e){var t,n,r,i=uY(this);if(null!=e){if(ZY(e)&&(t=sY(uY(hY(e))),!~RY(t,"g")))throw vY("`.matchAll` does not allow non-global regexes");if(YY)return SY(i,e);if(r=bY(e,fY))return oY(r,e,i)}else if(YY)return SY(i,e);return n=sY(i),new RegExp(e,"g")[fY](n)}}),fY in CY||pY(CY,fY,KY);var LY=P,NY=Gr,HY=Ci,xY=ce,kY=LY(kg),UY=LY("".slice),AY=Math.ceil,wY=function(e){return function(t,n,r){var i,c,o=HY(xY(t)),a=NY(n),l=o.length,u=void 0===r?" ":HY(r);return a<=l||""==u?o:((c=kY(u,AY((i=a-l)/u.length))).length>i&&(c=UY(c,0,i)),e?o+c:c+o)}},FY={start:wY(!1),end:wY(!0)},TY=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Ie),BY=FY.end;mi({target:"String",proto:!0,forced:TY},{padEnd:function(e){return BY(this,e,arguments.length>1?arguments[1]:void 0)}});var zY=FY.start;mi({target:"String",proto:!0,forced:TY},{padStart:function(e){return zY(this,e,arguments.length>1?arguments[1]:void 0)}});var jY=mi,MY=P,QY=le,PY=rt,EY=Ci,OY=Vr,DY=MY([].push),_Y=MY([].join);jY({target:"String",stat:!0},{raw:function(e){for(var t=QY(PY(e).raw),n=OY(t),r=arguments.length,i=[],c=0;n>c;){if(DY(i,EY(t[c++])),c===n)return _Y(i,"");c<r&&DY(i,EY(arguments[c]))}}}),mi({target:"String",proto:!0},{repeat:kg});var qY=P,$Y=rt,eJ=Math.floor,tJ=qY("".charAt),nJ=qY("".replace),rJ=qY("".slice),iJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,cJ=/\$([$&'`]|\d{1,2})/g,oJ=xa,aJ=H,lJ=P,uJ=FS,dJ=Y,sJ=nn,mJ=ue,ZJ=hr,hJ=Gr,bJ=Ci,pJ=ce,IJ=BS,gJ=Be,yJ=function(e,t,n,r,i,c){var o=n+e.length,a=r.length,l=cJ;return void 0!==i&&(i=$Y(i),l=iJ),nJ(c,l,(function(c,l){var u;switch(tJ(l,0)){case"$":return"$";case"&":return e;case"`":return rJ(t,0,n);case"'":return rJ(t,o);case"<":u=i[rJ(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>a){var s=eJ(d/10);return 0===s?c:s<=a?void 0===r[s-1]?tJ(l,1):r[s-1]+tJ(l,1):c}u=r[d-1]}return void 0===u?"":u}))},XJ=OS,GJ=ft("replace"),fJ=Math.max,VJ=Math.min,WJ=lJ([].concat),CJ=lJ([].push),vJ=lJ("".indexOf),RJ=lJ("".slice),SJ="$0"==="a".replace(/./,"$0"),YJ=!!/./[GJ]&&""===/./[GJ]("a","$0"),JJ=!dJ((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));uJ("replace",(function(e,t,n){var r=YJ?"$":"$0";return[function(e,n){var r=pJ(this),i=null==e?void 0:gJ(e,GJ);return i?aJ(i,e,r,n):aJ(t,bJ(r),e,n)},function(e,i){var c=sJ(this),o=bJ(e);if("string"==typeof i&&-1===vJ(i,r)&&-1===vJ(i,"$<")){var a=n(t,c,o,i);if(a.done)return a.value}var l=mJ(i);l||(i=bJ(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=XJ(c,o);if(null===m)break;if(CJ(s,m),!u)break;""===bJ(m[0])&&(c.lastIndex=IJ(o,hJ(c.lastIndex),d))}for(var Z,h="",b=0,p=0;p<s.length;p++){for(var I=bJ((m=s[p])[0]),g=fJ(VJ(ZJ(m.index),o.length),0),y=[],X=1;X<m.length;X++)CJ(y,void 0===(Z=m[X])?Z:String(Z));var G=m.groups;if(l){var f=WJ([I],y,g,o);void 0!==G&&CJ(f,G);var V=bJ(oJ(i,void 0,f))}else V=yJ(I,o,g,y,G,i);g>=b&&(h+=RJ(o,b,g)+V,b=g+I.length)}return h+RJ(o,b)}]}),!JJ||!SJ||YJ);var KJ=H,LJ=nn,NJ=ce,HJ=nX,xJ=Ci,kJ=Be,UJ=OS;FS("search",(function(e,t,n){return[function(t){var n=NJ(this),r=null==t?void 0:kJ(t,e);return r?KJ(r,t,n):new RegExp(t)[e](xJ(n))},function(e){var r=LJ(this),i=xJ(e),c=n(t,r,i);if(c.done)return c.value;var o=r.lastIndex;HJ(o,0)||(r.lastIndex=0);var a=UJ(r,i);return HJ(r.lastIndex,o)||(r.lastIndex=o),null===a?-1:a.index}]}));var AJ=xa,wJ=H,FJ=P,TJ=FS,BJ=LC,zJ=nn,jJ=ce,MJ=lG,QJ=BS,PJ=Gr,EJ=Ci,OJ=Be,DJ=oc,_J=OS,qJ=cR,$J=Y,eK=QC.UNSUPPORTED_Y,tK=Math.min,nK=[].push,rK=FJ(/./.exec),iK=FJ(nK),cK=FJ("".slice),oK=!$J((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));TJ("split",(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=EJ(jJ(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!BJ(e))return wJ(t,r,e,i);for(var c,o,a,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,s=new RegExp(e.source,u+"g");(c=wJ(qJ,s,r))&&!((o=s.lastIndex)>d&&(iK(l,cK(r,d,c.index)),c.length>1&&c.index<r.length&&AJ(nK,l,DJ(c,1)),a=c[0].length,d=o,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!a&&rK(s,"")||iK(l,""):iK(l,cK(r,d)),l.length>i?DJ(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:wJ(t,this,e,n)}:t,[function(t,n){var i=jJ(this),c=null==t?void 0:OJ(t,e);return c?wJ(c,t,i,n):wJ(r,EJ(i),t,n)},function(e,i){var c=zJ(this),o=EJ(e),a=n(r,c,o,i,r!==t);if(a.done)return a.value;var l=MJ(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(eK?"g":"y"),s=new l(eK?"^(?:"+c.source+")":c,d),m=void 0===i?4294967295:i>>>0;if(0===m)return[];if(0===o.length)return null===_J(s,o)?[o]:[];for(var Z=0,h=0,b=[];h<o.length;){s.lastIndex=eK?0:h;var p,I=_J(s,eK?cK(o,h):o);if(null===I||(p=tK(PJ(s.lastIndex+(eK?h:0)),o.length))===Z)h=QJ(o,h,u);else{if(iK(b,cK(o,Z,h)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(iK(b,I[g]),b.length===m)return b;h=Z=p}}return iK(b,cK(o,Z)),b}]}),!oK,eK);var aK=mi,lK=P,uK=S.f,dK=Gr,sK=Ci,mK=qR,ZK=ce,hK=eS,bK=lK("".startsWith),pK=lK("".slice),IK=Math.min,gK=hK("startsWith"),yK=!gK&&!!function(){var e=uK(String.prototype,"startsWith");return e&&!e.writable}();aK({target:"String",proto:!0,forced:!yK&&!gK},{startsWith:function(e){var t=sK(ZK(this));mK(e);var n=dK(IK(arguments.length>1?arguments[1]:void 0,t.length)),r=sK(e);return bK?bK(t,r,n):pK(t,n,n+r.length)===r}});var XK=er.PROPER,GK=Y,fK=fI,VK=function(e){return GK((function(){return!!fK[e]()||"
"!=="
"[e]()||XK&&fK[e].name!==e}))},WK=JI.trim;mi({target:"String",proto:!0,forced:VK("trim")},{trim:function(){return WK(this)}});var CK=JI.end,vK=VK("trimEnd")?function(){return CK(this)}:"".trimEnd;mi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==vK},{trimRight:vK});mi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==vK},{trimEnd:vK});var RK=JI.start,SK=VK("trimStart")?function(){return RK(this)}:"".trimStart;mi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==SK},{trimLeft:SK});mi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==SK},{trimStart:SK});var YK=ce,JK=Ci,KK=/"/g,LK=P("".replace),NK=function(e,t,n,r){var i=JK(YK(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+LK(JK(r),KK,""")+'"'),c+">"+i+"</"+t+">"},HK=Y,xK=function(e){return HK((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},kK=NK;mi({target:"String",proto:!0,forced:xK("anchor")},{anchor:function(e){return kK(this,"a","name",e)}});var UK=NK;mi({target:"String",proto:!0,forced:xK("big")},{big:function(){return UK(this,"big","","")}});var AK=NK;mi({target:"String",proto:!0,forced:xK("blink")},{blink:function(){return AK(this,"blink","","")}});var wK=NK;mi({target:"String",proto:!0,forced:xK("bold")},{bold:function(){return wK(this,"b","","")}});var FK=NK;mi({target:"String",proto:!0,forced:xK("fixed")},{fixed:function(){return FK(this,"tt","","")}});var TK=NK;mi({target:"String",proto:!0,forced:xK("fontcolor")},{fontcolor:function(e){return TK(this,"font","color",e)}});var BK=NK;mi({target:"String",proto:!0,forced:xK("fontsize")},{fontsize:function(e){return BK(this,"font","size",e)}});var zK=NK;mi({target:"String",proto:!0,forced:xK("italics")},{italics:function(){return zK(this,"i","","")}});var jK=NK;mi({target:"String",proto:!0,forced:xK("link")},{link:function(e){return jK(this,"a","href",e)}});var MK=NK;mi({target:"String",proto:!0,forced:xK("small")},{small:function(){return MK(this,"small","","")}});var QK=NK;mi({target:"String",proto:!0,forced:xK("strike")},{strike:function(){return QK(this,"strike","","")}});var PK=NK;mi({target:"String",proto:!0,forced:xK("sub")},{sub:function(){return PK(this,"sub","","")}});var EK=NK;mi({target:"String",proto:!0,forced:xK("sup")},{sup:function(){return EK(this,"sup","","")}});var OK,DK,_K,qK={exports:{}},$K=uZ,eL=J,tL=R,nL=ue,rL=se,iL=ot,cL=fi,oL=ke,aL=hn,lL=bn.exports,uL=Dt.f,dL=pe,sL=Fd,mL=ds,ZL=ft,hL=st,bL=tL.Int8Array,pL=bL&&bL.prototype,IL=tL.Uint8ClampedArray,gL=IL&&IL.prototype,yL=bL&&sL(bL),XL=pL&&sL(pL),GL=Object.prototype,fL=tL.TypeError,VL=ZL("toStringTag"),WL=hL("TYPED_ARRAY_TAG"),CL=hL("TYPED_ARRAY_CONSTRUCTOR"),vL=$K&&!!mL&&"Opera"!==cL(tL.opera),RL=!1,SL={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},YL={BigInt64Array:8,BigUint64Array:8},JL=function(e){if(!rL(e))return!1;var t=cL(e);return iL(SL,t)||iL(YL,t)};for(OK in SL)(_K=(DK=tL[OK])&&DK.prototype)?aL(_K,CL,DK):vL=!1;for(OK in YL)(_K=(DK=tL[OK])&&DK.prototype)&&aL(_K,CL,DK);if((!vL||!nL(yL)||yL===Function.prototype)&&(yL=function(){throw fL("Incorrect invocation")},vL))for(OK in SL)tL[OK]&&mL(tL[OK],yL);if((!vL||!XL||XL===GL)&&(XL=yL.prototype,vL))for(OK in SL)tL[OK]&&mL(tL[OK].prototype,XL);if(vL&&sL(gL)!==XL&&mL(gL,XL),eL&&!iL(XL,VL))for(OK in RL=!0,uL(XL,VL,{get:function(){return rL(this)?this[WL]:void 0}}),SL)tL[OK]&&aL(tL[OK],WL,OK);var KL={NATIVE_ARRAY_BUFFER_VIEWS:vL,TYPED_ARRAY_CONSTRUCTOR:CL,TYPED_ARRAY_TAG:RL&&WL,aTypedArray:function(e){if(JL(e))return e;throw fL("Target is not a typed array")},aTypedArrayConstructor:function(e){if(nL(e)&&(!mL||dL(yL,e)))return e;throw fL(oL(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(eL){if(n)for(var i in SL){var c=tL[i];if(c&&iL(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}XL[e]&&!n||lL(XL,e,n?t:vL&&pL[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(eL){if(mL){if(n)for(r in SL)if((i=tL[r])&&iL(i,e))try{delete i[e]}catch(e){}if(yL[e]&&!n)return;try{return lL(yL,e,n?t:vL&&yL[e]||t)}catch(e){}}for(r in SL)!(i=tL[r])||i[e]&&!n||lL(i,e,t)}},isView:function(e){if(!rL(e))return!1;var t=cL(e);return"DataView"===t||iL(SL,t)||iL(YL,t)},isTypedArray:JL,TypedArray:yL,TypedArrayPrototype:XL},LL=R,NL=Y,HL=Wd,xL=KL.NATIVE_ARRAY_BUFFER_VIEWS,kL=LL.ArrayBuffer,UL=LL.Int8Array,AL=!xL||!NL((function(){UL(1)}))||!NL((function(){new UL(-1)}))||!HL((function(e){new UL,new UL(null),new UL(1.5),new UL(e)}),!0)||NL((function(){return 1!==new UL(new kL(2),1,void 0).length})),wL=hr,FL=R.RangeError,TL=function(e){var t=wL(e);if(t<0)throw FL("The argument can't be less than 0");return t},BL=R.RangeError,zL=function(e,t){var n=TL(e);if(n%t)throw BL("Wrong offset");return n},jL=Kc,ML=H,QL=iG,PL=rt,EL=Vr,OL=ad,DL=ed,_L=Ou,qL=KL.aTypedArrayConstructor,$L=function(e){var t,n,r,i,c,o,a=QL(this),l=PL(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=DL(l);if(m&&!_L(m))for(o=(c=OL(l,m)).next,l=[];!(i=ML(o,c)).done;)l.push(i.value);for(s&&u>2&&(d=jL(d,arguments[2])),n=EL(l),r=new(qL(a))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},eN=mi,tN=R,nN=H,rN=J,iN=AL,cN=KL,oN=Vh,aN=hZ,lN=T,uN=hn,dN=ag,sN=Gr,mN=gZ,ZN=zL,hN=Ht,bN=ot,pN=fi,IN=se,gN=He,yN=Oi,XN=pe,GN=ds,fN=sr.f,VN=$L,WN=uo.forEach,CN=Dm,vN=Dt,RN=S,SN=xb,YN=En.get,JN=En.set,KN=vN.f,LN=RN.f,NN=Math.round,HN=tN.RangeError,xN=oN.ArrayBuffer,kN=xN.prototype,UN=oN.DataView,AN=cN.NATIVE_ARRAY_BUFFER_VIEWS,wN=cN.TYPED_ARRAY_CONSTRUCTOR,FN=cN.TYPED_ARRAY_TAG,TN=cN.TypedArray,BN=cN.TypedArrayPrototype,zN=cN.aTypedArrayConstructor,jN=cN.isTypedArray,MN=function(e,t){zN(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},QN=function(e,t){KN(e,t,{get:function(){return YN(this)[t]}})},PN=function(e){var t;return XN(kN,e)||"ArrayBuffer"==(t=pN(e))||"SharedArrayBuffer"==t},EN=function(e,t){return jN(e)&&!gN(t)&&t in e&&dN(+t)&&t>=0},ON=function(e,t){return t=hN(t),EN(e,t)?lN(2,e[t]):LN(e,t)},DN=function(e,t,n){return t=hN(t),!(EN(e,t)&&IN(n)&&bN(n,"value"))||bN(n,"get")||bN(n,"set")||n.configurable||bN(n,"writable")&&!n.writable||bN(n,"enumerable")&&!n.enumerable?KN(e,t,n):(e[t]=n.value,e)};rN?(AN||(RN.f=ON,vN.f=DN,QN(BN,"buffer"),QN(BN,"byteOffset"),QN(BN,"byteLength"),QN(BN,"length")),eN({target:"Object",stat:!0,forced:!AN},{getOwnPropertyDescriptor:ON,defineProperty:DN}),qK.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,o="set"+e,a=tN[i],l=a,u=l&&l.prototype,d={},s=function(e,t){KN(e,t,{get:function(){return function(e,t){var n=YN(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=YN(e);n&&(i=(i=NN(i))<0?0:i>255?255:255&i),c.view[o](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};AN?iN&&(l=t((function(e,t,n,i){return aN(e,u),SN(IN(t)?PN(t)?void 0!==i?new a(t,ZN(n,r),i):void 0!==n?new a(t,ZN(n,r)):new a(t):jN(t)?MN(l,t):nN(VN,l,t):new a(mN(t)),e,l)})),GN&&GN(l,TN),WN(fN(a),(function(e){e in l||uN(l,e,a[e])})),l.prototype=u):(l=t((function(e,t,n,i){aN(e,u);var c,o,a,d=0,m=0;if(IN(t)){if(!PN(t))return jN(t)?MN(l,t):nN(VN,l,t);c=t,m=ZN(n,r);var Z=t.byteLength;if(void 0===i){if(Z%r)throw HN("Wrong length");if((o=Z-m)<0)throw HN("Wrong length")}else if((o=sN(i)*r)+m>Z)throw HN("Wrong length");a=o/r}else a=mN(t),c=new xN(o=a*r);for(JN(e,{buffer:c,byteOffset:m,byteLength:o,length:a,view:new UN(c)});d<a;)s(e,d++)})),GN&&GN(l,TN),u=l.prototype=yN(BN)),u.constructor!==l&&uN(u,"constructor",l),uN(u,wN,l),FN&&uN(u,FN,i),d[i]=l,eN({global:!0,forced:l!=a,sham:!AN},d),"BYTES_PER_ELEMENT"in l||uN(l,"BYTES_PER_ELEMENT",r),"BYTES_PER_ELEMENT"in u||uN(u,"BYTES_PER_ELEMENT",r),CN(i)}):qK.exports=function(){},(0,qK.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,qK.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,qK.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var _N=KL,qN=P(ru),$N=_N.aTypedArray;(0,_N.exportTypedArrayMethod)("copyWithin",(function(e,t){return qN($N(this),e,t,arguments.length>2?arguments[2]:void 0)}));var eH=uo.every,tH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("every",(function(e){return eH(tH(this),e,arguments.length>1?arguments[1]:void 0)}));var nH=H,rH=Zu,iH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return nH(rH,iH(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var cH=Vr,oH=lG,aH=KL.TYPED_ARRAY_CONSTRUCTOR,lH=KL.aTypedArrayConstructor,uH=function(e){return lH(oH(e,e[aH]))},dH=function(e,t){for(var n=0,r=cH(t),i=new e(r);r>n;)i[n]=t[n++];return i},sH=uH,mH=uo.filter,ZH=function(e,t){return dH(sH(e),t)},hH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("filter",(function(e){var t=mH(hH(this),e,arguments.length>1?arguments[1]:void 0);return ZH(this,t)}));var bH=uo.find,pH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("find",(function(e){return bH(pH(this),e,arguments.length>1?arguments[1]:void 0)}));var IH=uo.findIndex,gH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("findIndex",(function(e){return IH(gH(this),e,arguments.length>1?arguments[1]:void 0)}));var yH=uo.forEach,XH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("forEach",(function(e){yH(XH(this),e,arguments.length>1?arguments[1]:void 0)})),(0,KL.exportTypedArrayStaticMethod)("from",$L,AL);var GH=Sr.includes,fH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("includes",(function(e){return GH(fH(this),e,arguments.length>1?arguments[1]:void 0)}));var VH=Sr.indexOf,WH=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("indexOf",(function(e){return VH(WH(this),e,arguments.length>1?arguments[1]:void 0)}));var CH=R,vH=Y,RH=P,SH=KL,YH=As,JH=ft("iterator"),KH=CH.Uint8Array,LH=RH(YH.values),NH=RH(YH.keys),HH=RH(YH.entries),xH=SH.aTypedArray,kH=SH.exportTypedArrayMethod,UH=KH&&KH.prototype,AH=!vH((function(){UH[JH].call([1])})),wH=!!UH&&UH.values&&UH[JH]===UH.values&&"values"===UH.values.name,FH=function(){return LH(xH(this))};kH("entries",(function(){return HH(xH(this))}),AH),kH("keys",(function(){return NH(xH(this))}),AH),kH("values",FH,AH||!wH,{name:"values"}),kH(JH,FH,AH||!wH,{name:"values"});var TH=KL.aTypedArray,BH=KL.exportTypedArrayMethod,zH=P([].join);BH("join",(function(e){return zH(TH(this),e)}));var jH=xa,MH=le,QH=hr,PH=Vr,EH=Ts,OH=Math.min,DH=[].lastIndexOf,_H=!!DH&&1/[1].lastIndexOf(1,-0)<0,qH=EH("lastIndexOf"),$H=_H||!qH?function(e){if(_H)return jH(DH,this,arguments)||0;var t=MH(this),n=PH(t),r=n-1;for(arguments.length>1&&(r=OH(r,QH(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:DH,ex=xa,tx=$H,nx=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return ex(tx,nx(this),t>1?[e,arguments[1]]:[e])}));var rx=uo.map,ix=uH,cx=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("map",(function(e){return rx(cx(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(ix(e))(t)}))}));var ox=KL.aTypedArrayConstructor;(0,KL.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(ox(this))(t);t>e;)n[e]=arguments[e++];return n}),AL);var ax=Fe,lx=rt,ux=re,dx=Vr,sx=R.TypeError,mx=function(e){return function(t,n,r,i){ax(n);var c=lx(t),o=ux(c),a=dx(c),l=e?a-1:0,u=e?-1:1;if(r<2)for(;;){if(l in o){i=o[l],l+=u;break}if(l+=u,e?l<0:a<=l)throw sx("Reduce of empty array with no initial value")}for(;e?l>=0:a>l;l+=u)l in o&&(i=n(i,o[l],l,c));return i}},Zx={left:mx(!1),right:mx(!0)},hx=Zx.left,bx=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return hx(bx(this),e,t,t>1?arguments[1]:void 0)}));var px=Zx.right,Ix=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return px(Ix(this),e,t,t>1?arguments[1]:void 0)}));var gx=KL.aTypedArray,yx=KL.exportTypedArrayMethod,Xx=Math.floor;yx("reverse",(function(){for(var e,t=this,n=gx(t).length,r=Xx(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var Gx=R,fx=H,Vx=KL,Wx=Vr,Cx=zL,vx=rt,Rx=Y,Sx=Gx.RangeError,Yx=Gx.Int8Array,Jx=Yx&&Yx.prototype,Kx=Jx&&Jx.set,Lx=Vx.aTypedArray,Nx=Vx.exportTypedArrayMethod,Hx=!Rx((function(){var e=new Uint8ClampedArray(2);return fx(Kx,e,{length:1,0:3},1),3!==e[1]})),xx=Hx&&Vx.NATIVE_ARRAY_BUFFER_VIEWS&&Rx((function(){var e=new Yx(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));Nx("set",(function(e){Lx(this);var t=Cx(arguments.length>1?arguments[1]:void 0,1),n=vx(e);if(Hx)return fx(Kx,this,n,t);var r=this.length,i=Wx(n),c=0;if(i+t>r)throw Sx("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!Hx||xx);var kx=uH,Ux=ka,Ax=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("slice",(function(e,t){for(var n=Ux(Ax(this),e,t),r=kx(this),i=0,c=n.length,o=new r(c);c>i;)o[i]=n[i++];return o}),Y((function(){new Int8Array(1).slice()})));var wx=uo.some,Fx=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("some",(function(e){return wx(Fx(this),e,arguments.length>1?arguments[1]:void 0)}));var Tx=P,Bx=Y,zx=Fe,jx=Xm,Mx=fm,Qx=Vm,Px=We,Ex=Cm,Ox=KL.aTypedArray,Dx=KL.exportTypedArrayMethod,_x=R.Uint16Array,qx=_x&&Tx(_x.prototype.sort),$x=!(!qx||Bx((function(){qx(new _x(2),null)}))&&Bx((function(){qx(new _x(2),{})}))),ek=!!qx&&!Bx((function(){if(Px)return Px<74;if(Mx)return Mx<67;if(Qx)return!0;if(Ex)return Ex<602;var e,t,n=new _x(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(qx(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));Dx("sort",(function(e){return void 0!==e&&zx(e),ek?qx(this,e):jx(Ox(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!ek||$x);var tk=Gr,nk=gr,rk=uH,ik=KL.aTypedArray;(0,KL.exportTypedArrayMethod)("subarray",(function(e,t){var n=ik(this),r=n.length,i=nk(e,r);return new(rk(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,tk((void 0===t?r:nk(t,r))-i))}));var ck=xa,ok=KL,ak=Y,lk=ka,uk=R.Int8Array,dk=ok.aTypedArray,sk=ok.exportTypedArrayMethod,mk=[].toLocaleString,Zk=!!uk&&ak((function(){mk.call(new uk(1))}));sk("toLocaleString",(function(){return ck(mk,Zk?lk(dk(this)):dk(this),lk(arguments))}),ak((function(){return[1,2].toLocaleString()!=new uk([1,2]).toLocaleString()}))||!ak((function(){uk.prototype.toLocaleString.call([1,2])})));var hk=KL.exportTypedArrayMethod,bk=Y,pk=P,Ik=R.Uint8Array,gk=Ik&&Ik.prototype||{},yk=[].toString,Xk=pk([].join);bk((function(){yk.call({})}))&&(yk=function(){return Xk(this)});var Gk=gk.toString!=yk;hk("toString",yk,Gk);var fk=P,Vk=sZ,Wk=Eh.exports.getWeakData,Ck=nn,vk=se,Rk=hZ,Sk=Kb,Yk=ot,Jk=En.set,Kk=En.getterFor,Lk=uo.find,Nk=uo.findIndex,Hk=fk([].splice),xk=0,kk=function(e){return e.frozen||(e.frozen=new Uk)},Uk=function(){this.entries=[]},Ak=function(e,t){return Lk(e.entries,(function(e){return e[0]===t}))};Uk.prototype={get:function(e){var t=Ak(this,e);if(t)return t[1]},has:function(e){return!!Ak(this,e)},set:function(e,t){var n=Ak(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Nk(this.entries,(function(t){return t[0]===e}));return~t&&Hk(this.entries,t,1),!!~t}};var wk,Fk={getConstructor:function(e,t,n,r){var i=e((function(e,i){Rk(e,c),Jk(e,{type:t,id:xk++,frozen:void 0}),null!=i&&Sk(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=Kk(t),a=function(e,t,n){var r=o(e),i=Wk(Ck(t),!0);return!0===i?kk(r).set(t,n):i[r.id]=n,e};return Vk(c,{delete:function(e){var t=o(this);if(!vk(e))return!1;var n=Wk(e);return!0===n?kk(t).delete(e):n&&Yk(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!vk(e))return!1;var n=Wk(e);return!0===n?kk(t).has(e):n&&Yk(n,t.id)}}),Vk(c,n?{get:function(e){var t=o(this);if(vk(e)){var n=Wk(e);return!0===n?kk(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return a(this,e,t)}}:{add:function(e){return a(this,e,!0)}}),i}},Tk=R,Bk=P,zk=sZ,jk=Eh.exports,Mk=Db,Qk=Fk,Pk=se,Ek=tb,Ok=En.enforce,Dk=vn,_k=!Tk.ActiveXObject&&"ActiveXObject"in Tk,qk=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},$k=Mk("WeakMap",qk,Qk);if(Dk&&_k){wk=Qk.getConstructor(qk,"WeakMap",!0),jk.enable();var eU=$k.prototype,tU=Bk(eU.delete),nU=Bk(eU.has),rU=Bk(eU.get),iU=Bk(eU.set);zk(eU,{delete:function(e){if(Pk(e)&&!Ek(e)){var t=Ok(this);return t.frozen||(t.frozen=new wk),tU(this,e)||t.frozen.delete(e)}return tU(this,e)},has:function(e){if(Pk(e)&&!Ek(e)){var t=Ok(this);return t.frozen||(t.frozen=new wk),nU(this,e)||t.frozen.has(e)}return nU(this,e)},get:function(e){if(Pk(e)&&!Ek(e)){var t=Ok(this);return t.frozen||(t.frozen=new wk),nU(this,e)?rU(this,e):t.frozen.get(e)}return rU(this,e)},set:function(e,t){if(Pk(e)&&!Ek(e)){var n=Ok(this);n.frozen||(n.frozen=new wk),nU(this,e)?iU(this,e,t):n.frozen.set(e,t)}else iU(this,e,t);return this}})}Db("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Fk);var cU={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},oU=At("span").classList,aU=oU&&oU.constructor&&oU.constructor.prototype,lU=aU===Object.prototype?void 0:aU,uU=uo.forEach,dU=R,sU=cU,mU=lU,ZU=Ts("forEach")?[].forEach:function(e){return uU(this,e,arguments.length>1?arguments[1]:void 0)},hU=hn,bU=function(e){if(e&&e.forEach!==ZU)try{hU(e,"forEach",ZU)}catch(t){e.forEach=ZU}};for(var pU in sU)sU[pU]&&bU(dU[pU]&&dU[pU].prototype);bU(mU);var IU=R,gU=cU,yU=lU,XU=As,GU=hn,fU=ft,VU=fU("iterator"),WU=fU("toStringTag"),CU=XU.values,vU=function(e,t){if(e){if(e[VU]!==CU)try{GU(e,VU,CU)}catch(t){e[VU]=CU}if(e[WU]||GU(e,WU,t),gU[t])for(var n in XU)if(e[n]!==XU[n])try{GU(e,n,XU[n])}catch(t){e[n]=XU[n]}}};for(var RU in gU)vU(IU[RU]&&IU[RU].prototype,RU);vU(yU,"DOMTokenList");var SU=MG.clear;mi({global:!0,bind:!0,enumerable:!0,forced:R.clearImmediate!==SU},{clearImmediate:SU});var YU=MG.set;mi({global:!0,bind:!0,enumerable:!0,forced:R.setImmediate!==YU},{setImmediate:YU});var JU=mi,KU=df,LU=Fe,NU=dG,HU=eG,xU=R.process;JU({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){NU(arguments.length,1),LU(e);var t=HU&&xU.domain;KU(t?t.bind(e):e)}});var kU=Y,UU=ft("iterator"),AU=!kU((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[UU]||"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"!==n||"x"!==new URL("http://x",void 0).host})),wU=P,FU=/[^\0-\u007E]/,TU=/[.\u3002\uFF0E\uFF61]/g,BU="Overflow: input needs wider integers to process",zU=R.RangeError,jU=wU(TU.exec),MU=Math.floor,QU=String.fromCharCode,PU=wU("".charCodeAt),EU=wU([].join),OU=wU([].push),DU=wU("".replace),_U=wU("".split),qU=wU("".toLowerCase),$U=function(e){return e+22+75*(e<26)},eA=function(e,t,n){var r=0;for(e=n?MU(e/700):e>>1,e+=MU(e/t);e>455;)e=MU(e/35),r+=36;return MU(r+36*e/(e+38))},tA=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=PU(e,n++);if(i>=55296&&i<=56319&&n<r){var c=PU(e,n++);56320==(64512&c)?OU(t,((1023&i)<<10)+(1023&c)+65536):(OU(t,i),n--)}else OU(t,i)}return t}(e);var n,r,i=e.length,c=128,o=0,a=72;for(n=0;n<e.length;n++)(r=e[n])<128&&OU(t,QU(r));var l=t.length,u=l;for(l&&OU(t,"-");u<i;){var d=2147483647;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>MU((2147483647-o)/s))throw zU(BU);for(o+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++o>2147483647)throw zU(BU);if(r==c){for(var m=o,Z=36;;){var h=Z<=a?1:Z>=a+26?26:Z-a;if(m<h)break;var b=m-h,p=36-h;OU(t,QU($U(h+b%p))),m=MU(b/p),Z+=36}OU(t,QU($U(m))),a=eA(o,s,u==l),o=0,u++}}o++,c++}return EU(t,"")},nA=mi,rA=R,iA=H,cA=P,oA=J,aA=AU,lA=bn.exports,uA=sZ,dA=Rc,sA=ts,mA=En,ZA=hZ,hA=ue,bA=ot,pA=Kc,IA=fi,gA=nn,yA=se,XA=Ci,GA=Oi,fA=T,VA=ad,WA=ed,CA=dG,vA=Xm,RA=ft("iterator"),SA=mA.set,YA=mA.getterFor("URLSearchParams"),JA=mA.getterFor("URLSearchParamsIterator"),KA=Object.getOwnPropertyDescriptor,LA=function(e){if(!oA)return rA[e];var t=KA(rA,e);return t&&t.value},NA=LA("fetch"),HA=LA("Request"),xA=LA("Headers"),kA=HA&&HA.prototype,UA=xA&&xA.prototype,AA=rA.RegExp,wA=rA.TypeError,FA=rA.decodeURIComponent,TA=rA.encodeURIComponent,BA=cA("".charAt),zA=cA([].join),jA=cA([].push),MA=cA("".replace),QA=cA([].shift),PA=cA([].splice),EA=cA("".split),OA=cA("".slice),DA=/\+/g,_A=Array(4),qA=function(e){return _A[e-1]||(_A[e-1]=AA("((?:%[\\da-f]{2}){"+e+"})","gi"))},$A=function(e){try{return FA(e)}catch(t){return e}},ew=function(e){var t=MA(e,DA," "),n=4;try{return FA(t)}catch(e){for(;n;)t=MA(t,qA(n--),$A);return t}},tw=/[!'()~]|%20/g,nw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},rw=function(e){return nw[e]},iw=function(e){return MA(TA(e),tw,rw)},cw=sA((function(e,t){SA(this,{type:"URLSearchParamsIterator",iterator:VA(YA(e).entries),kind:t})}),"Iterator",(function(){var e=JA(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),ow=function(e){this.entries=[],this.url=null,void 0!==e&&(yA(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===BA(e,0)?OA(e,1):e:XA(e)))};ow.prototype={type:"URLSearchParams",bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,o,a,l=WA(e);if(l)for(n=(t=VA(e,l)).next;!(r=iA(n,t)).done;){if(c=(i=VA(gA(r.value))).next,(o=iA(c,i)).done||(a=iA(c,i)).done||!iA(c,i).done)throw wA("Expected sequence with length 2");jA(this.entries,{key:XA(o.value),value:XA(a.value)})}else for(var u in e)bA(e,u)&&jA(this.entries,{key:u,value:XA(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=EA(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=EA(t,"="),jA(this.entries,{key:ew(QA(n)),value:ew(zA(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],jA(n,iw(e.key)+"="+iw(e.value));return zA(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var aw=function(){ZA(this,lw);var e=arguments.length>0?arguments[0]:void 0;SA(this,new ow(e))},lw=aw.prototype;if(uA(lw,{append:function(e,t){CA(arguments.length,2);var n=YA(this);jA(n.entries,{key:XA(e),value:XA(t)}),n.updateURL()},delete:function(e){CA(arguments.length,1);for(var t=YA(this),n=t.entries,r=XA(e),i=0;i<n.length;)n[i].key===r?PA(n,i,1):i++;t.updateURL()},get:function(e){CA(arguments.length,1);for(var t=YA(this).entries,n=XA(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){CA(arguments.length,1);for(var t=YA(this).entries,n=XA(e),r=[],i=0;i<t.length;i++)t[i].key===n&&jA(r,t[i].value);return r},has:function(e){CA(arguments.length,1);for(var t=YA(this).entries,n=XA(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){CA(arguments.length,1);for(var n,r=YA(this),i=r.entries,c=!1,o=XA(e),a=XA(t),l=0;l<i.length;l++)(n=i[l]).key===o&&(c?PA(i,l--,1):(c=!0,n.value=a));c||jA(i,{key:o,value:a}),r.updateURL()},sort:function(){var e=YA(this);vA(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=YA(this).entries,r=pA(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new cw(this,"keys")},values:function(){return new cw(this,"values")},entries:function(){return new cw(this,"entries")}},{enumerable:!0}),lA(lw,RA,lw.entries,{name:"entries"}),lA(lw,"toString",(function(){return YA(this).serialize()}),{enumerable:!0}),dA(aw,"URLSearchParams"),nA({global:!0,forced:!aA},{URLSearchParams:aw}),!aA&&hA(xA)){var uw=cA(UA.has),dw=cA(UA.set),sw=function(e){if(yA(e)){var t,n=e.body;if("URLSearchParams"===IA(n))return t=e.headers?new xA(e.headers):new xA,uw(t,"content-type")||dw(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),GA(e,{body:fA(0,XA(n)),headers:fA(0,t)})}return e};if(hA(NA)&&nA({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return NA(e,arguments.length>1?sw(arguments[1]):{})}}),hA(HA)){var mw=function(e){return ZA(this,kA),new HA(e,arguments.length>1?sw(arguments[1]):{})};kA.constructor=mw,mw.prototype=kA,nA({global:!0,forced:!0,noTargetGet:!0},{Request:mw})}}var Zw,hw={URLSearchParams:aw,getState:YA},bw=mi,pw=J,Iw=AU,gw=R,yw=Kc,Xw=P,Gw=vi.f,fw=bn.exports,Vw=hZ,Ww=ot,Cw=my,vw=yd,Rw=oc,Sw=PR.codeAt,Yw=function(e){var t,n,r=[],i=_U(DU(qU(e),TU,"."),".");for(t=0;t<i.length;t++)n=i[t],OU(r,jU(FU,n)?"xn--"+tA(n):n);return EU(r,".")},Jw=Ci,Kw=Rc,Lw=dG,Nw=hw,Hw=En,xw=Hw.set,kw=Hw.getterFor("URL"),Uw=Nw.URLSearchParams,Aw=Nw.getState,ww=gw.URL,Fw=gw.TypeError,Tw=gw.parseInt,Bw=Math.floor,zw=Math.pow,jw=Xw("".charAt),Mw=Xw(/./.exec),Qw=Xw([].join),Pw=Xw(1..toString),Ew=Xw([].pop),Ow=Xw([].push),Dw=Xw("".replace),_w=Xw([].shift),qw=Xw("".split),$w=Xw("".slice),eF=Xw("".toLowerCase),tF=Xw([].unshift),nF=/[a-z]/i,rF=/[\d+-.a-z]/i,iF=/\d/,cF=/^0x/i,oF=/^[0-7]+$/,aF=/^\d+$/,lF=/^[\da-f]+$/i,uF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,dF=/[\0\t\n\r #/:<>?@[\\\]^|]/,sF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,mF=/[\t\n\r]/g,ZF=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)tF(t,e%256),e=Bw(e/256);return Qw(t,".")}if("object"==c(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=Pw(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},hF={},bF=Cw({},hF,{" ":1,'"':1,"<":1,">":1,"`":1}),pF=Cw({},bF,{"#":1,"?":1,"{":1,"}":1}),IF=Cw({},pF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),gF=function(e,t){var n=Sw(e,0);return n>32&&n<127&&!Ww(t,e)?e:encodeURIComponent(e)},yF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},XF=function(e,t){var n;return 2==e.length&&Mw(nF,jw(e,0))&&(":"==(n=jw(e,1))||!t&&"|"==n)},GF=function(e){var t;return e.length>1&&XF($w(e,0,2))&&(2==e.length||"/"===(t=jw(e,2))||"\\"===t||"?"===t||"#"===t)},fF=function(e){return"."===e||"%2e"===eF(e)},VF={},WF={},CF={},vF={},RF={},SF={},YF={},JF={},KF={},LF={},NF={},HF={},xF={},kF={},UF={},AF={},wF={},FF={},TF={},BF={},zF={},jF=function e(t,n,r){var i,c,o,a=Jw(t);if(n){if(c=this.parse(a))throw Fw(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(a,null,i))throw Fw(c);(o=Aw(new Uw)).bindURL(this),this.searchParams=o}};jF.prototype={type:"URL",parse:function(e,t,n){var r,i,c,o,a,l=this,u=t||VF,d=0,s="",m=!1,Z=!1,h=!1;for(e=Jw(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=Dw(e,sF,"")),e=Dw(e,mF,""),r=vw(e);d<=r.length;){switch(i=r[d],u){case VF:if(!i||!Mw(nF,i)){if(t)return"Invalid scheme";u=CF;continue}s+=eF(i),u=WF;break;case WF:if(i&&(Mw(rF,i)||"+"==i||"-"==i||"."==i))s+=eF(i);else{if(":"!=i){if(t)return"Invalid scheme";s="",u=CF,d=0;continue}if(t&&(l.isSpecial()!=Ww(yF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&yF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=kF:l.isSpecial()&&n&&n.scheme==l.scheme?u=vF:l.isSpecial()?u=JF:"/"==r[d+1]?(u=RF,d++):(l.cannotBeABaseURL=!0,Ow(l.path,""),u=TF)}break;case CF:if(!n||n.cannotBeABaseURL&&"#"!=i)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=Rw(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=zF;break}u="file"==n.scheme?kF:SF;continue;case vF:if("/"!=i||"/"!=r[d+1]){u=SF;continue}u=KF,d++;break;case RF:if("/"==i){u=LF;break}u=FF;continue;case SF:if(l.scheme=n.scheme,i==Zw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Rw(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=YF;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Rw(n.path),l.query="",u=BF;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Rw(n.path),l.path.length--,u=FF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Rw(n.path),l.query=n.query,l.fragment="",u=zF}break;case YF:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=FF;continue}u=LF}else u=KF;break;case JF:if(u=KF,"/"!=i||"/"!=jw(s,d+1))continue;d++;break;case KF:if("/"!=i&&"\\"!=i){u=LF;continue}break;case LF:if("@"==i){m&&(s="%40"+s),m=!0,c=vw(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||h){var I=gF(p,IF);h?l.password+=I:l.username+=I}else h=!0}s=""}else if(i==Zw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=vw(s).length+1,s="",u=NF}else s+=i;break;case NF:case HF:if(t&&"file"==l.scheme){u=AF;continue}if(":"!=i||Z){if(i==Zw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==s)return"Invalid host";if(t&&""==s&&(l.includesCredentials()||null!==l.port))return;if(o=l.parseHost(s))return o;if(s="",u=wF,t)return;continue}"["==i?Z=!0:"]"==i&&(Z=!1),s+=i}else{if(""==s)return"Invalid host";if(o=l.parseHost(s))return o;if(s="",u=xF,t==HF)return}break;case xF:if(!Mw(iF,i)){if(i==Zw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=Tw(s,10);if(g>65535)return"Invalid port";l.port=l.isSpecial()&&g===yF[l.scheme]?null:g,s=""}if(t)return;u=wF;continue}return"Invalid port"}s+=i;break;case kF:if(l.scheme="file","/"==i||"\\"==i)u=UF;else{if(!n||"file"!=n.scheme){u=FF;continue}if(i==Zw)l.host=n.host,l.path=Rw(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=Rw(n.path),l.query="",u=BF;else{if("#"!=i){GF(Qw(Rw(r,d),""))||(l.host=n.host,l.path=Rw(n.path),l.shortenPath()),u=FF;continue}l.host=n.host,l.path=Rw(n.path),l.query=n.query,l.fragment="",u=zF}}break;case UF:if("/"==i||"\\"==i){u=AF;break}n&&"file"==n.scheme&&!GF(Qw(Rw(r,d),""))&&(XF(n.path[0],!0)?Ow(l.path,n.path[0]):l.host=n.host),u=FF;continue;case AF:if(i==Zw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&XF(s))u=FF;else if(""==s){if(l.host="",t)return;u=wF}else{if(o=l.parseHost(s))return o;if("localhost"==l.host&&(l.host=""),t)return;s="",u=wF}continue}s+=i;break;case wF:if(l.isSpecial()){if(u=FF,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=Zw&&(u=FF,"/"!=i))continue}else l.fragment="",u=zF;else l.query="",u=BF;break;case FF:if(i==Zw||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(a=eF(a=s))||"%2e."===a||".%2e"===a||"%2e%2e"===a?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||Ow(l.path,"")):fF(s)?"/"==i||"\\"==i&&l.isSpecial()||Ow(l.path,""):("file"==l.scheme&&!l.path.length&&XF(s)&&(l.host&&(l.host=""),s=jw(s,0)+":"),Ow(l.path,s)),s="","file"==l.scheme&&(i==Zw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)_w(l.path);"?"==i?(l.query="",u=BF):"#"==i&&(l.fragment="",u=zF)}else s+=gF(i,pF);break;case TF:"?"==i?(l.query="",u=BF):"#"==i?(l.fragment="",u=zF):i!=Zw&&(l.path[0]+=gF(i,hF));break;case BF:t||"#"!=i?i!=Zw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":gF(i,hF)):(l.fragment="",u=zF);break;case zF:i!=Zw&&(l.fragment+=gF(i,bF))}d++}},parseHost:function(e){var t,n,r;if("["==jw(e,0)){if("]"!=jw(e,e.length-1))return"Invalid host";if(t=function(e){var t,n,r,i,c,o,a,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return jw(e,s)};if(":"==m()){if(":"!=jw(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&Mw(lF,m());)t=16*t+Tw(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!Mw(iF,m()))return;for(;Mw(iF,m());){if(c=Tw(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=t}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(o=u-d,u=7;0!=u&&o>0;)a=l[u],l[u--]=l[d+o-1],l[d+--o]=a;else if(8!=u)return;return l}($w(e,1,-1)),!t)return"Invalid host";this.host=t}else if(this.isSpecial()){if(e=Yw(e),Mw(uF,e))return"Invalid host";if(t=function(e){var t,n,r,i,c,o,a,l=qw(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==jw(i,0)&&(c=Mw(cF,i)?16:8,i=$w(i,8==c?1:2)),""===i)o=0;else{if(!Mw(10==c?aF:8==c?oF:lF,i))return e;o=Tw(i,c)}Ow(n,o)}for(r=0;r<t;r++)if(o=n[r],r==t-1){if(o>=zw(256,5-t))return null}else if(o>255)return null;for(a=Ew(n),r=0;r<n.length;r++)a+=n[r]*zw(256,3-r);return a}(e),null===t)return"Invalid host";this.host=t}else{if(Mw(dF,e))return"Invalid host";for(t="",n=vw(e),r=0;r<n.length;r++)t+=gF(n[r],hF);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Ww(yF,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&XF(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,o=e.path,a=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=ZF(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?o[0]:o.length?"/"+Qw(o,"/"):"",null!==a&&(u+="?"+a),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw Fw(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new MF(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+ZF(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(Jw(e)+":",VF)},getUsername:function(){return this.username},setUsername:function(e){var t=vw(Jw(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=gF(t[n],IF)}},getPassword:function(){return this.password},setPassword:function(e){var t=vw(Jw(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=gF(t[n],IF)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?ZF(e):ZF(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,NF)},getHostname:function(){var e=this.host;return null===e?"":ZF(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,HF)},getPort:function(){var e=this.port;return null===e?"":Jw(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=Jw(e))?this.port=null:this.parse(e,xF))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+Qw(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,wF))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=Jw(e))?this.query=null:("?"==jw(e,0)&&(e=$w(e,1)),this.query="",this.parse(e,BF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=Jw(e))?("#"==jw(e,0)&&(e=$w(e,1)),this.fragment="",this.parse(e,zF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var MF=function(e){var t=Vw(this,QF),n=Lw(arguments.length,1)>1?arguments[1]:void 0,r=xw(t,new jF(e,!1,n));pw||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},QF=MF.prototype,PF=function(e,t){return{get:function(){return kw(this)[e]()},set:t&&function(e){return kw(this)[t](e)},configurable:!0,enumerable:!0}};if(pw&&Gw(QF,{href:PF("serialize","setHref"),origin:PF("getOrigin"),protocol:PF("getProtocol","setProtocol"),username:PF("getUsername","setUsername"),password:PF("getPassword","setPassword"),host:PF("getHost","setHost"),hostname:PF("getHostname","setHostname"),port:PF("getPort","setPort"),pathname:PF("getPathname","setPathname"),search:PF("getSearch","setSearch"),searchParams:PF("getSearchParams"),hash:PF("getHash","setHash")}),fw(QF,"toJSON",(function(){return kw(this).serialize()}),{enumerable:!0}),fw(QF,"toString",(function(){return kw(this).serialize()}),{enumerable:!0}),ww){var EF=ww.createObjectURL,OF=ww.revokeObjectURL;EF&&fw(MF,"createObjectURL",yw(EF,ww)),OF&&fw(MF,"revokeObjectURL",yw(OF,ww))}Kw(MF,"URL"),bw({global:!0,forced:!Iw,sham:!pw},{URL:MF});var DF,_F=H;function qF(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}
|
|
1
|
+
var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function a(e,t,n,r,i,c,a){try{var o=e[c](a),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,i)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function o(e){a(c,r,i,o,l,"next",e)}function l(e){a(c,r,i,o,l,"throw",e)}o(void 0)}))}}function l(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}function Z(e){return Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Z(e)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function b(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function p(e,t,n){return p=b()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&h(i,n.prototype),i},p.apply(null,arguments)}function I(e){var t="function"==typeof Map?new Map:void 0;return I=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return p(e,arguments,Z(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),h(r,e)},I(e)}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return g(e)}function X(e){var t=b();return function(){var n,r=Z(e);if(t){var i=Z(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return y(this,n)}}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return c}(e,t)||V(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e){return function(e){if(Array.isArray(e))return W(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||V(e)||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.")}()}function V(e,t){if(e){if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(e,t):void 0}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=V(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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,a=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,c=e},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var v=function(e){return e&&e.Math==Math&&e},R=v("object"==("undefined"==typeof globalThis?"undefined":c(globalThis))&&globalThis)||v("object"==("undefined"==typeof window?"undefined":c(window))&&window)||v("object"==("undefined"==typeof self?"undefined":c(self))&&self)||v("object"==c(e)&&e)||function(){return this}()||Function("return this")(),S={},Y=function(e){try{return!!e()}catch(e){return!0}},J=!Y((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),K=!Y((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),N=K,L=Function.prototype.call,H=N?L.bind(L):function(){return L.apply(L,arguments)},x={},U={}.propertyIsEnumerable,k=Object.getOwnPropertyDescriptor,A=k&&!U.call({1:2},1);x.f=A?function(e){var t=k(this,e);return!!t&&t.enumerable}:U;var w,F,T=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},B=K,z=Function.prototype,j=z.bind,M=z.call,Q=B&&j.bind(M,M),P=B?function(e){return e&&Q(e)}:function(e){return e&&function(){return M.apply(e,arguments)}},E=P,D=E({}.toString),O=E("".slice),_=function(e){return O(D(e),8,-1)},q=P,$=Y,ee=_,te=R.Object,ne=q("".split),re=$((function(){return!te("z").propertyIsEnumerable(0)}))?function(e){return"String"==ee(e)?ne(e,""):te(e)}:te,ie=R.TypeError,ce=function(e){if(null==e)throw ie("Can't call method on "+e);return e},ae=re,oe=ce,le=function(e){return ae(oe(e))},ue=function(e){return"function"==typeof e},de=ue,se=function(e){return"object"==c(e)?null!==e:de(e)},me=R,Ze=ue,he=function(e){return Ze(e)?e:void 0},be=function(e,t){return arguments.length<2?he(me[e]):me[e]&&me[e][t]},pe=P({}.isPrototypeOf),Ie=be("navigator","userAgent")||"",ge=R,ye=Ie,Xe=ge.process,fe=ge.Deno,Ge=Xe&&Xe.versions||fe&&fe.version,Ve=Ge&&Ge.v8;Ve&&(F=(w=Ve.split("."))[0]>0&&w[0]<4?1:+(w[0]+w[1])),!F&&ye&&(!(w=ye.match(/Edge\/(\d+)/))||w[1]>=74)&&(w=ye.match(/Chrome\/(\d+)/))&&(F=+w[1]);var We=F,Ce=We,ve=Y,Re=!!Object.getOwnPropertySymbols&&!ve((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Ce&&Ce<41})),Se=Re&&!Symbol.sham&&"symbol"==c(Symbol.iterator),Ye=be,Je=ue,Ke=pe,Ne=Se,Le=R.Object,He=Ne?function(e){return"symbol"==c(e)}:function(e){var t=Ye("Symbol");return Je(t)&&Ke(t.prototype,Le(e))},xe=R.String,Ue=function(e){try{return xe(e)}catch(e){return"Object"}},ke=ue,Ae=Ue,we=R.TypeError,Fe=function(e){if(ke(e))return e;throw we(Ae(e)+" is not a function")},Te=Fe,Be=function(e,t){var n=e[t];return null==n?void 0:Te(n)},ze=H,je=ue,Me=se,Qe=R.TypeError,Pe=function(e,t){var n,r;if("string"===t&&je(n=e.toString)&&!Me(r=ze(n,e)))return r;if(je(n=e.valueOf)&&!Me(r=ze(n,e)))return r;if("string"!==t&&je(n=e.toString)&&!Me(r=ze(n,e)))return r;throw Qe("Can't convert object to primitive value")},Ee={exports:{}},De=R,Oe=Object.defineProperty,_e=function(e,t){try{Oe(De,e,{value:t,configurable:!0,writable:!0})}catch(n){De[e]=t}return t},qe=_e,$e=R["__core-js_shared__"]||qe("__core-js_shared__",{}),et=$e;(Ee.exports=function(e,t){return et[e]||(et[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.4",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE",source:"https://github.com/zloirock/core-js"});var tt=ce,nt=R.Object,rt=function(e){return nt(tt(e))},it=rt,ct=P({}.hasOwnProperty),at=Object.hasOwn||function(e,t){return ct(it(e),t)},ot=P,lt=0,ut=Math.random(),dt=ot(1..toString),st=function(e){return"Symbol("+(void 0===e?"":e)+")_"+dt(++lt+ut,36)},mt=R,Zt=Ee.exports,ht=at,bt=st,pt=Re,It=Se,gt=Zt("wks"),yt=mt.Symbol,Xt=yt&&yt.for,ft=It?yt:yt&&yt.withoutSetter||bt,Gt=function(e){if(!ht(gt,e)||!pt&&"string"!=typeof gt[e]){var t="Symbol."+e;pt&&ht(yt,e)?gt[e]=yt[e]:gt[e]=It&&Xt?Xt(t):ft(t)}return gt[e]},Vt=H,Wt=se,Ct=He,vt=Be,Rt=Pe,St=Gt,Yt=R.TypeError,Jt=St("toPrimitive"),Kt=function(e,t){if(!Wt(e)||Ct(e))return e;var n,r=vt(e,Jt);if(r){if(void 0===t&&(t="default"),n=Vt(r,e,t),!Wt(n)||Ct(n))return n;throw Yt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Rt(e,t)},Nt=Kt,Lt=He,Ht=function(e){var t=Nt(e,"string");return Lt(t)?t:t+""},xt=se,Ut=R.document,kt=xt(Ut)&&xt(Ut.createElement),At=function(e){return kt?Ut.createElement(e):{}},wt=At,Ft=!J&&!Y((function(){return 7!=Object.defineProperty(wt("div"),"a",{get:function(){return 7}}).a})),Tt=J,Bt=H,zt=x,jt=T,Mt=le,Qt=Ht,Pt=at,Et=Ft,Dt=Object.getOwnPropertyDescriptor;S.f=Tt?Dt:function(e,t){if(e=Mt(e),t=Qt(t),Et)try{return Dt(e,t)}catch(e){}if(Pt(e,t))return jt(!Bt(zt.f,e,t),e[t])};var Ot={},_t=J&&Y((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),qt=R,$t=se,en=qt.String,tn=qt.TypeError,nn=function(e){if($t(e))return e;throw tn(en(e)+" is not an object")},rn=J,cn=Ft,an=_t,on=nn,ln=Ht,un=R.TypeError,dn=Object.defineProperty,sn=Object.getOwnPropertyDescriptor;Ot.f=rn?an?function(e,t,n){if(on(e),t=ln(t),on(n),"function"==typeof e&&"prototype"===t&&"value"in n&&"writable"in n&&!n.writable){var r=sn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return dn(e,t,n)}:dn:function(e,t,n){if(on(e),t=ln(t),on(n),cn)try{return dn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw un("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var mn=Ot,Zn=T,hn=J?function(e,t,n){return mn.f(e,t,Zn(1,n))}:function(e,t,n){return e[t]=n,e},bn={exports:{}},pn=J,In=at,gn=Function.prototype,yn=pn&&Object.getOwnPropertyDescriptor,Xn=In(gn,"name"),fn={EXISTS:Xn,PROPER:Xn&&"something"===function(){}.name,CONFIGURABLE:Xn&&(!pn||pn&&yn(gn,"name").configurable)},Gn=ue,Vn=$e,Wn=P(Function.toString);Gn(Vn.inspectSource)||(Vn.inspectSource=function(e){return Wn(e)});var Cn,vn,Rn,Sn=Vn.inspectSource,Yn=ue,Jn=Sn,Kn=R.WeakMap,Nn=Yn(Kn)&&/native code/.test(Jn(Kn)),Ln=Ee.exports,Hn=st,xn=Ln("keys"),Un=function(e){return xn[e]||(xn[e]=Hn(e))},kn={},An=Nn,wn=R,Fn=P,Tn=se,Bn=hn,zn=at,jn=$e,Mn=Un,Qn=kn,Pn=wn.TypeError,En=wn.WeakMap;if(An||jn.state){var Dn=jn.state||(jn.state=new En),On=Fn(Dn.get),_n=Fn(Dn.has),qn=Fn(Dn.set);Cn=function(e,t){if(_n(Dn,e))throw new Pn("Object already initialized");return t.facade=e,qn(Dn,e,t),t},vn=function(e){return On(Dn,e)||{}},Rn=function(e){return _n(Dn,e)}}else{var $n=Mn("state");Qn[$n]=!0,Cn=function(e,t){if(zn(e,$n))throw new Pn("Object already initialized");return t.facade=e,Bn(e,$n,t),t},vn=function(e){return zn(e,$n)?e[$n]:{}},Rn=function(e){return zn(e,$n)}}var er={set:Cn,get:vn,has:Rn,enforce:function(e){return Rn(e)?vn(e):Cn(e,{})},getterFor:function(e){return function(t){var n;if(!Tn(t)||(n=vn(t)).type!==e)throw Pn("Incompatible receiver, "+e+" required");return n}}},tr=Y,nr=ue,rr=at,ir=Ot.f,cr=fn.CONFIGURABLE,ar=Sn,or=er.enforce,lr=er.get,ur=!tr((function(){return 8!==ir((function(){}),"length",{value:8}).length})),dr=String(String).split("String"),sr=bn.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!rr(e,"name")||cr&&e.name!==t)&&ir(e,"name",{value:t,configurable:!0}),ur&&n&&rr(n,"arity")&&e.length!==n.arity&&ir(e,"length",{value:n.arity});var r=or(e);return rr(r,"source")||(r.source=dr.join("string"==typeof t?t:"")),e};Function.prototype.toString=sr((function(){return nr(this)&&lr(this).source||ar(this)}),"toString");var mr=R,Zr=ue,hr=hn,br=bn.exports,pr=_e,Ir=function(e,t,n,r){var i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet,o=r&&void 0!==r.name?r.name:t;return Zr(n)&&br(n,o,r),e===mr?(c?e[t]=n:pr(t,n),e):(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:hr(e,t,n),e)},gr={},yr=Math.ceil,Xr=Math.floor,fr=function(e){var t=+e;return t!=t||0===t?0:(t>0?Xr:yr)(t)},Gr=fr,Vr=Math.max,Wr=Math.min,Cr=function(e,t){var n=Gr(e);return n<0?Vr(n+t,0):Wr(n,t)},vr=fr,Rr=Math.min,Sr=function(e){return e>0?Rr(vr(e),9007199254740991):0},Yr=Sr,Jr=function(e){return Yr(e.length)},Kr=le,Nr=Cr,Lr=Jr,Hr=function(e){return function(t,n,r){var i,c=Kr(t),a=Lr(c),o=Nr(r,a);if(e&&n!=n){for(;a>o;)if((i=c[o++])!=i)return!0}else for(;a>o;o++)if((e||o in c)&&c[o]===n)return e||o||0;return!e&&-1}},xr={includes:Hr(!0),indexOf:Hr(!1)},Ur=at,kr=le,Ar=xr.indexOf,wr=kn,Fr=P([].push),Tr=function(e,t){var n,r=kr(e),i=0,c=[];for(n in r)!Ur(wr,n)&&Ur(r,n)&&Fr(c,n);for(;t.length>i;)Ur(r,n=t[i++])&&(~Ar(c,n)||Fr(c,n));return c},Br=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],zr=Tr,jr=Br.concat("length","prototype");gr.f=Object.getOwnPropertyNames||function(e){return zr(e,jr)};var Mr={};Mr.f=Object.getOwnPropertySymbols;var Qr=be,Pr=gr,Er=Mr,Dr=nn,Or=P([].concat),_r=Qr("Reflect","ownKeys")||function(e){var t=Pr.f(Dr(e)),n=Er.f;return n?Or(t,n(e)):t},qr=at,$r=_r,ei=S,ti=Ot,ni=function(e,t,n){for(var r=$r(t),i=ti.f,c=ei.f,a=0;a<r.length;a++){var o=r[a];qr(e,o)||n&&qr(n,o)||i(e,o,c(t,o))}},ri=Y,ii=ue,ci=/#|\.prototype\./,ai=function(e,t){var n=li[oi(e)];return n==di||n!=ui&&(ii(t)?ri(t):!!t)},oi=ai.normalize=function(e){return String(e).replace(ci,".").toLowerCase()},li=ai.data={},ui=ai.NATIVE="N",di=ai.POLYFILL="P",si=ai,mi=R,Zi=S.f,hi=hn,bi=Ir,pi=_e,Ii=ni,gi=si,yi=function(e,t){var n,r,i,a,o,l=e.target,u=e.global,d=e.stat;if(n=u?mi:d?mi[l]||pi(l,{}):(mi[l]||{}).prototype)for(r in t){if(a=t[r],i=e.noTargetGet?(o=Zi(n,r))&&o.value:n[r],!gi(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(c(a)==c(i))continue;Ii(a,i)}(e.sham||i&&i.sham)&&hi(a,"sham",!0),bi(n,r,a,e)}},Xi={};Xi[Gt("toStringTag")]="z";var fi="[object z]"===String(Xi),Gi=R,Vi=fi,Wi=ue,Ci=_,vi=Gt("toStringTag"),Ri=Gi.Object,Si="Arguments"==Ci(function(){return arguments}()),Yi=Vi?Ci:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Ri(e),vi))?n:Si?Ci(t):"Object"==(r=Ci(t))&&Wi(t.callee)?"Arguments":r},Ji=Yi,Ki=R.String,Ni=function(e){if("Symbol"===Ji(e))throw TypeError("Cannot convert a Symbol value to a string");return Ki(e)},Li={},Hi=Tr,xi=Br,Ui=Object.keys||function(e){return Hi(e,xi)},ki=J,Ai=_t,wi=Ot,Fi=nn,Ti=le,Bi=Ui;Li.f=ki&&!Ai?Object.defineProperties:function(e,t){Fi(e);for(var n,r=Ti(t),i=Bi(t),c=i.length,a=0;c>a;)wi.f(e,n=i[a++],r[n]);return e};var zi,ji=be("document","documentElement"),Mi=nn,Qi=Li,Pi=Br,Ei=kn,Di=ji,Oi=At,_i=Un("IE_PROTO"),qi=function(){},$i=function(e){return"<script>"+e+"<\/script>"},ec=function(e){e.write($i("")),e.close();var t=e.parentWindow.Object;return e=null,t},tc=function(){try{zi=new ActiveXObject("htmlfile")}catch(e){}var e,t;tc="undefined"!=typeof document?document.domain&&zi?ec(zi):((t=Oi("iframe")).style.display="none",Di.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write($i("document.F=Object")),e.close(),e.F):ec(zi);for(var n=Pi.length;n--;)delete tc.prototype[Pi[n]];return tc()};Ei[_i]=!0;var nc=Object.create||function(e,t){var n;return null!==e?(qi.prototype=Mi(e),n=new qi,qi.prototype=null,n[_i]=e):n=tc(),void 0===t?n:Qi.f(n,t)},rc={},ic=Ht,cc=Ot,ac=T,oc=function(e,t,n){var r=ic(t);r in e?cc.f(e,r,ac(0,n)):e[r]=n},lc=Cr,uc=Jr,dc=oc,sc=R.Array,mc=Math.max,Zc=function(e,t,n){for(var r=uc(e),i=lc(t,r),c=lc(void 0===n?r:n,r),a=sc(mc(c-i,0)),o=0;i<c;i++,o++)dc(a,o,e[i]);return a.length=o,a},hc=_,bc=le,pc=gr.f,Ic=Zc,gc="object"==("undefined"==typeof window?"undefined":c(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];rc.f=function(e){return gc&&"Window"==hc(e)?function(e){try{return pc(e)}catch(e){return Ic(gc)}}(e):pc(bc(e))};var yc={},Xc=Gt;yc.f=Xc;var fc=R,Gc=at,Vc=yc,Wc=Ot.f,Cc=function(e){var t=fc.Symbol||(fc.Symbol={});Gc(t,e)||Wc(t,e,{value:Vc.f(e)})},vc=H,Rc=be,Sc=Gt,Yc=Ir,Jc=function(){var e=Rc("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=Sc("toPrimitive");t&&!t[r]&&Yc(t,r,(function(e){return vc(n,this)}),{arity:1})},Kc=Ot.f,Nc=at,Lc=Gt("toStringTag"),Hc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Nc(e,Lc)&&Kc(e,Lc,{configurable:!0,value:t})},xc=Fe,Uc=K,kc=P(P.bind),Ac=function(e,t){return xc(e),void 0===t?e:Uc?kc(e,t):function(){return e.apply(t,arguments)}},wc=_,Fc=Array.isArray||function(e){return"Array"==wc(e)},Tc=P,Bc=Y,zc=ue,jc=Yi,Mc=Sn,Qc=function(){},Pc=[],Ec=be("Reflect","construct"),Dc=/^\s*(?:class|function)\b/,Oc=Tc(Dc.exec),_c=!Dc.exec(Qc),qc=function(e){if(!zc(e))return!1;try{return Ec(Qc,Pc,e),!0}catch(e){return!1}},$c=function(e){if(!zc(e))return!1;switch(jc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return _c||!!Oc(Dc,Mc(e))}catch(e){return!0}};$c.sham=!0;var ea=!Ec||Bc((function(){var e;return qc(qc.call)||!qc(Object)||!qc((function(){e=!0}))||e}))?$c:qc,ta=R,na=Fc,ra=ea,ia=se,ca=Gt("species"),aa=ta.Array,oa=function(e){var t;return na(e)&&(t=e.constructor,(ra(t)&&(t===aa||na(t.prototype))||ia(t)&&null===(t=t[ca]))&&(t=void 0)),void 0===t?aa:t},la=function(e,t){return new(oa(e))(0===t?0:t)},ua=Ac,da=re,sa=rt,ma=Jr,Za=la,ha=P([].push),ba=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,a=7==e,o=5==e||c;return function(l,u,d,s){for(var m,Z,h=sa(l),b=da(h),p=ua(u,d),I=ma(b),g=0,y=s||Za,X=t?y(l,I):n||a?y(l,0):void 0;I>g;g++)if((o||g in b)&&(Z=p(m=b[g],g,h),e))if(t)X[g]=Z;else if(Z)switch(e){case 3:return!0;case 5:return m;case 6:return g;case 2:ha(X,m)}else switch(e){case 4:return!1;case 7:ha(X,m)}return c?-1:r||i?i:X}},pa={forEach:ba(0),map:ba(1),filter:ba(2),some:ba(3),every:ba(4),find:ba(5),findIndex:ba(6),filterReject:ba(7)},Ia=yi,ga=R,ya=H,Xa=P,fa=J,Ga=Re,Va=Y,Wa=at,Ca=pe,va=nn,Ra=le,Sa=Ht,Ya=Ni,Ja=T,Ka=nc,Na=Ui,La=gr,Ha=rc,xa=Mr,Ua=S,ka=Ot,Aa=Li,wa=x,Fa=Ir,Ta=Ee.exports,Ba=kn,za=st,ja=Gt,Ma=yc,Qa=Cc,Pa=Jc,Ea=Hc,Da=er,Oa=pa.forEach,_a=Un("hidden"),qa=Da.set,$a=Da.getterFor("Symbol"),eo=Object.prototype,to=ga.Symbol,no=to&&to.prototype,ro=ga.TypeError,io=ga.QObject,co=Ua.f,ao=ka.f,oo=Ha.f,lo=wa.f,uo=Xa([].push),so=Ta("symbols"),mo=Ta("op-symbols"),Zo=Ta("wks"),ho=!io||!io.prototype||!io.prototype.findChild,bo=fa&&Va((function(){return 7!=Ka(ao({},"a",{get:function(){return ao(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=co(eo,t);r&&delete eo[t],ao(e,t,n),r&&e!==eo&&ao(eo,t,r)}:ao,po=function(e,t){var n=so[e]=Ka(no);return qa(n,{type:"Symbol",tag:e,description:t}),fa||(n.description=t),n},Io=function(e,t,n){e===eo&&Io(mo,t,n),va(e);var r=Sa(t);return va(n),Wa(so,r)?(n.enumerable?(Wa(e,_a)&&e[_a][r]&&(e[_a][r]=!1),n=Ka(n,{enumerable:Ja(0,!1)})):(Wa(e,_a)||ao(e,_a,Ja(1,{})),e[_a][r]=!0),bo(e,r,n)):ao(e,r,n)},go=function(e,t){va(e);var n=Ra(t),r=Na(n).concat(Go(n));return Oa(r,(function(t){fa&&!ya(yo,n,t)||Io(e,t,n[t])})),e},yo=function(e){var t=Sa(e),n=ya(lo,this,t);return!(this===eo&&Wa(so,t)&&!Wa(mo,t))&&(!(n||!Wa(this,t)||!Wa(so,t)||Wa(this,_a)&&this[_a][t])||n)},Xo=function(e,t){var n=Ra(e),r=Sa(t);if(n!==eo||!Wa(so,r)||Wa(mo,r)){var i=co(n,r);return!i||!Wa(so,r)||Wa(n,_a)&&n[_a][r]||(i.enumerable=!0),i}},fo=function(e){var t=oo(Ra(e)),n=[];return Oa(t,(function(e){Wa(so,e)||Wa(Ba,e)||uo(n,e)})),n},Go=function(e){var t=e===eo,n=oo(t?mo:Ra(e)),r=[];return Oa(n,(function(e){!Wa(so,e)||t&&!Wa(eo,e)||uo(r,so[e])})),r};Ga||(Fa(no=(to=function(){if(Ca(no,this))throw ro("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Ya(arguments[0]):void 0,t=za(e),n=function e(n){this===eo&&ya(e,mo,n),Wa(this,_a)&&Wa(this[_a],t)&&(this[_a][t]=!1),bo(this,t,Ja(1,n))};return fa&&ho&&bo(eo,t,{configurable:!0,set:n}),po(t,e)}).prototype,"toString",(function(){return $a(this).tag})),Fa(to,"withoutSetter",(function(e){return po(za(e),e)})),wa.f=yo,ka.f=Io,Aa.f=go,Ua.f=Xo,La.f=Ha.f=fo,xa.f=Go,Ma.f=function(e){return po(ja(e),e)},fa&&(ao(no,"description",{configurable:!0,get:function(){return $a(this).description}}),Fa(eo,"propertyIsEnumerable",yo,{unsafe:!0}))),Ia({global:!0,wrap:!0,forced:!Ga,sham:!Ga},{Symbol:to}),Oa(Na(Zo),(function(e){Qa(e)})),Ia({target:"Symbol",stat:!0,forced:!Ga},{useSetter:function(){ho=!0},useSimple:function(){ho=!1}}),Ia({target:"Object",stat:!0,forced:!Ga,sham:!fa},{create:function(e,t){return void 0===t?Ka(e):go(Ka(e),t)},defineProperty:Io,defineProperties:go,getOwnPropertyDescriptor:Xo}),Ia({target:"Object",stat:!0,forced:!Ga},{getOwnPropertyNames:fo}),Pa(),Ea(to,"Symbol"),Ba[_a]=!0;var Vo=Re&&!!Symbol.for&&!!Symbol.keyFor,Wo=yi,Co=be,vo=at,Ro=Ni,So=Ee.exports,Yo=Vo,Jo=So("string-to-symbol-registry"),Ko=So("symbol-to-string-registry");Wo({target:"Symbol",stat:!0,forced:!Yo},{for:function(e){var t=Ro(e);if(vo(Jo,t))return Jo[t];var n=Co("Symbol")(t);return Jo[t]=n,Ko[n]=t,n}});var No=yi,Lo=at,Ho=He,xo=Ue,Uo=Vo,ko=(0,Ee.exports)("symbol-to-string-registry");No({target:"Symbol",stat:!0,forced:!Uo},{keyFor:function(e){if(!Ho(e))throw TypeError(xo(e)+" is not a symbol");if(Lo(ko,e))return ko[e]}});var Ao=K,wo=Function.prototype,Fo=wo.apply,To=wo.call,Bo="object"==("undefined"==typeof Reflect?"undefined":c(Reflect))&&Reflect.apply||(Ao?To.bind(Fo):function(){return To.apply(Fo,arguments)}),zo=P([].slice),jo=yi,Mo=be,Qo=Bo,Po=H,Eo=P,Do=Y,Oo=Fc,_o=ue,qo=se,$o=He,el=zo,tl=Re,nl=Mo("JSON","stringify"),rl=Eo(/./.exec),il=Eo("".charAt),cl=Eo("".charCodeAt),al=Eo("".replace),ol=Eo(1..toString),ll=/[\uD800-\uDFFF]/g,ul=/^[\uD800-\uDBFF]$/,dl=/^[\uDC00-\uDFFF]$/,sl=!tl||Do((function(){var e=Mo("Symbol")();return"[null]"!=nl([e])||"{}"!=nl({a:e})||"{}"!=nl(Object(e))})),ml=Do((function(){return'"\\udf06\\ud834"'!==nl("\udf06\ud834")||'"\\udead"'!==nl("\udead")})),Zl=function(e,t){var n=el(arguments),r=t;if((qo(t)||void 0!==e)&&!$o(e))return Oo(t)||(t=function(e,t){if(_o(r)&&(t=Po(r,this,e,t)),!$o(t))return t}),n[1]=t,Qo(nl,null,n)},hl=function(e,t,n){var r=il(n,t-1),i=il(n,t+1);return rl(ul,e)&&!rl(dl,i)||rl(dl,e)&&!rl(ul,r)?"\\u"+ol(cl(e,0),16):e};nl&&jo({target:"JSON",stat:!0,arity:3,forced:sl||ml},{stringify:function(e,t,n){var r=el(arguments),i=Qo(sl?Zl:nl,null,r);return ml&&"string"==typeof i?al(i,ll,hl):i}});var bl=Mr,pl=rt;yi({target:"Object",stat:!0,forced:!Re||Y((function(){bl.f(1)}))},{getOwnPropertySymbols:function(e){var t=bl.f;return t?t(pl(e)):[]}});var Il=yi,gl=J,yl=R,Xl=P,fl=at,Gl=ue,Vl=pe,Wl=Ni,Cl=Ot.f,vl=ni,Rl=yl.Symbol,Sl=Rl&&Rl.prototype;if(gl&&Gl(Rl)&&(!("description"in Sl)||void 0!==Rl().description)){var Yl={},Jl=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Wl(arguments[0]),t=Vl(Sl,this)?new Rl(e):void 0===e?Rl():Rl(e);return""===e&&(Yl[t]=!0),t};vl(Jl,Rl),Jl.prototype=Sl,Sl.constructor=Jl;var Kl="Symbol(test)"==String(Rl("test")),Nl=Xl(Sl.toString),Ll=Xl(Sl.valueOf),Hl=/^Symbol\((.*)\)[^)]+$/,xl=Xl("".replace),Ul=Xl("".slice);Cl(Sl,"description",{configurable:!0,get:function(){var e=Ll(this),t=Nl(e);if(fl(Yl,e))return"";var n=Kl?Ul(t,7,-1):xl(t,Hl,"$1");return""===n?void 0:n}}),Il({global:!0,forced:!0},{Symbol:Jl})}Cc("asyncIterator"),Cc("hasInstance"),Cc("isConcatSpreadable"),Cc("iterator"),Cc("match"),Cc("matchAll"),Cc("replace"),Cc("search"),Cc("species"),Cc("split");var kl=Jc;Cc("toPrimitive"),kl();var Al=be,wl=Hc;Cc("toStringTag"),wl(Al("Symbol"),"Symbol"),Cc("unscopables");var Fl=Y,Tl=We,Bl=Gt("species"),zl=function(e){return Tl>=51||!Fl((function(){var t=[];return(t.constructor={})[Bl]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},jl=yi,Ml=R,Ql=Y,Pl=Fc,El=se,Dl=rt,Ol=Jr,_l=oc,ql=la,$l=zl,eu=We,tu=Gt("isConcatSpreadable"),nu=Ml.TypeError,ru=eu>=51||!Ql((function(){var e=[];return e[tu]=!1,e.concat()[0]!==e})),iu=$l("concat"),cu=function(e){if(!El(e))return!1;var t=e[tu];return void 0!==t?!!t:Pl(e)};jl({target:"Array",proto:!0,arity:1,forced:!ru||!iu},{concat:function(e){var t,n,r,i,c,a=Dl(this),o=ql(a,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(cu(c=-1===t?a:arguments[t])){if(l+(i=Ol(c))>9007199254740991)throw nu("Maximum allowed index exceeded");for(n=0;n<i;n++,l++)n in c&&_l(o,l,c[n])}else{if(l>=9007199254740991)throw nu("Maximum allowed index exceeded");_l(o,l++,c)}return o.length=l,o}});var au=rt,ou=Cr,lu=Jr,uu=Math.min,du=[].copyWithin||function(e,t){var n=au(this),r=lu(n),i=ou(e,r),c=ou(t,r),a=arguments.length>2?arguments[2]:void 0,o=uu((void 0===a?r:ou(a,r))-c,r-i),l=1;for(c<i&&i<c+o&&(l=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:delete n[i],i+=l,c+=l;return n},su=nc,mu=Ot,Zu=Gt("unscopables"),hu=Array.prototype;null==hu[Zu]&&mu.f(hu,Zu,{configurable:!0,value:su(null)});var bu=function(e){hu[Zu][e]=!0},pu=bu;yi({target:"Array",proto:!0},{copyWithin:du}),pu("copyWithin");var Iu=rt,gu=Cr,yu=Jr,Xu=function(e){for(var t=Iu(this),n=yu(t),r=arguments.length,i=gu(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:gu(c,n);a>i;)t[i++]=e;return t},fu=bu;yi({target:"Array",proto:!0},{fill:Xu}),fu("fill");var Gu=pa.filter;yi({target:"Array",proto:!0,forced:!zl("filter")},{filter:function(e){return Gu(this,e,arguments.length>1?arguments[1]:void 0)}});var Vu=yi,Wu=pa.find,Cu=bu,vu=!0;"find"in[]&&Array(1).find((function(){vu=!1})),Vu({target:"Array",proto:!0,forced:vu},{find:function(e){return Wu(this,e,arguments.length>1?arguments[1]:void 0)}}),Cu("find");var Ru=yi,Su=pa.findIndex,Yu=bu,Ju=!0;"findIndex"in[]&&Array(1).findIndex((function(){Ju=!1})),Ru({target:"Array",proto:!0,forced:Ju},{findIndex:function(e){return Su(this,e,arguments.length>1?arguments[1]:void 0)}}),Yu("findIndex");var Ku=Fc,Nu=Jr,Lu=Ac,Hu=R.TypeError,xu=function e(t,n,r,i,c,a,o,l){for(var u,d=c,s=0,m=!!o&&Lu(o,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],a>0&&Ku(u))d=e(t,n,u,Nu(u),d,a-1)-1;else{if(d>=9007199254740991)throw Hu("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Uu=xu,ku=rt,Au=Jr,wu=fr,Fu=la;yi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=ku(this),n=Au(t),r=Fu(t,0);return r.length=Uu(r,t,t,n,0,void 0===e?1:wu(e)),r}});var Tu=xu,Bu=Fe,zu=rt,ju=Jr,Mu=la;yi({target:"Array",proto:!0},{flatMap:function(e){var t,n=zu(this),r=ju(n);return Bu(e),(t=Mu(n,0)).length=Tu(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var Qu=H,Pu=nn,Eu=Be,Du=function(e,t,n){var r,i;Pu(e);try{if(!(r=Eu(e,"return"))){if("throw"===t)throw n;return n}r=Qu(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return Pu(r),n},Ou=nn,_u=Du,qu={},$u=qu,ed=Gt("iterator"),td=Array.prototype,nd=function(e){return void 0!==e&&($u.Array===e||td[ed]===e)},rd=Yi,id=Be,cd=qu,ad=Gt("iterator"),od=function(e){if(null!=e)return id(e,ad)||id(e,"@@iterator")||cd[rd(e)]},ld=H,ud=Fe,dd=nn,sd=Ue,md=od,Zd=R.TypeError,hd=function(e,t){var n=arguments.length<2?md(e):t;if(ud(n))return dd(ld(n,e));throw Zd(sd(e)+" is not iterable")},bd=Ac,pd=H,Id=rt,gd=function(e,t,n,r){try{return r?t(Ou(n)[0],n[1]):t(n)}catch(t){_u(e,"throw",t)}},yd=nd,Xd=ea,fd=Jr,Gd=oc,Vd=hd,Wd=od,Cd=R.Array,vd=function(e){var t=Id(e),n=Xd(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=bd(i,r>2?arguments[2]:void 0));var a,o,l,u,d,s,m=Wd(t),Z=0;if(!m||this==Cd&&yd(m))for(a=fd(t),o=n?new this(a):Cd(a);a>Z;Z++)s=c?i(t[Z],Z):t[Z],Gd(o,Z,s);else for(d=(u=Vd(t,m)).next,o=n?new this:[];!(l=pd(d,u)).done;Z++)s=c?gd(u,i,[l.value,Z],!0):l.value,Gd(o,Z,s);return o.length=Z,o},Rd=Gt("iterator"),Sd=!1;try{var Yd=0,Jd={next:function(){return{done:!!Yd++}},return:function(){Sd=!0}};Jd[Rd]=function(){return this},Array.from(Jd,(function(){throw 2}))}catch(e){}var Kd=function(e,t){if(!t&&!Sd)return!1;var n=!1;try{var r={};r[Rd]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Nd=vd;yi({target:"Array",stat:!0,forced:!Kd((function(e){Array.from(e)}))},{from:Nd});var Ld=xr.includes,Hd=bu;yi({target:"Array",proto:!0,forced:Y((function(){return!Array(1).includes()}))},{includes:function(e){return Ld(this,e,arguments.length>1?arguments[1]:void 0)}}),Hd("includes");var xd,Ud,kd,Ad=!Y((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),wd=R,Fd=at,Td=ue,Bd=rt,zd=Ad,jd=Un("IE_PROTO"),Md=wd.Object,Qd=Md.prototype,Pd=zd?Md.getPrototypeOf:function(e){var t=Bd(e);if(Fd(t,jd))return t[jd];var n=t.constructor;return Td(n)&&t instanceof n?n.prototype:t instanceof Md?Qd:null},Ed=Y,Dd=ue,Od=Pd,_d=Ir,qd=Gt("iterator"),$d=!1;[].keys&&("next"in(kd=[].keys())?(Ud=Od(Od(kd)))!==Object.prototype&&(xd=Ud):$d=!0);var es=null==xd||Ed((function(){var e={};return xd[qd].call(e)!==e}));es&&(xd={}),Dd(xd[qd])||_d(xd,qd,(function(){return this}));var ts={IteratorPrototype:xd,BUGGY_SAFARI_ITERATORS:$d},ns=ts.IteratorPrototype,rs=nc,is=T,cs=Hc,as=qu,os=function(){return this},ls=function(e,t,n,r){var i=t+" Iterator";return e.prototype=rs(ns,{next:is(+!r,n)}),cs(e,i,!1),as[i]=os,e},us=R,ds=ue,ss=us.String,ms=us.TypeError,Zs=function(e){if("object"==c(e)||ds(e))return e;throw ms("Can't set "+ss(e)+" as a prototype")},hs=P,bs=nn,ps=Zs,Is=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=hs(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return bs(n),ps(r),t?e(n,r):n.__proto__=r,n}}():void 0),gs=yi,ys=H,Xs=ue,fs=ls,Gs=Pd,Vs=Is,Ws=Hc,Cs=hn,vs=Ir,Rs=qu,Ss=fn.PROPER,Ys=fn.CONFIGURABLE,Js=ts.IteratorPrototype,Ks=ts.BUGGY_SAFARI_ITERATORS,Ns=Gt("iterator"),Ls=function(){return this},Hs=function(e,t,n,r,i,c,a){fs(n,t,r);var o,l,u,d=function(e){if(e===i&&b)return b;if(!Ks&&e in Z)return Z[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},s=t+" Iterator",m=!1,Z=e.prototype,h=Z[Ns]||Z["@@iterator"]||i&&Z[i],b=!Ks&&h||d(i),p="Array"==t&&Z.entries||h;if(p&&(o=Gs(p.call(new e)))!==Object.prototype&&o.next&&(Gs(o)!==Js&&(Vs?Vs(o,Js):Xs(o[Ns])||vs(o,Ns,Ls)),Ws(o,s,!0)),Ss&&"values"==i&&h&&"values"!==h.name&&(Ys?Cs(Z,"name","values"):(m=!0,b=function(){return ys(h,this)})),i)if(l={values:d("values"),keys:c?b:d("keys"),entries:d("entries")},a)for(u in l)(Ks||m||!(u in Z))&&vs(Z,u,l[u]);else gs({target:t,proto:!0,forced:Ks||m},l);return Z[Ns]!==b&&vs(Z,Ns,b,{name:i}),Rs[t]=b,l},xs=le,Us=bu,ks=qu,As=er,ws=Ot.f,Fs=Hs,Ts=J,Bs=As.set,zs=As.getterFor("Array Iterator"),js=Fs(Array,"Array",(function(e,t){Bs(this,{type:"Array Iterator",target:xs(e),index:0,kind:t})}),(function(){var e=zs(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),Ms=ks.Arguments=ks.Array;if(Us("keys"),Us("values"),Us("entries"),Ts&&"values"!==Ms.name)try{ws(Ms,"name",{value:"values"})}catch(e){}var Qs=Y,Ps=function(e,t){var n=[][e];return!!n&&Qs((function(){n.call(null,t||function(){return 1},1)}))},Es=yi,Ds=re,Os=le,_s=Ps,qs=P([].join),$s=Ds!=Object,em=_s("join",",");Es({target:"Array",proto:!0,forced:$s||!em},{join:function(e){return qs(Os(this),void 0===e?",":e)}});var tm=pa.map;yi({target:"Array",proto:!0,forced:!zl("map")},{map:function(e){return tm(this,e,arguments.length>1?arguments[1]:void 0)}});var nm=yi,rm=Y,im=ea,cm=oc,am=R.Array;nm({target:"Array",stat:!0,forced:rm((function(){function e(){}return!(am.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(im(this)?this:am)(t);t>e;)cm(n,e,arguments[e++]);return n.length=t,n}});var om=yi,lm=R,um=Fc,dm=ea,sm=se,mm=Cr,Zm=Jr,hm=le,bm=oc,pm=Gt,Im=zo,gm=zl("slice"),ym=pm("species"),Xm=lm.Array,fm=Math.max;om({target:"Array",proto:!0,forced:!gm},{slice:function(e,t){var n,r,i,c=hm(this),a=Zm(c),o=mm(e,a),l=mm(void 0===t?a:t,a);if(um(c)&&(n=c.constructor,(dm(n)&&(n===Xm||um(n.prototype))||sm(n)&&null===(n=n[ym]))&&(n=void 0),n===Xm||void 0===n))return Im(c,o,l);for(r=new(void 0===n?Xm:n)(fm(l-o,0)),i=0;o<l;o++,i++)o in c&&bm(r,i,c[o]);return r.length=i,r}});var Gm=Zc,Vm=Math.floor,Wm=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},Cm=function(e,t,n,r){for(var i=t.length,c=n.length,a=0,o=0;a<i||o<c;)e[a+o]=a<i&&o<c?r(t[a],n[o])<=0?t[a++]:n[o++]:a<i?t[a++]:n[o++];return e},vm=function e(t,n){var r=t.length,i=Vm(r/2);return r<8?Wm(t,n):Cm(t,e(Gm(t,0,i),n),e(Gm(t,i),n),n)},Rm=Ie.match(/firefox\/(\d+)/i),Sm=!!Rm&&+Rm[1],Ym=/MSIE|Trident/.test(Ie),Jm=Ie.match(/AppleWebKit\/(\d+)\./),Km=!!Jm&&+Jm[1],Nm=yi,Lm=P,Hm=Fe,xm=rt,Um=Jr,km=Ni,Am=Y,wm=vm,Fm=Ps,Tm=Sm,Bm=Ym,zm=We,jm=Km,Mm=[],Qm=Lm(Mm.sort),Pm=Lm(Mm.push),Em=Am((function(){Mm.sort(void 0)})),Dm=Am((function(){Mm.sort(null)})),Om=Fm("sort"),_m=!Am((function(){if(zm)return zm<70;if(!(Tm&&Tm>3)){if(Bm)return!0;if(jm)return jm<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)Mm.push({k:t+r,v:n})}for(Mm.sort((function(e,t){return t.v-e.v})),r=0;r<Mm.length;r++)t=Mm[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Nm({target:"Array",proto:!0,forced:Em||!Dm||!Om||!_m},{sort:function(e){void 0!==e&&Hm(e);var t=xm(this);if(_m)return void 0===e?Qm(t):Qm(t,e);var n,r,i=[],c=Um(t);for(r=0;r<c;r++)r in t&&Pm(i,t[r]);for(wm(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:km(t)>km(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var qm=be,$m=Ot,eZ=J,tZ=Gt("species"),nZ=function(e){var t=qm(e),n=$m.f;eZ&&t&&!t[tZ]&&n(t,tZ,{configurable:!0,get:function(){return this}})};nZ("Array");var rZ=yi,iZ=R,cZ=Cr,aZ=fr,oZ=Jr,lZ=rt,uZ=la,dZ=oc,sZ=zl("splice"),mZ=iZ.TypeError,ZZ=Math.max,hZ=Math.min;rZ({target:"Array",proto:!0,forced:!sZ},{splice:function(e,t){var n,r,i,c,a,o,l=lZ(this),u=oZ(l),d=cZ(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=hZ(ZZ(aZ(t),0),u-d)),u+n-r>9007199254740991)throw mZ("Maximum allowed length exceeded");for(i=uZ(l,r),c=0;c<r;c++)(a=d+c)in l&&dZ(i,c,l[a]);if(i.length=r,n<r){for(c=d;c<u-r;c++)o=c+n,(a=c+r)in l?l[o]=l[a]:delete l[o];for(c=u;c>u-r+n;c--)delete l[c-1]}else if(n>r)for(c=u-r;c>d;c--)o=c+n-1,(a=c+r-1)in l?l[o]=l[a]:delete l[o];for(c=0;c<n;c++)l[c+d]=arguments[c+2];return l.length=u-r+n,i}}),bu("flat"),bu("flatMap");var bZ="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,pZ=Ir,IZ=function(e,t,n){for(var r in t)pZ(e,r,t[r],n);return e},gZ=pe,yZ=R.TypeError,XZ=function(e,t){if(gZ(t,e))return e;throw yZ("Incorrect invocation")},fZ=fr,GZ=Sr,VZ=R.RangeError,WZ=function(e){if(void 0===e)return 0;var t=fZ(e),n=GZ(t);if(t!==n)throw VZ("Wrong length or index");return n},CZ=R.Array,vZ=Math.abs,RZ=Math.pow,SZ=Math.floor,YZ=Math.log,JZ=Math.LN2,KZ={pack:function(e,t,n){var r,i,c,a=CZ(n),o=8*n-t-1,l=(1<<o)-1,u=l>>1,d=23===t?RZ(2,-24)-RZ(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=vZ(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=SZ(YZ(e)/JZ),e*(c=RZ(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*RZ(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*RZ(2,t),r+=u):(i=e*RZ(2,u-1)*RZ(2,t),r=0));t>=8;)a[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,o+=t;o>0;)a[m++]=255&r,r/=256,o-=8;return a[--m]|=128*s,a},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,a=c>>1,o=i-7,l=r-1,u=e[l--],d=127&u;for(u>>=7;o>0;)d=256*d+e[l--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=t;o>0;)n=256*n+e[l--],o-=8;if(0===d)d=1-a;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=RZ(2,t),d-=a}return(u?-1:1)*n*RZ(2,d-t)}},NZ=R,LZ=P,HZ=J,xZ=bZ,UZ=fn,kZ=hn,AZ=IZ,wZ=Y,FZ=XZ,TZ=fr,BZ=Sr,zZ=WZ,jZ=KZ,MZ=Pd,QZ=Is,PZ=gr.f,EZ=Ot.f,DZ=Xu,OZ=Zc,_Z=Hc,qZ=UZ.PROPER,$Z=UZ.CONFIGURABLE,eh=er.get,th=er.set,nh=NZ.ArrayBuffer,rh=nh,ih=rh&&rh.prototype,ch=NZ.DataView,ah=ch&&ch.prototype,oh=Object.prototype,lh=NZ.Array,uh=NZ.RangeError,dh=LZ(DZ),sh=LZ([].reverse),mh=jZ.pack,Zh=jZ.unpack,hh=function(e){return[255&e]},bh=function(e){return[255&e,e>>8&255]},ph=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Ih=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},gh=function(e){return mh(e,23,4)},yh=function(e){return mh(e,52,8)},Xh=function(e,t){EZ(e.prototype,t,{get:function(){return eh(this)[t]}})},fh=function(e,t,n,r){var i=zZ(n),c=eh(e);if(i+t>c.byteLength)throw uh("Wrong index");var a=eh(c.buffer).bytes,o=i+c.byteOffset,l=OZ(a,o,o+t);return r?l:sh(l)},Gh=function(e,t,n,r,i,c){var a=zZ(n),o=eh(e);if(a+t>o.byteLength)throw uh("Wrong index");for(var l=eh(o.buffer).bytes,u=a+o.byteOffset,d=r(+i),s=0;s<t;s++)l[u+s]=d[c?s:t-s-1]};if(xZ){var Vh=qZ&&"ArrayBuffer"!==nh.name;if(wZ((function(){nh(1)}))&&wZ((function(){new nh(-1)}))&&!wZ((function(){return new nh,new nh(1.5),new nh(NaN),Vh&&!$Z})))Vh&&$Z&&kZ(nh,"name","ArrayBuffer");else{(rh=function(e){return FZ(this,ih),new nh(zZ(e))}).prototype=ih;for(var Wh,Ch=PZ(nh),vh=0;Ch.length>vh;)(Wh=Ch[vh++])in rh||kZ(rh,Wh,nh[Wh]);ih.constructor=rh}QZ&&MZ(ah)!==oh&&QZ(ah,oh);var Rh=new ch(new rh(2)),Sh=LZ(ah.setInt8);Rh.setInt8(0,2147483648),Rh.setInt8(1,2147483649),!Rh.getInt8(0)&&Rh.getInt8(1)||AZ(ah,{setInt8:function(e,t){Sh(this,e,t<<24>>24)},setUint8:function(e,t){Sh(this,e,t<<24>>24)}},{unsafe:!0})}else rh=function(e){FZ(this,ih);var t=zZ(e);th(this,{bytes:dh(lh(t),0),byteLength:t}),HZ||(this.byteLength=t)},ih=rh.prototype,ch=function(e,t,n){FZ(this,ah),FZ(e,ih);var r=eh(e).byteLength,i=TZ(t);if(i<0||i>r)throw uh("Wrong offset");if(i+(n=void 0===n?r-i:BZ(n))>r)throw uh("Wrong length");th(this,{buffer:e,byteLength:n,byteOffset:i}),HZ||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},ah=ch.prototype,HZ&&(Xh(rh,"byteLength"),Xh(ch,"buffer"),Xh(ch,"byteLength"),Xh(ch,"byteOffset")),AZ(ah,{getInt8:function(e){return fh(this,1,e)[0]<<24>>24},getUint8:function(e){return fh(this,1,e)[0]},getInt16:function(e){var t=fh(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=fh(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Ih(fh(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Ih(fh(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Zh(fh(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Zh(fh(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){Gh(this,1,e,hh,t)},setUint8:function(e,t){Gh(this,1,e,hh,t)},setInt16:function(e,t){Gh(this,2,e,bh,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){Gh(this,2,e,bh,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){Gh(this,4,e,ph,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){Gh(this,4,e,ph,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){Gh(this,4,e,gh,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){Gh(this,8,e,yh,t,arguments.length>2?arguments[2]:void 0)}});_Z(rh,"ArrayBuffer"),_Z(ch,"DataView");var Yh={ArrayBuffer:rh,DataView:ch},Jh=nZ,Kh=Yh.ArrayBuffer;yi({global:!0,forced:R.ArrayBuffer!==Kh},{ArrayBuffer:Kh}),Jh("ArrayBuffer");var Nh=nn,Lh=Pe,Hh=R.TypeError,xh=at,Uh=Ir,kh=function(e){if(Nh(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw Hh("Incorrect hint");return Lh(this,e)},Ah=Gt("toPrimitive"),wh=Date.prototype;xh(wh,Ah)||Uh(wh,Ah,kh);var Fh=ue,Th=se,Bh=Ot,zh=Pd,jh=Gt,Mh=bn.exports,Qh=jh("hasInstance"),Ph=Function.prototype;Qh in Ph||Bh.f(Ph,Qh,{value:Mh((function(e){if(!Fh(this)||!Th(e))return!1;var t=this.prototype;if(!Th(t))return e instanceof this;for(;e=zh(e);)if(t===e)return!0;return!1}),Qh)});var Eh=J,Dh=fn.EXISTS,Oh=P,_h=Ot.f,qh=Function.prototype,$h=Oh(qh.toString),eb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,tb=Oh(eb.exec);Eh&&!Dh&&_h(qh,"name",{configurable:!0,get:function(){try{return tb(eb,$h(this))[1]}catch(e){return""}}}),yi({global:!0},{globalThis:R}),Hc(R.JSON,"JSON",!0);var nb={exports:{}},rb=Y((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),ib=Y,cb=se,ab=_,ob=rb,lb=Object.isExtensible,ub=ib((function(){lb(1)}))||ob?function(e){return!!cb(e)&&((!ob||"ArrayBuffer"!=ab(e))&&(!lb||lb(e)))}:lb,db=!Y((function(){return Object.isExtensible(Object.preventExtensions({}))})),sb=yi,mb=P,Zb=kn,hb=se,bb=at,pb=Ot.f,Ib=gr,gb=rc,yb=ub,Xb=db,fb=!1,Gb=st("meta"),Vb=0,Wb=function(e){pb(e,Gb,{value:{objectID:"O"+Vb++,weakData:{}}})},Cb=nb.exports={enable:function(){Cb.enable=function(){},fb=!0;var e=Ib.f,t=mb([].splice),n={};n[Gb]=1,e(n).length&&(Ib.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===Gb){t(r,i,1);break}return r},sb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:gb.f}))},fastKey:function(e,t){if(!hb(e))return"symbol"==c(e)?e:("string"==typeof e?"S":"P")+e;if(!bb(e,Gb)){if(!yb(e))return"F";if(!t)return"E";Wb(e)}return e[Gb].objectID},getWeakData:function(e,t){if(!bb(e,Gb)){if(!yb(e))return!0;if(!t)return!1;Wb(e)}return e[Gb].weakData},onFreeze:function(e){return Xb&&fb&&yb(e)&&!bb(e,Gb)&&Wb(e),e}};Zb[Gb]=!0;var vb=Ac,Rb=H,Sb=nn,Yb=Ue,Jb=nd,Kb=Jr,Nb=pe,Lb=hd,Hb=od,xb=Du,Ub=R.TypeError,kb=function(e,t){this.stopped=e,this.result=t},Ab=kb.prototype,wb=function(e,t,n){var r,i,a,o,l,u,d,s=n&&n.that,m=!(!n||!n.AS_ENTRIES),Z=!(!n||!n.IS_ITERATOR),h=!(!n||!n.INTERRUPTED),b=vb(t,s),p=function(e){return r&&xb(r,"normal",e),new kb(!0,e)},I=function(e){return m?(Sb(e),h?b(e[0],e[1],p):b(e[0],e[1])):h?b(e,p):b(e)};if(Z)r=e;else{if(!(i=Hb(e)))throw Ub(Yb(e)+" is not iterable");if(Jb(i)){for(a=0,o=Kb(e);o>a;a++)if((l=I(e[a]))&&Nb(Ab,l))return l;return new kb(!1)}r=Lb(e,i)}for(u=r.next;!(d=Rb(u,r)).done;){try{l=I(d.value)}catch(e){xb(r,"throw",e)}if("object"==c(l)&&l&&Nb(Ab,l))return l}return new kb(!1)},Fb=ue,Tb=se,Bb=Is,zb=function(e,t,n){var r,i;return Bb&&Fb(r=t.constructor)&&r!==n&&Tb(i=r.prototype)&&i!==n.prototype&&Bb(e,i),e},jb=yi,Mb=R,Qb=P,Pb=si,Eb=Ir,Db=nb.exports,Ob=wb,_b=XZ,qb=ue,$b=se,ep=Y,tp=Kd,np=Hc,rp=zb,ip=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",a=Mb[e],o=a&&a.prototype,l=a,u={},d=function(e){var t=Qb(o[e]);Eb(o,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!$b(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!$b(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!$b(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(Pb(e,!qb(a)||!(i||o.forEach&&!ep((function(){(new a).entries().next()})))))l=n.getConstructor(t,e,r,c),Db.enable();else if(Pb(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,Z=ep((function(){s.has(1)})),h=tp((function(e){new a(e)})),b=!i&&ep((function(){for(var e=new a,t=5;t--;)e[c](t,t);return!e.has(-0)}));h||((l=t((function(e,t){_b(e,o);var n=rp(new a,e,l);return null!=t&&Ob(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=l),(Z||b)&&(d("delete"),d("has"),r&&d("get")),(b||m)&&d(c),i&&o.clear&&delete o.clear}return u[e]=l,jb({global:!0,forced:l!=a},u),np(l,e),i||n.setStrong(l,e,r),l},cp=Ot.f,ap=nc,op=IZ,lp=Ac,up=XZ,dp=wb,sp=Hs,mp=nZ,Zp=J,hp=nb.exports.fastKey,bp=er.set,pp=er.getterFor,Ip={getConstructor:function(e,t,n,r){var i=e((function(e,i){up(e,c),bp(e,{type:t,index:ap(null),first:void 0,last:void 0,size:0}),Zp||(e.size=0),null!=i&&dp(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=pp(t),o=function(e,t,n){var r,i,c=a(e),o=l(e,t);return o?o.value=n:(c.last=o={index:i=hp(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),Zp?c.size++:e.size++,"F"!==i&&(c.index[i]=o)),e},l=function(e,t){var n,r=a(e),i=hp(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return op(c,{clear:function(){for(var e=a(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,Zp?e.size=0:this.size=0},delete:function(e){var t=this,n=a(t),r=l(t,e);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),Zp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=a(this),r=lp(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),op(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),Zp&&cp(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=pp(t),c=pp(r);sp(e,t,(function(e,t){bp(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),mp(t)}};ip("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Ip);var gp=Math.log,yp=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:gp(1+e)},Xp=yi,fp=yp,Gp=Math.acosh,Vp=Math.log,Wp=Math.sqrt,Cp=Math.LN2;Xp({target:"Math",stat:!0,forced:!Gp||710!=Math.floor(Gp(Number.MAX_VALUE))||Gp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Vp(e)+Cp:fp(e-1+Wp(e-1)*Wp(e+1))}});var vp=yi,Rp=Math.asinh,Sp=Math.log,Yp=Math.sqrt;vp({target:"Math",stat:!0,forced:!(Rp&&1/Rp(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Sp(t+Yp(t*t+1)):t}});var Jp=yi,Kp=Math.atanh,Np=Math.log;Jp({target:"Math",stat:!0,forced:!(Kp&&1/Kp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:Np((1+e)/(1-e))/2}});var Lp=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},Hp=yi,xp=Lp,Up=Math.abs,kp=Math.pow;Hp({target:"Math",stat:!0},{cbrt:function(e){return xp(e=+e)*kp(Up(e),1/3)}});var Ap=yi,wp=Math.floor,Fp=Math.log,Tp=Math.LOG2E;Ap({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-wp(Fp(e+.5)*Tp):32}});var Bp=Math.expm1,zp=Math.exp,jp=!Bp||Bp(10)>22025.465794806718||Bp(10)<22025.465794806718||-2e-17!=Bp(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:zp(e)-1}:Bp,Mp=yi,Qp=jp,Pp=Math.cosh,Ep=Math.abs,Dp=Math.E;Mp({target:"Math",stat:!0,forced:!Pp||Pp(710)===1/0},{cosh:function(e){var t=Qp(Ep(e)-1)+1;return(t+1/(t*Dp*Dp))*(Dp/2)}});var Op=jp;yi({target:"Math",stat:!0,forced:Op!=Math.expm1},{expm1:Op});var _p=Lp,qp=Math.abs,$p=Math.pow,eI=$p(2,-52),tI=$p(2,-23),nI=$p(2,127)*(2-tI),rI=$p(2,-126),iI=Math.fround||function(e){var t,n,r=qp(e),i=_p(e);return r<rI?i*function(e){return e+1/eI-1/eI}(r/rI/tI)*rI*tI:(n=(t=(1+tI/eI)*r)-(t-r))>nI||n!=n?i*(1/0):i*n};yi({target:"Math",stat:!0},{fround:iI});var cI=yi,aI=Math.hypot,oI=Math.abs,lI=Math.sqrt;cI({target:"Math",stat:!0,arity:2,forced:!!aI&&aI(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,a=arguments.length,o=0;c<a;)o<(n=oI(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*lI(i)}});var uI=yi,dI=Y,sI=Math.imul;uI({target:"Math",stat:!0,forced:dI((function(){return-5!=sI(4294967295,5)||2!=sI.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,a=n&i;return 0|c*a+((n&r>>>16)*a+c*(n&i>>>16)<<16>>>0)}});var mI=Math.log,ZI=Math.LOG10E;yi({target:"Math",stat:!0},{log10:Math.log10||function(e){return mI(e)*ZI}}),yi({target:"Math",stat:!0},{log1p:yp});var hI=yi,bI=Math.log,pI=Math.LN2;hI({target:"Math",stat:!0},{log2:function(e){return bI(e)/pI}}),yi({target:"Math",stat:!0},{sign:Lp});var II=yi,gI=Y,yI=jp,XI=Math.abs,fI=Math.exp,GI=Math.E;II({target:"Math",stat:!0,forced:gI((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return XI(e=+e)<1?(yI(e)-yI(-e))/2:(fI(e-1)-fI(-e-1))*(GI/2)}});var VI=yi,WI=jp,CI=Math.exp;VI({target:"Math",stat:!0},{tanh:function(e){var t=WI(e=+e),n=WI(-e);return t==1/0?1:n==1/0?-1:(t-n)/(CI(e)+CI(-e))}}),Hc(Math,"Math",!0);var vI=yi,RI=Math.ceil,SI=Math.floor;vI({target:"Math",stat:!0},{trunc:function(e){return(e>0?SI:RI)(e)}});var YI=P(1..valueOf),JI="\t\n\v\f\r \u2028\u2029\ufeff",KI=ce,NI=Ni,LI=P("".replace),HI="[\t\n\v\f\r \u2028\u2029\ufeff]",xI=RegExp("^"+HI+HI+"*"),UI=RegExp(HI+HI+"*$"),kI=function(e){return function(t){var n=NI(KI(t));return 1&e&&(n=LI(n,xI,"")),2&e&&(n=LI(n,UI,"")),n}},AI={start:kI(1),end:kI(2),trim:kI(3)},wI=J,FI=R,TI=P,BI=si,zI=Ir,jI=at,MI=zb,QI=pe,PI=He,EI=Kt,DI=Y,OI=gr.f,_I=S.f,qI=Ot.f,$I=YI,eg=AI.trim,tg=FI.Number,ng=tg.prototype,rg=FI.TypeError,ig=TI("".slice),cg=TI("".charCodeAt),ag=function(e){var t=EI(e,"number");return"bigint"==typeof t?t:og(t)},og=function(e){var t,n,r,i,c,a,o,l,u=EI(e,"number");if(PI(u))throw rg("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=eg(u),43===(t=cg(u,0))||45===t){if(88===(n=cg(u,2))||120===n)return NaN}else if(48===t){switch(cg(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(c=ig(u,2)).length,o=0;o<a;o++)if((l=cg(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(BI("Number",!tg(" 0o1")||!tg("0b1")||tg("+0x1"))){for(var lg,ug=function(e){var t=arguments.length<1?0:tg(ag(e)),n=this;return QI(ng,n)&&DI((function(){$I(n)}))?MI(Object(t),n,ug):t},dg=wI?OI(tg):"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(","),sg=0;dg.length>sg;sg++)jI(tg,lg=dg[sg])&&!jI(ug,lg)&&qI(ug,lg,_I(tg,lg));ug.prototype=ng,ng.constructor=ug,zI(FI,"Number",ug)}yi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var mg=R.isFinite;yi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&mg(e)}});var Zg=se,hg=Math.floor,bg=Number.isInteger||function(e){return!Zg(e)&&isFinite(e)&&hg(e)===e};yi({target:"Number",stat:!0},{isInteger:bg}),yi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var pg=yi,Ig=bg,gg=Math.abs;pg({target:"Number",stat:!0},{isSafeInteger:function(e){return Ig(e)&&gg(e)<=9007199254740991}}),yi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),yi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var yg=R,Xg=Y,fg=Ni,Gg=AI.trim,Vg=P("".charAt),Wg=yg.parseFloat,Cg=yg.Symbol,vg=Cg&&Cg.iterator,Rg=1/Wg("\t\n\v\f\r \u2028\u2029\ufeff-0")!=-1/0||vg&&!Xg((function(){Wg(Object(vg))}))?function(e){var t=Gg(fg(e)),n=Wg(t);return 0===n&&"-"==Vg(t,0)?-0:n}:Wg;yi({target:"Number",stat:!0,forced:Number.parseFloat!=Rg},{parseFloat:Rg});var Sg=R,Yg=Y,Jg=P,Kg=Ni,Ng=AI.trim,Lg=Sg.parseInt,Hg=Sg.Symbol,xg=Hg&&Hg.iterator,Ug=/^[+-]?0x/i,kg=Jg(Ug.exec),Ag=8!==Lg("\t\n\v\f\r \u2028\u2029\ufeff08")||22!==Lg("\t\n\v\f\r \u2028\u2029\ufeff0x16")||xg&&!Yg((function(){Lg(Object(xg))}))?function(e,t){var n=Ng(Kg(e));return Lg(n,t>>>0||(kg(Ug,n)?16:10))}:Lg,wg=Ag;yi({target:"Number",stat:!0,forced:Number.parseInt!=wg},{parseInt:wg});var Fg=fr,Tg=Ni,Bg=ce,zg=R.RangeError,jg=function(e){var t=Tg(Bg(this)),n="",r=Fg(e);if(r<0||r==1/0)throw zg("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},Mg=yi,Qg=R,Pg=P,Eg=fr,Dg=YI,Og=jg,_g=Y,qg=Qg.RangeError,$g=Qg.String,ey=Math.floor,ty=Pg(Og),ny=Pg("".slice),ry=Pg(1..toFixed),iy=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},cy=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=ey(i/1e7)},ay=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=ey(r/t),r=r%t*1e7},oy=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=$g(e[t]);n=""===n?r:n+ty("0",7-r.length)+r}return n};Mg({target:"Number",proto:!0,forced:_g((function(){return"0.000"!==ry(8e-5,3)||"1"!==ry(.9,0)||"1.25"!==ry(1.255,2)||"1000000000000000128"!==ry(0xde0b6b3a7640080,0)}))||!_g((function(){ry({})}))},{toFixed:function(e){var t,n,r,i,c=Dg(this),a=Eg(e),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw qg("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return $g(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*iy(2,69,1))-69,n=t<0?c*iy(2,-t,1):c/iy(2,t,1),n*=4503599627370496,(t=52-t)>0){for(cy(o,0,n),r=a;r>=7;)cy(o,1e7,0),r-=7;for(cy(o,iy(10,r,1),0),r=t-1;r>=23;)ay(o,1<<23),r-=23;ay(o,1<<r),cy(o,1,1),ay(o,2),u=oy(o)}else cy(o,0,n),cy(o,1<<-t,0),u=oy(o)+ty("0",a);return u=a>0?l+((i=u.length)<=a?"0."+ty("0",a-i)+u:ny(u,0,i-a)+"."+ny(u,i-a)):l+u}});var ly=J,uy=P,dy=H,sy=Y,my=Ui,Zy=Mr,hy=x,by=rt,py=re,Iy=Object.assign,gy=Object.defineProperty,yy=uy([].concat),Xy=!Iy||sy((function(){if(ly&&1!==Iy({b:1},Iy(gy({},"a",{enumerable:!0,get:function(){gy(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=Iy({},e)[n]||my(Iy({},t)).join("")!=r}))?function(e,t){for(var n=by(e),r=arguments.length,i=1,c=Zy.f,a=hy.f;r>i;)for(var o,l=py(arguments[i++]),u=c?yy(my(l),c(l)):my(l),d=u.length,s=0;d>s;)o=u[s++],ly&&!dy(a,l,o)||(n[o]=l[o]);return n}:Iy,fy=Xy;yi({target:"Object",stat:!0,arity:2,forced:Object.assign!==fy},{assign:fy});var Gy=R,Vy=Km,Wy=!Y((function(){if(!(Vy&&Vy<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete Gy[e]}})),Cy=Fe,vy=rt,Ry=Ot;J&&yi({target:"Object",proto:!0,forced:Wy},{__defineGetter__:function(e,t){Ry.f(vy(this),e,{get:Cy(t),enumerable:!0,configurable:!0})}});var Sy=Fe,Yy=rt,Jy=Ot;J&&yi({target:"Object",proto:!0,forced:Wy},{__defineSetter__:function(e,t){Jy.f(Yy(this),e,{set:Sy(t),enumerable:!0,configurable:!0})}});var Ky=J,Ny=P,Ly=Ui,Hy=le,xy=Ny(x.f),Uy=Ny([].push),ky=function(e){return function(t){for(var n,r=Hy(t),i=Ly(r),c=i.length,a=0,o=[];c>a;)n=i[a++],Ky&&!xy(r,n)||Uy(o,e?[n,r[n]]:r[n]);return o}},Ay={entries:ky(!0),values:ky(!1)},wy=Ay.entries;yi({target:"Object",stat:!0},{entries:function(e){return wy(e)}});var Fy=yi,Ty=db,By=Y,zy=se,jy=nb.exports.onFreeze,My=Object.freeze;Fy({target:"Object",stat:!0,forced:By((function(){My(1)})),sham:!Ty},{freeze:function(e){return My&&zy(e)?My(jy(e)):e}});var Qy=wb,Py=oc;yi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Qy(e,(function(e,n){Py(t,e,n)}),{AS_ENTRIES:!0}),t}});var Ey=yi,Dy=Y,Oy=le,_y=S.f,qy=J,$y=Dy((function(){_y(1)}));Ey({target:"Object",stat:!0,forced:!qy||$y,sham:!qy},{getOwnPropertyDescriptor:function(e,t){return _y(Oy(e),t)}});var eX=_r,tX=le,nX=S,rX=oc;yi({target:"Object",stat:!0,sham:!J},{getOwnPropertyDescriptors:function(e){for(var t,n,r=tX(e),i=nX.f,c=eX(r),a={},o=0;c.length>o;)void 0!==(n=i(r,t=c[o++]))&&rX(a,t,n);return a}});var iX=yi,cX=Y,aX=rc.f;iX({target:"Object",stat:!0,forced:cX((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:aX});var oX=rt,lX=Pd,uX=Ad;yi({target:"Object",stat:!0,forced:Y((function(){lX(1)})),sham:!uX},{getPrototypeOf:function(e){return lX(oX(e))}});var dX=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};yi({target:"Object",stat:!0},{is:dX});var sX=ub;yi({target:"Object",stat:!0,forced:Object.isExtensible!==sX},{isExtensible:sX});var mX=yi,ZX=Y,hX=se,bX=_,pX=rb,IX=Object.isFrozen;mX({target:"Object",stat:!0,forced:ZX((function(){IX(1)}))||pX},{isFrozen:function(e){return!hX(e)||(!(!pX||"ArrayBuffer"!=bX(e))||!!IX&&IX(e))}});var gX=yi,yX=Y,XX=se,fX=_,GX=rb,VX=Object.isSealed;gX({target:"Object",stat:!0,forced:yX((function(){VX(1)}))||GX},{isSealed:function(e){return!XX(e)||(!(!GX||"ArrayBuffer"!=fX(e))||!!VX&&VX(e))}});var WX=rt,CX=Ui;yi({target:"Object",stat:!0,forced:Y((function(){CX(1)}))},{keys:function(e){return CX(WX(e))}});var vX=yi,RX=J,SX=Wy,YX=rt,JX=Ht,KX=Pd,NX=S.f;RX&&vX({target:"Object",proto:!0,forced:SX},{__lookupGetter__:function(e){var t,n=YX(this),r=JX(e);do{if(t=NX(n,r))return t.get}while(n=KX(n))}});var LX=yi,HX=J,xX=Wy,UX=rt,kX=Ht,AX=Pd,wX=S.f;HX&&LX({target:"Object",proto:!0,forced:xX},{__lookupSetter__:function(e){var t,n=UX(this),r=kX(e);do{if(t=wX(n,r))return t.set}while(n=AX(n))}});var FX=yi,TX=se,BX=nb.exports.onFreeze,zX=db,jX=Y,MX=Object.preventExtensions;FX({target:"Object",stat:!0,forced:jX((function(){MX(1)})),sham:!zX},{preventExtensions:function(e){return MX&&TX(e)?MX(BX(e)):e}});var QX=yi,PX=se,EX=nb.exports.onFreeze,DX=db,OX=Y,_X=Object.seal;QX({target:"Object",stat:!0,forced:OX((function(){_X(1)})),sham:!DX},{seal:function(e){return _X&&PX(e)?_X(EX(e)):e}});var qX=Yi,$X=fi?{}.toString:function(){return"[object "+qX(this)+"]"};fi||Ir(Object.prototype,"toString",$X,{unsafe:!0});var ef=Ay.values;yi({target:"Object",stat:!0},{values:function(e){return ef(e)}});var tf,nf,rf,cf,af="process"==_(R.process),of=ea,lf=Ue,uf=R.TypeError,df=function(e){if(of(e))return e;throw uf(lf(e)+" is not a constructor")},sf=nn,mf=df,Zf=Gt("species"),hf=function(e,t){var n,r=sf(e).constructor;return void 0===r||null==(n=sf(r)[Zf])?t:mf(n)},bf=R.TypeError,pf=function(e,t){if(e<t)throw bf("Not enough arguments");return e},If=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ie),gf=R,yf=Bo,Xf=Ac,ff=ue,Gf=at,Vf=Y,Wf=ji,Cf=zo,vf=At,Rf=pf,Sf=If,Yf=af,Jf=gf.setImmediate,Kf=gf.clearImmediate,Nf=gf.process,Lf=gf.Dispatch,Hf=gf.Function,xf=gf.MessageChannel,Uf=gf.String,kf=0,Af={};try{tf=gf.location}catch(e){}var wf=function(e){if(Gf(Af,e)){var t=Af[e];delete Af[e],t()}},Ff=function(e){return function(){wf(e)}},Tf=function(e){wf(e.data)},Bf=function(e){gf.postMessage(Uf(e),tf.protocol+"//"+tf.host)};Jf&&Kf||(Jf=function(e){Rf(arguments.length,1);var t=ff(e)?e:Hf(e),n=Cf(arguments,1);return Af[++kf]=function(){yf(t,void 0,n)},nf(kf),kf},Kf=function(e){delete Af[e]},Yf?nf=function(e){Nf.nextTick(Ff(e))}:Lf&&Lf.now?nf=function(e){Lf.now(Ff(e))}:xf&&!Sf?(cf=(rf=new xf).port2,rf.port1.onmessage=Tf,nf=Xf(cf.postMessage,cf)):gf.addEventListener&&ff(gf.postMessage)&&!gf.importScripts&&tf&&"file:"!==tf.protocol&&!Vf(Bf)?(nf=Bf,gf.addEventListener("message",Tf,!1)):nf="onreadystatechange"in vf("script")?function(e){Wf.appendChild(vf("script")).onreadystatechange=function(){Wf.removeChild(this),wf(e)}}:function(e){setTimeout(Ff(e),0)});var zf,jf,Mf,Qf,Pf,Ef,Df,Of,_f={set:Jf,clear:Kf},qf=R,$f=/ipad|iphone|ipod/i.test(Ie)&&void 0!==qf.Pebble,eG=/web0s(?!.*chrome)/i.test(Ie),tG=R,nG=Ac,rG=S.f,iG=_f.set,cG=If,aG=$f,oG=eG,lG=af,uG=tG.MutationObserver||tG.WebKitMutationObserver,dG=tG.document,sG=tG.process,mG=tG.Promise,ZG=rG(tG,"queueMicrotask"),hG=ZG&&ZG.value;hG||(zf=function(){var e,t;for(lG&&(e=sG.domain)&&e.exit();jf;){t=jf.fn,jf=jf.next;try{t()}catch(e){throw jf?Qf():Mf=void 0,e}}Mf=void 0,e&&e.enter()},cG||lG||oG||!uG||!dG?!aG&&mG&&mG.resolve?((Df=mG.resolve(void 0)).constructor=mG,Of=nG(Df.then,Df),Qf=function(){Of(zf)}):lG?Qf=function(){sG.nextTick(zf)}:(iG=nG(iG,tG),Qf=function(){iG(zf)}):(Pf=!0,Ef=dG.createTextNode(""),new uG(zf).observe(Ef,{characterData:!0}),Qf=function(){Ef.data=Pf=!Pf}));var bG=hG||function(e){var t={fn:e,next:void 0};Mf&&(Mf.next=t),jf||(jf=t,Qf()),Mf=t},pG=R,IG=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},gG=function(){this.head=null,this.tail=null};gG.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var yG=gG,XG=R.Promise,fG="object"==("undefined"==typeof window?"undefined":c(window))&&"object"!=("undefined"==typeof Deno?"undefined":c(Deno)),GG=R,VG=XG,WG=ue,CG=si,vG=Sn,RG=Gt,SG=fG,YG=We;VG&&VG.prototype;var JG=RG("species"),KG=!1,NG=WG(GG.PromiseRejectionEvent),LG=CG("Promise",(function(){var e=vG(VG),t=e!==String(VG);if(!t&&66===YG)return!0;if(YG>=51&&/native code/.test(e))return!1;var n=new VG((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[JG]=r,!(KG=n.then((function(){}))instanceof r)||!t&&SG&&!NG})),HG={CONSTRUCTOR:LG,REJECTION_EVENT:NG,SUBCLASSING:KG},xG={},UG=Fe,kG=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=UG(t),this.reject=UG(n)};xG.f=function(e){return new kG(e)};var AG,wG,FG,TG=yi,BG=af,zG=R,jG=H,MG=Ir,QG=Is,PG=Hc,EG=nZ,DG=Fe,OG=ue,_G=se,qG=XZ,$G=hf,eV=_f.set,tV=bG,nV=function(e,t){var n=pG.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},rV=IG,iV=yG,cV=er,aV=XG,oV=xG,lV=HG.CONSTRUCTOR,uV=HG.REJECTION_EVENT,dV=HG.SUBCLASSING,sV=cV.getterFor("Promise"),mV=cV.set,ZV=aV&&aV.prototype,hV=aV,bV=ZV,pV=zG.TypeError,IV=zG.document,gV=zG.process,yV=oV.f,XV=yV,fV=!!(IV&&IV.createEvent&&zG.dispatchEvent),GV=function(e){var t;return!(!_G(e)||!OG(t=e.then))&&t},VV=function(e,t){var n,r,i,c=t.value,a=1==t.state,o=a?e.ok:e.fail,l=e.resolve,u=e.reject,d=e.domain;try{o?(a||(2===t.rejection&&SV(t),t.rejection=1),!0===o?n=c:(d&&d.enter(),n=o(c),d&&(d.exit(),i=!0)),n===e.promise?u(pV("Promise-chain cycle")):(r=GV(n))?jG(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},WV=function(e,t){e.notified||(e.notified=!0,tV((function(){for(var n,r=e.reactions;n=r.get();)VV(n,e);e.notified=!1,t&&!e.rejection&&vV(e)})))},CV=function(e,t,n){var r,i;fV?((r=IV.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),zG.dispatchEvent(r)):r={promise:t,reason:n},!uV&&(i=zG["on"+e])?i(r):"unhandledrejection"===e&&nV("Unhandled promise rejection",n)},vV=function(e){jG(eV,zG,(function(){var t,n=e.facade,r=e.value;if(RV(e)&&(t=rV((function(){BG?gV.emit("unhandledRejection",r,n):CV("unhandledrejection",n,r)})),e.rejection=BG||RV(e)?2:1,t.error))throw t.value}))},RV=function(e){return 1!==e.rejection&&!e.parent},SV=function(e){jG(eV,zG,(function(){var t=e.facade;BG?gV.emit("rejectionHandled",t):CV("rejectionhandled",t,e.value)}))},YV=function(e,t,n){return function(r){e(t,r,n)}},JV=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,WV(e,!0))},KV=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw pV("Promise can't be resolved itself");var i=GV(n);i?tV((function(){var r={done:!1};try{jG(i,n,YV(e,r,t),YV(JV,r,t))}catch(e){JV(r,e,t)}})):(t.value=n,t.state=1,WV(t,!1))}catch(e){JV({done:!1},e,t)}}};if(lV&&(bV=(hV=function(e){qG(this,bV),DG(e),jG(AG,this);var t=sV(this);try{e(YV(KV,t),YV(JV,t))}catch(e){JV(t,e)}}).prototype,(AG=function(e){mV(this,{type:"Promise",done:!1,notified:!1,parent:!1,reactions:new iV,rejection:!1,state:0,value:void 0})}).prototype=MG(bV,"then",(function(e,t){var n=sV(this),r=yV($G(this,hV));return n.parent=!0,r.ok=!OG(e)||e,r.fail=OG(t)&&t,r.domain=BG?gV.domain:void 0,0==n.state?n.reactions.add(r):tV((function(){VV(r,n)})),r.promise})),wG=function(){var e=new AG,t=sV(e);this.promise=e,this.resolve=YV(KV,t),this.reject=YV(JV,t)},oV.f=yV=function(e){return e===hV||undefined===e?new wG(e):XV(e)},OG(aV)&&ZV!==Object.prototype)){FG=ZV.then,dV||MG(ZV,"then",(function(e,t){var n=this;return new hV((function(e,t){jG(FG,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete ZV.constructor}catch(e){}QG&&QG(ZV,bV)}TG({global:!0,wrap:!0,forced:lV},{Promise:hV}),PG(hV,"Promise",!1),EG("Promise");var NV=XG,LV=HG.CONSTRUCTOR||!Kd((function(e){NV.all(e).then(void 0,(function(){}))})),HV=H,xV=Fe,UV=xG,kV=IG,AV=wb;yi({target:"Promise",stat:!0,forced:LV},{all:function(e){var t=this,n=UV.f(t),r=n.resolve,i=n.reject,c=kV((function(){var n=xV(t.resolve),c=[],a=0,o=1;AV(e,(function(e){var l=a++,u=!1;o++,HV(n,t,e).then((function(e){u||(u=!0,c[l]=e,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise}});var wV=yi,FV=HG.CONSTRUCTOR,TV=XG,BV=be,zV=ue,jV=Ir,MV=TV&&TV.prototype;if(wV({target:"Promise",proto:!0,forced:FV,real:!0},{catch:function(e){return this.then(void 0,e)}}),zV(TV)){var QV=BV("Promise").prototype.catch;MV.catch!==QV&&jV(MV,"catch",QV,{unsafe:!0})}var PV=H,EV=Fe,DV=xG,OV=IG,_V=wb;yi({target:"Promise",stat:!0,forced:LV},{race:function(e){var t=this,n=DV.f(t),r=n.reject,i=OV((function(){var i=EV(t.resolve);_V(e,(function(e){PV(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var qV=H,$V=xG;yi({target:"Promise",stat:!0,forced:HG.CONSTRUCTOR},{reject:function(e){var t=$V.f(this);return qV(t.reject,void 0,e),t.promise}});var eW=nn,tW=se,nW=xG,rW=function(e,t){if(eW(e),tW(t)&&t.constructor===e)return t;var n=nW.f(e);return(0,n.resolve)(t),n.promise},iW=yi,cW=HG.CONSTRUCTOR,aW=rW;be("Promise"),iW({target:"Promise",stat:!0,forced:cW},{resolve:function(e){return aW(this,e)}});var oW=H,lW=Fe,uW=xG,dW=IG,sW=wb;yi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=uW.f(t),r=n.resolve,i=n.reject,c=dW((function(){var n=lW(t.resolve),i=[],c=0,a=1;sW(e,(function(e){var o=c++,l=!1;a++,oW(n,t,e).then((function(e){l||(l=!0,i[o]={status:"fulfilled",value:e},--a||r(i))}),(function(e){l||(l=!0,i[o]={status:"rejected",reason:e},--a||r(i))}))})),--a||r(i)}));return c.error&&i(c.value),n.promise}});var mW=yi,ZW=XG,hW=Y,bW=be,pW=ue,IW=hf,gW=rW,yW=Ir,XW=ZW&&ZW.prototype;if(mW({target:"Promise",proto:!0,real:!0,forced:!!ZW&&hW((function(){XW.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=IW(this,bW("Promise")),n=pW(e);return this.then(n?function(n){return gW(t,e()).then((function(){return n}))}:e,n?function(n){return gW(t,e()).then((function(){throw n}))}:e)}}),pW(ZW)){var fW=bW("Promise").prototype.finally;XW.finally!==fW&&yW(XW,"finally",fW,{unsafe:!0})}var GW=Bo,VW=Fe,WW=nn;yi({target:"Reflect",stat:!0,forced:!Y((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return GW(VW(e),t,WW(n))}});var CW=P,vW=Fe,RW=se,SW=at,YW=zo,JW=K,KW=R.Function,NW=CW([].concat),LW=CW([].join),HW={},xW=function(e,t,n){if(!SW(HW,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";HW[t]=KW("C,a","return new C("+LW(r,",")+")")}return HW[t](e,n)},UW=JW?KW.bind:function(e){var t=vW(this),n=t.prototype,r=YW(arguments,1),i=function(){var n=NW(r,YW(arguments));return this instanceof i?xW(t,n.length,n):t.apply(e,n)};return RW(n)&&(i.prototype=n),i},kW=yi,AW=Bo,wW=UW,FW=df,TW=nn,BW=se,zW=nc,jW=Y,MW=be("Reflect","construct"),QW=Object.prototype,PW=[].push,EW=jW((function(){function e(){}return!(MW((function(){}),[],e)instanceof e)})),DW=!jW((function(){MW((function(){}))})),OW=EW||DW;kW({target:"Reflect",stat:!0,forced:OW,sham:OW},{construct:function(e,t){FW(e),TW(t);var n=arguments.length<3?e:FW(arguments[2]);if(DW&&!EW)return MW(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return AW(PW,r,t),new(AW(wW,e,r))}var i=n.prototype,c=zW(BW(i)?i:QW),a=AW(e,c,t);return BW(a)?a:c}});var _W=J,qW=nn,$W=Ht,eC=Ot;yi({target:"Reflect",stat:!0,forced:Y((function(){Reflect.defineProperty(eC.f({},1,{value:1}),1,{value:2})})),sham:!_W},{defineProperty:function(e,t,n){qW(e);var r=$W(t);qW(n);try{return eC.f(e,r,n),!0}catch(e){return!1}}});var tC=yi,nC=nn,rC=S.f;tC({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=rC(nC(e),t);return!(n&&!n.configurable)&&delete e[t]}});var iC=at,cC=function(e){return void 0!==e&&(iC(e,"value")||iC(e,"writable"))},aC=H,oC=se,lC=nn,uC=cC,dC=S,sC=Pd;yi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return lC(t)===c?t[n]:(r=dC.f(t,n))?uC(r)?r.value:void 0===r.get?void 0:aC(r.get,c):oC(i=sC(t))?e(i,n,c):void 0}});var mC=nn,ZC=S;yi({target:"Reflect",stat:!0,sham:!J},{getOwnPropertyDescriptor:function(e,t){return ZC.f(mC(e),t)}});var hC=nn,bC=Pd;yi({target:"Reflect",stat:!0,sham:!Ad},{getPrototypeOf:function(e){return bC(hC(e))}}),yi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var pC=nn,IC=ub;yi({target:"Reflect",stat:!0},{isExtensible:function(e){return pC(e),IC(e)}}),yi({target:"Reflect",stat:!0},{ownKeys:_r});var gC=be,yC=nn;yi({target:"Reflect",stat:!0,sham:!db},{preventExtensions:function(e){yC(e);try{var t=gC("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var XC=yi,fC=H,GC=nn,VC=se,WC=cC,CC=Ot,vC=S,RC=Pd,SC=T;var YC=Y((function(){var e=function(){},t=CC.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));XC({target:"Reflect",stat:!0,forced:YC},{set:function e(t,n,r){var i,c,a,o=arguments.length<4?t:arguments[3],l=vC.f(GC(t),n);if(!l){if(VC(c=RC(t)))return e(c,n,r,o);l=SC(0)}if(WC(l)){if(!1===l.writable||!VC(o))return!1;if(i=vC.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,CC.f(o,n,i)}else CC.f(o,n,SC(0,r))}else{if(void 0===(a=l.set))return!1;fC(a,o,r)}return!0}});var JC=nn,KC=Zs,NC=Is;NC&&yi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){JC(e),KC(t);try{return NC(e,t),!0}catch(e){return!1}}});var LC=se,HC=_,xC=Gt("match"),UC=function(e){var t;return LC(e)&&(void 0!==(t=e[xC])?!!t:"RegExp"==HC(e))},kC=nn,AC=function(){var e=kC(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},wC=H,FC=at,TC=pe,BC=AC,zC=RegExp.prototype,jC=function(e){var t=e.flags;return void 0!==t||"flags"in zC||FC(e,"flags")||!TC(zC,e)?t:wC(BC,e)},MC=Y,QC=R.RegExp,PC=MC((function(){var e=QC("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),EC=PC||MC((function(){return!QC("a","y").sticky})),DC=PC||MC((function(){var e=QC("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),OC={BROKEN_CARET:DC,MISSED_STICKY:EC,UNSUPPORTED_Y:PC},_C=Ot.f,qC=Y,$C=R.RegExp,ev=qC((function(){var e=$C(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),tv=Y,nv=R.RegExp,rv=tv((function(){var e=nv("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),iv=J,cv=R,av=P,ov=si,lv=zb,uv=hn,dv=gr.f,sv=pe,mv=UC,Zv=Ni,hv=jC,bv=OC,pv=function(e,t,n){n in e||_C(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},Iv=Ir,gv=Y,yv=at,Xv=er.enforce,fv=nZ,Gv=ev,Vv=rv,Wv=Gt("match"),Cv=cv.RegExp,vv=Cv.prototype,Rv=cv.SyntaxError,Sv=av(vv.exec),Yv=av("".charAt),Jv=av("".replace),Kv=av("".indexOf),Nv=av("".slice),Lv=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Hv=/a/g,xv=/a/g,Uv=new Cv(Hv)!==Hv,kv=bv.MISSED_STICKY,Av=bv.UNSUPPORTED_Y,wv=iv&&(!Uv||kv||Gv||Vv||gv((function(){return xv[Wv]=!1,Cv(Hv)!=Hv||Cv(xv)==xv||"/a/i"!=Cv(Hv,"i")})));if(ov("RegExp",wv)){for(var Fv=function(e,t){var n,r,i,c,a,o,l=sv(vv,this),u=mv(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===Fv)return e;if((u||sv(vv,e))&&(e=e.source,d&&(t=hv(m))),e=void 0===e?"":Zv(e),t=void 0===t?"":Zv(t),m=e,Gv&&"dotAll"in Hv&&(r=!!t&&Kv(t,"s")>-1)&&(t=Jv(t,/s/g,"")),n=t,kv&&"sticky"in Hv&&(i=!!t&&Kv(t,"y")>-1)&&Av&&(t=Jv(t,/y/g,"")),Vv&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],a={},o=!1,l=!1,u=0,d="";r<=n;r++){if("\\"===(t=Yv(e,r)))t+=Yv(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:Sv(Lv,Nv(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||yv(a,d))throw new Rv("Invalid capture group name");a[d]=!0,c[c.length]=[d,u],l=!1,d="";continue}l?d+=t:i+=t}return[i,c]}(e),e=c[0],s=c[1]),a=lv(Cv(e,t),l?this:vv,Fv),(r||i||s.length)&&(o=Xv(a),r&&(o.dotAll=!0,o.raw=Fv(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=Yv(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+Yv(e,++r);return i}(e),n)),i&&(o.sticky=!0),s.length&&(o.groups=s)),e!==m)try{uv(a,"source",""===m?"(?:)":m)}catch(e){}return a},Tv=dv(Cv),Bv=0;Tv.length>Bv;)pv(Fv,Cv,Tv[Bv++]);vv.constructor=Fv,Fv.prototype=vv,Iv(cv,"RegExp",Fv)}fv("RegExp");var zv=H,jv=P,Mv=Ni,Qv=AC,Pv=OC,Ev=Ee.exports,Dv=nc,Ov=er.get,_v=ev,qv=rv,$v=Ev("native-string-replace",String.prototype.replace),eR=RegExp.prototype.exec,tR=eR,nR=jv("".charAt),rR=jv("".indexOf),iR=jv("".replace),cR=jv("".slice),aR=function(){var e=/a/,t=/b*/g;return zv(eR,e,"a"),zv(eR,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),oR=Pv.BROKEN_CARET,lR=void 0!==/()??/.exec("")[1];(aR||lR||oR||_v||qv)&&(tR=function(e){var t,n,r,i,c,a,o,l=this,u=Ov(l),d=Mv(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=zv(tR,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,Z=oR&&l.sticky,h=zv(Qv,l),b=l.source,p=0,I=d;if(Z&&(h=iR(h,"y",""),-1===rR(h,"g")&&(h+="g"),I=cR(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==nR(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",h)),lR&&(n=new RegExp("^"+b+"$(?!\\s)",h)),aR&&(r=l.lastIndex),i=zv(eR,Z?n:l,I),Z?i?(i.input=cR(i.input,p),i[0]=cR(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:aR&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),lR&&i&&i.length>1&&zv($v,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=a=Dv(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=i[o[1]];return i});var uR=tR;yi({target:"RegExp",proto:!0,forced:/./.exec!==uR},{exec:uR});var dR=bn.exports,sR=Ot,mR=function(e,t,n){return n.get&&dR(n.get,t,{getter:!0}),n.set&&dR(n.set,t,{setter:!0}),sR.f(e,t,n)},ZR=J,hR=mR,bR=AC,pR=Y,IR=RegExp.prototype;ZR&&pR((function(){return"sy"!==Object.getOwnPropertyDescriptor(IR,"flags").get.call({dotAll:!0,sticky:!0})}))&&hR(IR,"flags",{configurable:!0,get:bR});var gR=R,yR=J,XR=OC.MISSED_STICKY,fR=_,GR=mR,VR=er.get,WR=RegExp.prototype,CR=gR.TypeError;yR&&XR&&GR(WR,"sticky",{configurable:!0,get:function(){if(this!==WR){if("RegExp"===fR(this))return!!VR(this).sticky;throw CR("Incompatible receiver, RegExp required")}}});var vR,RR,SR=yi,YR=R,JR=H,KR=P,NR=ue,LR=se,HR=(vR=!1,(RR=/[ac]/).exec=function(){return vR=!0,/./.exec.apply(this,arguments)},!0===RR.test("abc")&&vR),xR=YR.Error,UR=KR(/./.test);SR({target:"RegExp",proto:!0,forced:!HR},{test:function(e){var t=this.exec;if(!NR(t))return UR(this,e);var n=JR(t,this,e);if(null!==n&&!LR(n))throw new xR("RegExp exec method returned something other than an Object or null");return!!n}});var kR=fn.PROPER,AR=Ir,wR=nn,FR=Ni,TR=Y,BR=jC,zR=RegExp.prototype.toString,jR=TR((function(){return"/a/b"!=zR.call({source:"a",flags:"b"})})),MR=kR&&"toString"!=zR.name;(jR||MR)&&AR(RegExp.prototype,"toString",(function(){var e=wR(this);return"/"+FR(e.source)+"/"+FR(BR(e))}),{unsafe:!0}),ip("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Ip);var QR=P,PR=fr,ER=Ni,DR=ce,OR=QR("".charAt),_R=QR("".charCodeAt),qR=QR("".slice),$R=function(e){return function(t,n){var r,i,c=ER(DR(t)),a=PR(n),o=c.length;return a<0||a>=o?e?"":void 0:(r=_R(c,a))<55296||r>56319||a+1===o||(i=_R(c,a+1))<56320||i>57343?e?OR(c,a):r:e?qR(c,a,a+2):i-56320+(r-55296<<10)+65536}},eS={codeAt:$R(!1),charAt:$R(!0)},tS=eS.codeAt;yi({target:"String",proto:!0},{codePointAt:function(e){return tS(this,e)}});var nS,rS=UC,iS=R.TypeError,cS=function(e){if(rS(e))throw iS("The method doesn't accept regular expressions");return e},aS=Gt("match"),oS=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[aS]=!1,"/./"[e](t)}catch(e){}}return!1},lS=yi,uS=P,dS=S.f,sS=Sr,mS=Ni,ZS=cS,hS=ce,bS=oS,pS=uS("".endsWith),IS=uS("".slice),gS=Math.min,yS=bS("endsWith");lS({target:"String",proto:!0,forced:!!(yS||(nS=dS(String.prototype,"endsWith"),!nS||nS.writable))&&!yS},{endsWith:function(e){var t=mS(hS(this));ZS(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:gS(sS(n),r),c=mS(e);return pS?pS(t,c,i):IS(t,i-c.length,i)===c}});var XS=yi,fS=P,GS=Cr,VS=R.RangeError,WS=String.fromCharCode,CS=String.fromCodePoint,vS=fS([].join);XS({target:"String",stat:!0,arity:1,forced:!!CS&&1!=CS.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],GS(t,1114111)!==t)throw VS(t+" is not a valid code point");n[i]=t<65536?WS(t):WS(55296+((t-=65536)>>10),t%1024+56320)}return vS(n,"")}});var RS=yi,SS=cS,YS=ce,JS=Ni,KS=oS,NS=P("".indexOf);RS({target:"String",proto:!0,forced:!KS("includes")},{includes:function(e){return!!~NS(JS(YS(this)),JS(SS(e)),arguments.length>1?arguments[1]:void 0)}});var LS=eS.charAt,HS=Ni,xS=er,US=Hs,kS=xS.set,AS=xS.getterFor("String Iterator");US(String,"String",(function(e){kS(this,{type:"String Iterator",string:HS(e),index:0})}),(function(){var e,t=AS(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=LS(n,r),t.index+=e.length,{value:e,done:!1})}));var wS=P,FS=Ir,TS=uR,BS=Y,zS=Gt,jS=hn,MS=zS("species"),QS=RegExp.prototype,PS=function(e,t,n,r){var i=zS(e),c=!BS((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=c&&!BS((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[MS]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!a||n){var o=wS(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var a=wS(e),l=t.exec;return l===TS||l===QS.exec?c&&!i?{done:!0,value:o(t,n,r)}:{done:!0,value:a(n,t,r)}:{done:!1}}));FS(String.prototype,e,l[0]),FS(QS,i,l[1])}r&&jS(QS[i],"sham",!0)},ES=eS.charAt,DS=function(e,t,n){return t+(n?ES(e,t).length:1)},OS=H,_S=nn,qS=ue,$S=_,eY=uR,tY=R.TypeError,nY=function(e,t){var n=e.exec;if(qS(n)){var r=OS(n,e,t);return null!==r&&_S(r),r}if("RegExp"===$S(e))return OS(eY,e,t);throw tY("RegExp#exec called on incompatible receiver")},rY=H,iY=nn,cY=Sr,aY=Ni,oY=ce,lY=Be,uY=DS,dY=nY;PS("match",(function(e,t,n){return[function(t){var n=oY(this),r=null==t?void 0:lY(t,e);return r?rY(r,t,n):new RegExp(t)[e](aY(n))},function(e){var r=iY(this),i=aY(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return dY(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=dY(r,i));){var d=aY(o[0]);l[u]=d,""===d&&(r.lastIndex=uY(i,cY(r.lastIndex),a)),u++}return 0===u?null:l}]}));var sY=yi,mY=R,ZY=H,hY=P,bY=ls,pY=ce,IY=Sr,gY=Ni,yY=nn,XY=UC,fY=jC,GY=Be,VY=Ir,WY=Y,CY=hf,vY=DS,RY=nY,SY=er,YY=Gt("matchAll"),JY=SY.set,KY=SY.getterFor("RegExp String Iterator"),NY=RegExp.prototype,LY=mY.TypeError,HY=hY("".indexOf),xY=hY("".matchAll),UY=!!xY&&!WY((function(){xY("a",/./)})),kY=bY((function(e,t,n,r){JY(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=KY(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=RY(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===gY(r[0])&&(t.lastIndex=vY(n,IY(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),AY=function(e){var t,n,r,i=yY(this),c=gY(e),a=CY(i,RegExp),o=gY(fY(i));return t=new a(a===RegExp?i.source:i,o),n=!!~HY(o,"g"),r=!!~HY(o,"u"),t.lastIndex=IY(i.lastIndex),new kY(t,c,n,r)};sY({target:"String",proto:!0,forced:UY},{matchAll:function(e){var t,n,r,i=pY(this);if(null!=e){if(XY(e)&&(t=gY(pY(fY(e))),!~HY(t,"g")))throw LY("`.matchAll` does not allow non-global regexes");if(UY)return xY(i,e);if(r=GY(e,YY))return ZY(r,e,i)}else if(UY)return xY(i,e);return n=gY(i),new RegExp(e,"g")[YY](n)}}),YY in NY||VY(NY,YY,AY);var wY=P,FY=Sr,TY=Ni,BY=ce,zY=wY(jg),jY=wY("".slice),MY=Math.ceil,QY=function(e){return function(t,n,r){var i,c,a=TY(BY(t)),o=FY(n),l=a.length,u=void 0===r?" ":TY(r);return o<=l||""==u?a:((c=zY(u,MY((i=o-l)/u.length))).length>i&&(c=jY(c,0,i)),e?a+c:c+a)}},PY={start:QY(!1),end:QY(!0)},EY=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Ie),DY=PY.end;yi({target:"String",proto:!0,forced:EY},{padEnd:function(e){return DY(this,e,arguments.length>1?arguments[1]:void 0)}});var OY=PY.start;yi({target:"String",proto:!0,forced:EY},{padStart:function(e){return OY(this,e,arguments.length>1?arguments[1]:void 0)}});var _Y=yi,qY=P,$Y=le,eJ=rt,tJ=Ni,nJ=Jr,rJ=qY([].push),iJ=qY([].join);_Y({target:"String",stat:!0},{raw:function(e){for(var t=$Y(eJ(e).raw),n=nJ(t),r=arguments.length,i=[],c=0;n>c;){if(rJ(i,tJ(t[c++])),c===n)return iJ(i,"");c<r&&rJ(i,tJ(arguments[c]))}}}),yi({target:"String",proto:!0},{repeat:jg});var cJ=P,aJ=rt,oJ=Math.floor,lJ=cJ("".charAt),uJ=cJ("".replace),dJ=cJ("".slice),sJ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,mJ=/\$([$&'`]|\d{1,2})/g,ZJ=Bo,hJ=H,bJ=P,pJ=PS,IJ=Y,gJ=nn,yJ=ue,XJ=fr,fJ=Sr,GJ=Ni,VJ=ce,WJ=DS,CJ=Be,vJ=function(e,t,n,r,i,c){var a=n+e.length,o=r.length,l=mJ;return void 0!==i&&(i=aJ(i),l=sJ),uJ(c,l,(function(c,l){var u;switch(lJ(l,0)){case"$":return"$";case"&":return e;case"`":return dJ(t,0,n);case"'":return dJ(t,a);case"<":u=i[dJ(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>o){var s=oJ(d/10);return 0===s?c:s<=o?void 0===r[s-1]?lJ(l,1):r[s-1]+lJ(l,1):c}u=r[d-1]}return void 0===u?"":u}))},RJ=nY,SJ=Gt("replace"),YJ=Math.max,JJ=Math.min,KJ=bJ([].concat),NJ=bJ([].push),LJ=bJ("".indexOf),HJ=bJ("".slice),xJ="$0"==="a".replace(/./,"$0"),UJ=!!/./[SJ]&&""===/./[SJ]("a","$0"),kJ=!IJ((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));pJ("replace",(function(e,t,n){var r=UJ?"$":"$0";return[function(e,n){var r=VJ(this),i=null==e?void 0:CJ(e,SJ);return i?hJ(i,e,r,n):hJ(t,GJ(r),e,n)},function(e,i){var c=gJ(this),a=GJ(e);if("string"==typeof i&&-1===LJ(i,r)&&-1===LJ(i,"$<")){var o=n(t,c,a,i);if(o.done)return o.value}var l=yJ(i);l||(i=GJ(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=RJ(c,a);if(null===m)break;if(NJ(s,m),!u)break;""===GJ(m[0])&&(c.lastIndex=WJ(a,fJ(c.lastIndex),d))}for(var Z,h="",b=0,p=0;p<s.length;p++){for(var I=GJ((m=s[p])[0]),g=YJ(JJ(XJ(m.index),a.length),0),y=[],X=1;X<m.length;X++)NJ(y,void 0===(Z=m[X])?Z:String(Z));var f=m.groups;if(l){var G=KJ([I],y,g,a);void 0!==f&&NJ(G,f);var V=GJ(ZJ(i,void 0,G))}else V=vJ(I,a,g,y,f,i);g>=b&&(h+=HJ(a,b,g)+V,b=g+I.length)}return h+HJ(a,b)}]}),!kJ||!xJ||UJ);var AJ=H,wJ=nn,FJ=ce,TJ=dX,BJ=Ni,zJ=Be,jJ=nY;PS("search",(function(e,t,n){return[function(t){var n=FJ(this),r=null==t?void 0:zJ(t,e);return r?AJ(r,t,n):new RegExp(t)[e](BJ(n))},function(e){var r=wJ(this),i=BJ(e),c=n(t,r,i);if(c.done)return c.value;var a=r.lastIndex;TJ(a,0)||(r.lastIndex=0);var o=jJ(r,i);return TJ(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var MJ=Bo,QJ=H,PJ=P,EJ=PS,DJ=UC,OJ=nn,_J=ce,qJ=hf,$J=DS,eK=Sr,tK=Ni,nK=Be,rK=Zc,iK=nY,cK=uR,aK=Y,oK=OC.UNSUPPORTED_Y,lK=Math.min,uK=[].push,dK=PJ(/./.exec),sK=PJ(uK),mK=PJ("".slice),ZK=!aK((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));EJ("split",(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=tK(_J(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!DJ(e))return QJ(t,r,e,i);for(var c,a,o,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),d=0,s=new RegExp(e.source,u+"g");(c=QJ(cK,s,r))&&!((a=s.lastIndex)>d&&(sK(l,mK(r,d,c.index)),c.length>1&&c.index<r.length&&MJ(uK,l,rK(c,1)),o=c[0].length,d=a,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!o&&dK(s,"")||sK(l,""):sK(l,mK(r,d)),l.length>i?rK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:QJ(t,this,e,n)}:t,[function(t,n){var i=_J(this),c=null==t?void 0:nK(t,e);return c?QJ(c,t,i,n):QJ(r,tK(i),t,n)},function(e,i){var c=OJ(this),a=tK(e),o=n(r,c,a,i,r!==t);if(o.done)return o.value;var l=qJ(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(oK?"g":"y"),s=new l(oK?"^(?:"+c.source+")":c,d),m=void 0===i?4294967295:i>>>0;if(0===m)return[];if(0===a.length)return null===iK(s,a)?[a]:[];for(var Z=0,h=0,b=[];h<a.length;){s.lastIndex=oK?0:h;var p,I=iK(s,oK?mK(a,h):a);if(null===I||(p=lK(eK(s.lastIndex+(oK?h:0)),a.length))===Z)h=$J(a,h,u);else{if(sK(b,mK(a,Z,h)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(sK(b,I[g]),b.length===m)return b;h=Z=p}}return sK(b,mK(a,Z)),b}]}),!ZK,oK);var hK=yi,bK=P,pK=S.f,IK=Sr,gK=Ni,yK=cS,XK=ce,fK=oS,GK=bK("".startsWith),VK=bK("".slice),WK=Math.min,CK=fK("startsWith"),vK=!CK&&!!function(){var e=pK(String.prototype,"startsWith");return e&&!e.writable}();hK({target:"String",proto:!0,forced:!vK&&!CK},{startsWith:function(e){var t=gK(XK(this));yK(e);var n=IK(WK(arguments.length>1?arguments[1]:void 0,t.length)),r=gK(e);return GK?GK(t,r,n):VK(t,n,n+r.length)===r}});var RK=fn.PROPER,SK=Y,YK=JI,JK=function(e){return SK((function(){return!!YK[e]()||"
"!=="
"[e]()||RK&&YK[e].name!==e}))},KK=AI.trim;yi({target:"String",proto:!0,forced:JK("trim")},{trim:function(){return KK(this)}});var NK=AI.end,LK=JK("trimEnd")?function(){return NK(this)}:"".trimEnd;yi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==LK},{trimRight:LK});yi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==LK},{trimEnd:LK});var HK=AI.start,xK=JK("trimStart")?function(){return HK(this)}:"".trimStart;yi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==xK},{trimLeft:xK});yi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==xK},{trimStart:xK});var UK=ce,kK=Ni,AK=/"/g,wK=P("".replace),FK=function(e,t,n,r){var i=kK(UK(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+wK(kK(r),AK,""")+'"'),c+">"+i+"</"+t+">"},TK=Y,BK=function(e){return TK((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},zK=FK;yi({target:"String",proto:!0,forced:BK("anchor")},{anchor:function(e){return zK(this,"a","name",e)}});var jK=FK;yi({target:"String",proto:!0,forced:BK("big")},{big:function(){return jK(this,"big","","")}});var MK=FK;yi({target:"String",proto:!0,forced:BK("blink")},{blink:function(){return MK(this,"blink","","")}});var QK=FK;yi({target:"String",proto:!0,forced:BK("bold")},{bold:function(){return QK(this,"b","","")}});var PK=FK;yi({target:"String",proto:!0,forced:BK("fixed")},{fixed:function(){return PK(this,"tt","","")}});var EK=FK;yi({target:"String",proto:!0,forced:BK("fontcolor")},{fontcolor:function(e){return EK(this,"font","color",e)}});var DK=FK;yi({target:"String",proto:!0,forced:BK("fontsize")},{fontsize:function(e){return DK(this,"font","size",e)}});var OK=FK;yi({target:"String",proto:!0,forced:BK("italics")},{italics:function(){return OK(this,"i","","")}});var _K=FK;yi({target:"String",proto:!0,forced:BK("link")},{link:function(e){return _K(this,"a","href",e)}});var qK=FK;yi({target:"String",proto:!0,forced:BK("small")},{small:function(){return qK(this,"small","","")}});var $K=FK;yi({target:"String",proto:!0,forced:BK("strike")},{strike:function(){return $K(this,"strike","","")}});var eN=FK;yi({target:"String",proto:!0,forced:BK("sub")},{sub:function(){return eN(this,"sub","","")}});var tN=FK;yi({target:"String",proto:!0,forced:BK("sup")},{sup:function(){return tN(this,"sup","","")}});var nN,rN,iN,cN={exports:{}},aN=bZ,oN=J,lN=R,uN=ue,dN=se,sN=at,mN=Yi,ZN=Ue,hN=hn,bN=Ir,pN=Ot.f,IN=pe,gN=Pd,yN=Is,XN=Gt,fN=st,GN=lN.Int8Array,VN=GN&&GN.prototype,WN=lN.Uint8ClampedArray,CN=WN&&WN.prototype,vN=GN&&gN(GN),RN=VN&&gN(VN),SN=Object.prototype,YN=lN.TypeError,JN=XN("toStringTag"),KN=fN("TYPED_ARRAY_TAG"),NN=fN("TYPED_ARRAY_CONSTRUCTOR"),LN=aN&&!!yN&&"Opera"!==mN(lN.opera),HN=!1,xN={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},UN={BigInt64Array:8,BigUint64Array:8},kN=function(e){if(!dN(e))return!1;var t=mN(e);return sN(xN,t)||sN(UN,t)};for(nN in xN)(iN=(rN=lN[nN])&&rN.prototype)?hN(iN,NN,rN):LN=!1;for(nN in UN)(iN=(rN=lN[nN])&&rN.prototype)&&hN(iN,NN,rN);if((!LN||!uN(vN)||vN===Function.prototype)&&(vN=function(){throw YN("Incorrect invocation")},LN))for(nN in xN)lN[nN]&&yN(lN[nN],vN);if((!LN||!RN||RN===SN)&&(RN=vN.prototype,LN))for(nN in xN)lN[nN]&&yN(lN[nN].prototype,RN);if(LN&&gN(CN)!==RN&&yN(CN,RN),oN&&!sN(RN,JN))for(nN in HN=!0,pN(RN,JN,{get:function(){return dN(this)?this[KN]:void 0}}),xN)lN[nN]&&hN(lN[nN],KN,nN);var AN={NATIVE_ARRAY_BUFFER_VIEWS:LN,TYPED_ARRAY_CONSTRUCTOR:NN,TYPED_ARRAY_TAG:HN&&KN,aTypedArray:function(e){if(kN(e))return e;throw YN("Target is not a typed array")},aTypedArrayConstructor:function(e){if(uN(e)&&(!yN||IN(vN,e)))return e;throw YN(ZN(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(oN){if(n)for(var i in xN){var c=lN[i];if(c&&sN(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}RN[e]&&!n||bN(RN,e,n?t:LN&&VN[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(oN){if(yN){if(n)for(r in xN)if((i=lN[r])&&sN(i,e))try{delete i[e]}catch(e){}if(vN[e]&&!n)return;try{return bN(vN,e,n?t:LN&&vN[e]||t)}catch(e){}}for(r in xN)!(i=lN[r])||i[e]&&!n||bN(i,e,t)}},isView:function(e){if(!dN(e))return!1;var t=mN(e);return"DataView"===t||sN(xN,t)||sN(UN,t)},isTypedArray:kN,TypedArray:vN,TypedArrayPrototype:RN},wN=R,FN=Y,TN=Kd,BN=AN.NATIVE_ARRAY_BUFFER_VIEWS,zN=wN.ArrayBuffer,jN=wN.Int8Array,MN=!BN||!FN((function(){jN(1)}))||!FN((function(){new jN(-1)}))||!TN((function(e){new jN,new jN(null),new jN(1.5),new jN(e)}),!0)||FN((function(){return 1!==new jN(new zN(2),1,void 0).length})),QN=fr,PN=R.RangeError,EN=function(e){var t=QN(e);if(t<0)throw PN("The argument can't be less than 0");return t},DN=R.RangeError,ON=function(e,t){var n=EN(e);if(n%t)throw DN("Wrong offset");return n},_N=Ac,qN=H,$N=df,eL=rt,tL=Jr,nL=hd,rL=od,iL=nd,cL=AN.aTypedArrayConstructor,aL=function(e){var t,n,r,i,c,a,o=$N(this),l=eL(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=rL(l);if(m&&!iL(m))for(a=(c=nL(l,m)).next,l=[];!(i=qN(a,c)).done;)l.push(i.value);for(s&&u>2&&(d=_N(d,arguments[2])),n=tL(l),r=new(cL(o))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},oL=yi,lL=R,uL=H,dL=J,sL=MN,mL=AN,ZL=Yh,hL=XZ,bL=T,pL=hn,IL=bg,gL=Sr,yL=WZ,XL=ON,fL=Ht,GL=at,VL=Yi,WL=se,CL=He,vL=nc,RL=pe,SL=Is,YL=gr.f,JL=aL,KL=pa.forEach,NL=nZ,LL=Ot,HL=S,xL=zb,UL=er.get,kL=er.set,AL=LL.f,wL=HL.f,FL=Math.round,TL=lL.RangeError,BL=ZL.ArrayBuffer,zL=BL.prototype,jL=ZL.DataView,ML=mL.NATIVE_ARRAY_BUFFER_VIEWS,QL=mL.TYPED_ARRAY_CONSTRUCTOR,PL=mL.TYPED_ARRAY_TAG,EL=mL.TypedArray,DL=mL.TypedArrayPrototype,OL=mL.aTypedArrayConstructor,_L=mL.isTypedArray,qL=function(e,t){OL(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},$L=function(e,t){AL(e,t,{get:function(){return UL(this)[t]}})},eH=function(e){var t;return RL(zL,e)||"ArrayBuffer"==(t=VL(e))||"SharedArrayBuffer"==t},tH=function(e,t){return _L(e)&&!CL(t)&&t in e&&IL(+t)&&t>=0},nH=function(e,t){return t=fL(t),tH(e,t)?bL(2,e[t]):wL(e,t)},rH=function(e,t,n){return t=fL(t),!(tH(e,t)&&WL(n)&&GL(n,"value"))||GL(n,"get")||GL(n,"set")||n.configurable||GL(n,"writable")&&!n.writable||GL(n,"enumerable")&&!n.enumerable?AL(e,t,n):(e[t]=n.value,e)};dL?(ML||(HL.f=nH,LL.f=rH,$L(DL,"buffer"),$L(DL,"byteOffset"),$L(DL,"byteLength"),$L(DL,"length")),oL({target:"Object",stat:!0,forced:!ML},{getOwnPropertyDescriptor:nH,defineProperty:rH}),cN.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,a="set"+e,o=lL[i],l=o,u=l&&l.prototype,d={},s=function(e,t){AL(e,t,{get:function(){return function(e,t){var n=UL(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=UL(e);n&&(i=(i=FL(i))<0?0:i>255?255:255&i),c.view[a](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};ML?sL&&(l=t((function(e,t,n,i){return hL(e,u),xL(WL(t)?eH(t)?void 0!==i?new o(t,XL(n,r),i):void 0!==n?new o(t,XL(n,r)):new o(t):_L(t)?qL(l,t):uL(JL,l,t):new o(yL(t)),e,l)})),SL&&SL(l,EL),KL(YL(o),(function(e){e in l||pL(l,e,o[e])})),l.prototype=u):(l=t((function(e,t,n,i){hL(e,u);var c,a,o,d=0,m=0;if(WL(t)){if(!eH(t))return _L(t)?qL(l,t):uL(JL,l,t);c=t,m=XL(n,r);var Z=t.byteLength;if(void 0===i){if(Z%r)throw TL("Wrong length");if((a=Z-m)<0)throw TL("Wrong length")}else if((a=gL(i)*r)+m>Z)throw TL("Wrong length");o=a/r}else o=yL(t),c=new BL(a=o*r);for(kL(e,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new jL(c)});d<o;)s(e,d++)})),SL&&SL(l,EL),u=l.prototype=vL(DL)),u.constructor!==l&&pL(u,"constructor",l),pL(u,QL,l),PL&&pL(u,PL,i),d[i]=l,oL({global:!0,forced:l!=o,sham:!ML},d),"BYTES_PER_ELEMENT"in l||pL(l,"BYTES_PER_ELEMENT",r),"BYTES_PER_ELEMENT"in u||pL(u,"BYTES_PER_ELEMENT",r),NL(i)}):cN.exports=function(){},(0,cN.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,cN.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,cN.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var iH=AN,cH=P(du),aH=iH.aTypedArray;(0,iH.exportTypedArrayMethod)("copyWithin",(function(e,t){return cH(aH(this),e,t,arguments.length>2?arguments[2]:void 0)}));var oH=pa.every,lH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("every",(function(e){return oH(lH(this),e,arguments.length>1?arguments[1]:void 0)}));var uH=H,dH=Xu,sH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return uH(dH,sH(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var mH=Jr,ZH=hf,hH=AN.TYPED_ARRAY_CONSTRUCTOR,bH=AN.aTypedArrayConstructor,pH=function(e){return bH(ZH(e,e[hH]))},IH=function(e,t){for(var n=0,r=mH(t),i=new e(r);r>n;)i[n]=t[n++];return i},gH=pH,yH=pa.filter,XH=function(e,t){return IH(gH(e),t)},fH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("filter",(function(e){var t=yH(fH(this),e,arguments.length>1?arguments[1]:void 0);return XH(this,t)}));var GH=pa.find,VH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("find",(function(e){return GH(VH(this),e,arguments.length>1?arguments[1]:void 0)}));var WH=pa.findIndex,CH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("findIndex",(function(e){return WH(CH(this),e,arguments.length>1?arguments[1]:void 0)}));var vH=pa.forEach,RH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("forEach",(function(e){vH(RH(this),e,arguments.length>1?arguments[1]:void 0)})),(0,AN.exportTypedArrayStaticMethod)("from",aL,MN);var SH=xr.includes,YH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("includes",(function(e){return SH(YH(this),e,arguments.length>1?arguments[1]:void 0)}));var JH=xr.indexOf,KH=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("indexOf",(function(e){return JH(KH(this),e,arguments.length>1?arguments[1]:void 0)}));var NH=R,LH=Y,HH=P,xH=AN,UH=js,kH=Gt("iterator"),AH=NH.Uint8Array,wH=HH(UH.values),FH=HH(UH.keys),TH=HH(UH.entries),BH=xH.aTypedArray,zH=xH.exportTypedArrayMethod,jH=AH&&AH.prototype,MH=!LH((function(){jH[kH].call([1])})),QH=!!jH&&jH.values&&jH[kH]===jH.values&&"values"===jH.values.name,PH=function(){return wH(BH(this))};zH("entries",(function(){return TH(BH(this))}),MH),zH("keys",(function(){return FH(BH(this))}),MH),zH("values",PH,MH||!QH,{name:"values"}),zH(kH,PH,MH||!QH,{name:"values"});var EH=AN.aTypedArray,DH=AN.exportTypedArrayMethod,OH=P([].join);DH("join",(function(e){return OH(EH(this),e)}));var _H=Bo,qH=le,$H=fr,ex=Jr,tx=Ps,nx=Math.min,rx=[].lastIndexOf,ix=!!rx&&1/[1].lastIndexOf(1,-0)<0,cx=tx("lastIndexOf"),ax=ix||!cx?function(e){if(ix)return _H(rx,this,arguments)||0;var t=qH(this),n=ex(t),r=n-1;for(arguments.length>1&&(r=nx(r,$H(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:rx,ox=Bo,lx=ax,ux=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return ox(lx,ux(this),t>1?[e,arguments[1]]:[e])}));var dx=pa.map,sx=pH,mx=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("map",(function(e){return dx(mx(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(sx(e))(t)}))}));var Zx=AN.aTypedArrayConstructor;(0,AN.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(Zx(this))(t);t>e;)n[e]=arguments[e++];return n}),MN);var hx=Fe,bx=rt,px=re,Ix=Jr,gx=R.TypeError,yx=function(e){return function(t,n,r,i){hx(n);var c=bx(t),a=px(c),o=Ix(c),l=e?o-1:0,u=e?-1:1;if(r<2)for(;;){if(l in a){i=a[l],l+=u;break}if(l+=u,e?l<0:o<=l)throw gx("Reduce of empty array with no initial value")}for(;e?l>=0:o>l;l+=u)l in a&&(i=n(i,a[l],l,c));return i}},Xx={left:yx(!1),right:yx(!0)},fx=Xx.left,Gx=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return fx(Gx(this),e,t,t>1?arguments[1]:void 0)}));var Vx=Xx.right,Wx=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return Vx(Wx(this),e,t,t>1?arguments[1]:void 0)}));var Cx=AN.aTypedArray,vx=AN.exportTypedArrayMethod,Rx=Math.floor;vx("reverse",(function(){for(var e,t=this,n=Cx(t).length,r=Rx(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var Sx=R,Yx=H,Jx=AN,Kx=Jr,Nx=ON,Lx=rt,Hx=Y,xx=Sx.RangeError,Ux=Sx.Int8Array,kx=Ux&&Ux.prototype,Ax=kx&&kx.set,wx=Jx.aTypedArray,Fx=Jx.exportTypedArrayMethod,Tx=!Hx((function(){var e=new Uint8ClampedArray(2);return Yx(Ax,e,{length:1,0:3},1),3!==e[1]})),Bx=Tx&&Jx.NATIVE_ARRAY_BUFFER_VIEWS&&Hx((function(){var e=new Ux(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));Fx("set",(function(e){wx(this);var t=Nx(arguments.length>1?arguments[1]:void 0,1),n=Lx(e);if(Tx)return Yx(Ax,this,n,t);var r=this.length,i=Kx(n),c=0;if(i+t>r)throw xx("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!Tx||Bx);var zx=pH,jx=zo,Mx=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("slice",(function(e,t){for(var n=jx(Mx(this),e,t),r=zx(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),Y((function(){new Int8Array(1).slice()})));var Qx=pa.some,Px=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("some",(function(e){return Qx(Px(this),e,arguments.length>1?arguments[1]:void 0)}));var Ex=P,Dx=Y,Ox=Fe,_x=vm,qx=Sm,$x=Ym,eU=We,tU=Km,nU=AN.aTypedArray,rU=AN.exportTypedArrayMethod,iU=R.Uint16Array,cU=iU&&Ex(iU.prototype.sort),aU=!(!cU||Dx((function(){cU(new iU(2),null)}))&&Dx((function(){cU(new iU(2),{})}))),oU=!!cU&&!Dx((function(){if(eU)return eU<74;if(qx)return qx<67;if($x)return!0;if(tU)return tU<602;var e,t,n=new iU(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(cU(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));rU("sort",(function(e){return void 0!==e&&Ox(e),oU?cU(this,e):_x(nU(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!oU||aU);var lU=Sr,uU=Cr,dU=pH,sU=AN.aTypedArray;(0,AN.exportTypedArrayMethod)("subarray",(function(e,t){var n=sU(this),r=n.length,i=uU(e,r);return new(dU(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,lU((void 0===t?r:uU(t,r))-i))}));var mU=Bo,ZU=AN,hU=Y,bU=zo,pU=R.Int8Array,IU=ZU.aTypedArray,gU=ZU.exportTypedArrayMethod,yU=[].toLocaleString,XU=!!pU&&hU((function(){yU.call(new pU(1))}));gU("toLocaleString",(function(){return mU(yU,XU?bU(IU(this)):IU(this),bU(arguments))}),hU((function(){return[1,2].toLocaleString()!=new pU([1,2]).toLocaleString()}))||!hU((function(){pU.prototype.toLocaleString.call([1,2])})));var fU=AN.exportTypedArrayMethod,GU=Y,VU=P,WU=R.Uint8Array,CU=WU&&WU.prototype||{},vU=[].toString,RU=VU([].join);GU((function(){vU.call({})}))&&(vU=function(){return RU(this)});var SU=CU.toString!=vU;fU("toString",vU,SU);var YU=P,JU=IZ,KU=nb.exports.getWeakData,NU=nn,LU=se,HU=XZ,xU=wb,UU=at,kU=er.set,AU=er.getterFor,wU=pa.find,FU=pa.findIndex,TU=YU([].splice),BU=0,zU=function(e){return e.frozen||(e.frozen=new jU)},jU=function(){this.entries=[]},MU=function(e,t){return wU(e.entries,(function(e){return e[0]===t}))};jU.prototype={get:function(e){var t=MU(this,e);if(t)return t[1]},has:function(e){return!!MU(this,e)},set:function(e,t){var n=MU(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=FU(this.entries,(function(t){return t[0]===e}));return~t&&TU(this.entries,t,1),!!~t}};var QU,PU={getConstructor:function(e,t,n,r){var i=e((function(e,i){HU(e,c),kU(e,{type:t,id:BU++,frozen:void 0}),null!=i&&xU(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=AU(t),o=function(e,t,n){var r=a(e),i=KU(NU(t),!0);return!0===i?zU(r).set(t,n):i[r.id]=n,e};return JU(c,{delete:function(e){var t=a(this);if(!LU(e))return!1;var n=KU(e);return!0===n?zU(t).delete(e):n&&UU(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!LU(e))return!1;var n=KU(e);return!0===n?zU(t).has(e):n&&UU(n,t.id)}}),JU(c,n?{get:function(e){var t=a(this);if(LU(e)){var n=KU(e);return!0===n?zU(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),i}},EU=R,DU=P,OU=IZ,_U=nb.exports,qU=ip,$U=PU,ek=se,tk=ub,nk=er.enforce,rk=Nn,ik=!EU.ActiveXObject&&"ActiveXObject"in EU,ck=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},ak=qU("WeakMap",ck,$U);if(rk&&ik){QU=$U.getConstructor(ck,"WeakMap",!0),_U.enable();var ok=ak.prototype,lk=DU(ok.delete),uk=DU(ok.has),dk=DU(ok.get),sk=DU(ok.set);OU(ok,{delete:function(e){if(ek(e)&&!tk(e)){var t=nk(this);return t.frozen||(t.frozen=new QU),lk(this,e)||t.frozen.delete(e)}return lk(this,e)},has:function(e){if(ek(e)&&!tk(e)){var t=nk(this);return t.frozen||(t.frozen=new QU),uk(this,e)||t.frozen.has(e)}return uk(this,e)},get:function(e){if(ek(e)&&!tk(e)){var t=nk(this);return t.frozen||(t.frozen=new QU),uk(this,e)?dk(this,e):t.frozen.get(e)}return dk(this,e)},set:function(e,t){if(ek(e)&&!tk(e)){var n=nk(this);n.frozen||(n.frozen=new QU),uk(this,e)?sk(this,e,t):n.frozen.set(e,t)}else sk(this,e,t);return this}})}ip("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),PU);var mk={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},Zk=At("span").classList,hk=Zk&&Zk.constructor&&Zk.constructor.prototype,bk=hk===Object.prototype?void 0:hk,pk=pa.forEach,Ik=R,gk=mk,yk=bk,Xk=Ps("forEach")?[].forEach:function(e){return pk(this,e,arguments.length>1?arguments[1]:void 0)},fk=hn,Gk=function(e){if(e&&e.forEach!==Xk)try{fk(e,"forEach",Xk)}catch(t){e.forEach=Xk}};for(var Vk in gk)gk[Vk]&&Gk(Ik[Vk]&&Ik[Vk].prototype);Gk(yk);var Wk=R,Ck=mk,vk=bk,Rk=js,Sk=hn,Yk=Gt,Jk=Yk("iterator"),Kk=Yk("toStringTag"),Nk=Rk.values,Lk=function(e,t){if(e){if(e[Jk]!==Nk)try{Sk(e,Jk,Nk)}catch(t){e[Jk]=Nk}if(e[Kk]||Sk(e,Kk,t),Ck[t])for(var n in Rk)if(e[n]!==Rk[n])try{Sk(e,n,Rk[n])}catch(t){e[n]=Rk[n]}}};for(var Hk in Ck)Lk(Wk[Hk]&&Wk[Hk].prototype,Hk);Lk(vk,"DOMTokenList");var xk=_f.clear;yi({global:!0,bind:!0,enumerable:!0,forced:R.clearImmediate!==xk},{clearImmediate:xk});var Uk=_f.set;yi({global:!0,bind:!0,enumerable:!0,forced:R.setImmediate!==Uk},{setImmediate:Uk});var kk=yi,Ak=bG,wk=Fe,Fk=pf,Tk=af,Bk=R.process;kk({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){Fk(arguments.length,1),wk(e);var t=Tk&&Bk.domain;Ak(t?t.bind(e):e)}});var zk=Y,jk=Gt("iterator"),Mk=!zk((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[jk]||"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"!==n||"x"!==new URL("http://x",void 0).host})),Qk=P,Pk=/[^\0-\u007E]/,Ek=/[.\u3002\uFF0E\uFF61]/g,Dk="Overflow: input needs wider integers to process",Ok=R.RangeError,_k=Qk(Ek.exec),qk=Math.floor,$k=String.fromCharCode,eA=Qk("".charCodeAt),tA=Qk([].join),nA=Qk([].push),rA=Qk("".replace),iA=Qk("".split),cA=Qk("".toLowerCase),aA=function(e){return e+22+75*(e<26)},oA=function(e,t,n){var r=0;for(e=n?qk(e/700):e>>1,e+=qk(e/t);e>455;)e=qk(e/35),r+=36;return qk(r+36*e/(e+38))},lA=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=eA(e,n++);if(i>=55296&&i<=56319&&n<r){var c=eA(e,n++);56320==(64512&c)?nA(t,((1023&i)<<10)+(1023&c)+65536):(nA(t,i),n--)}else nA(t,i)}return t}(e);var n,r,i=e.length,c=128,a=0,o=72;for(n=0;n<e.length;n++)(r=e[n])<128&&nA(t,$k(r));var l=t.length,u=l;for(l&&nA(t,"-");u<i;){var d=2147483647;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>qk((2147483647-a)/s))throw Ok(Dk);for(a+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++a>2147483647)throw Ok(Dk);if(r==c){for(var m=a,Z=36;;){var h=Z<=o?1:Z>=o+26?26:Z-o;if(m<h)break;var b=m-h,p=36-h;nA(t,$k(aA(h+b%p))),m=qk(b/p),Z+=36}nA(t,$k(aA(m))),o=oA(a,s,u==l),a=0,u++}}a++,c++}return tA(t,"")},uA=yi,dA=R,sA=H,mA=P,ZA=J,hA=Mk,bA=Ir,pA=IZ,IA=Hc,gA=ls,yA=er,XA=XZ,fA=ue,GA=at,VA=Ac,WA=Yi,CA=nn,vA=se,RA=Ni,SA=nc,YA=T,JA=hd,KA=od,NA=pf,LA=vm,HA=Gt("iterator"),xA=yA.set,UA=yA.getterFor("URLSearchParams"),kA=yA.getterFor("URLSearchParamsIterator"),AA=Object.getOwnPropertyDescriptor,wA=function(e){if(!ZA)return dA[e];var t=AA(dA,e);return t&&t.value},FA=wA("fetch"),TA=wA("Request"),BA=wA("Headers"),zA=TA&&TA.prototype,jA=BA&&BA.prototype,MA=dA.RegExp,QA=dA.TypeError,PA=dA.decodeURIComponent,EA=dA.encodeURIComponent,DA=mA("".charAt),OA=mA([].join),_A=mA([].push),qA=mA("".replace),$A=mA([].shift),ew=mA([].splice),tw=mA("".split),nw=mA("".slice),rw=/\+/g,iw=Array(4),cw=function(e){return iw[e-1]||(iw[e-1]=MA("((?:%[\\da-f]{2}){"+e+"})","gi"))},aw=function(e){try{return PA(e)}catch(t){return e}},ow=function(e){var t=qA(e,rw," "),n=4;try{return PA(t)}catch(e){for(;n;)t=qA(t,cw(n--),aw);return t}},lw=/[!'()~]|%20/g,uw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},dw=function(e){return uw[e]},sw=function(e){return qA(EA(e),lw,dw)},mw=gA((function(e,t){xA(this,{type:"URLSearchParamsIterator",iterator:JA(UA(e).entries),kind:t})}),"Iterator",(function(){var e=kA(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),Zw=function(e){this.entries=[],this.url=null,void 0!==e&&(vA(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===DA(e,0)?nw(e,1):e:RA(e)))};Zw.prototype={type:"URLSearchParams",bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,a,o,l=KA(e);if(l)for(n=(t=JA(e,l)).next;!(r=sA(n,t)).done;){if(c=(i=JA(CA(r.value))).next,(a=sA(c,i)).done||(o=sA(c,i)).done||!sA(c,i).done)throw QA("Expected sequence with length 2");_A(this.entries,{key:RA(a.value),value:RA(o.value)})}else for(var u in e)GA(e,u)&&_A(this.entries,{key:u,value:RA(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=tw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=tw(t,"="),_A(this.entries,{key:ow($A(n)),value:ow(OA(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],_A(n,sw(e.key)+"="+sw(e.value));return OA(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var hw=function(){XA(this,bw);var e=arguments.length>0?arguments[0]:void 0;xA(this,new Zw(e))},bw=hw.prototype;if(pA(bw,{append:function(e,t){NA(arguments.length,2);var n=UA(this);_A(n.entries,{key:RA(e),value:RA(t)}),n.updateURL()},delete:function(e){NA(arguments.length,1);for(var t=UA(this),n=t.entries,r=RA(e),i=0;i<n.length;)n[i].key===r?ew(n,i,1):i++;t.updateURL()},get:function(e){NA(arguments.length,1);for(var t=UA(this).entries,n=RA(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){NA(arguments.length,1);for(var t=UA(this).entries,n=RA(e),r=[],i=0;i<t.length;i++)t[i].key===n&&_A(r,t[i].value);return r},has:function(e){NA(arguments.length,1);for(var t=UA(this).entries,n=RA(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){NA(arguments.length,1);for(var n,r=UA(this),i=r.entries,c=!1,a=RA(e),o=RA(t),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?ew(i,l--,1):(c=!0,n.value=o));c||_A(i,{key:a,value:o}),r.updateURL()},sort:function(){var e=UA(this);LA(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=UA(this).entries,r=VA(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new mw(this,"keys")},values:function(){return new mw(this,"values")},entries:function(){return new mw(this,"entries")}},{enumerable:!0}),bA(bw,HA,bw.entries,{name:"entries"}),bA(bw,"toString",(function(){return UA(this).serialize()}),{enumerable:!0}),IA(hw,"URLSearchParams"),uA({global:!0,forced:!hA},{URLSearchParams:hw}),!hA&&fA(BA)){var pw=mA(jA.has),Iw=mA(jA.set),gw=function(e){if(vA(e)){var t,n=e.body;if("URLSearchParams"===WA(n))return t=e.headers?new BA(e.headers):new BA,pw(t,"content-type")||Iw(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),SA(e,{body:YA(0,RA(n)),headers:YA(0,t)})}return e};if(fA(FA)&&uA({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return FA(e,arguments.length>1?gw(arguments[1]):{})}}),fA(TA)){var yw=function(e){return XA(this,zA),new TA(e,arguments.length>1?gw(arguments[1]):{})};zA.constructor=yw,yw.prototype=zA,uA({global:!0,forced:!0,noTargetGet:!0},{Request:yw})}}var Xw,fw=yi,Gw=J,Vw=Mk,Ww=R,Cw=Ac,vw=P,Rw=Ir,Sw=mR,Yw=XZ,Jw=at,Kw=Xy,Nw=vd,Lw=Zc,Hw=eS.codeAt,xw=function(e){var t,n,r=[],i=iA(rA(cA(e),Ek,"."),".");for(t=0;t<i.length;t++)n=i[t],nA(r,_k(Pk,n)?"xn--"+lA(n):n);return tA(r,".")},Uw=Ni,kw=Hc,Aw=pf,ww={URLSearchParams:hw,getState:UA},Fw=er,Tw=Fw.set,Bw=Fw.getterFor("URL"),zw=ww.URLSearchParams,jw=ww.getState,Mw=Ww.URL,Qw=Ww.TypeError,Pw=Ww.parseInt,Ew=Math.floor,Dw=Math.pow,Ow=vw("".charAt),_w=vw(/./.exec),qw=vw([].join),$w=vw(1..toString),eF=vw([].pop),tF=vw([].push),nF=vw("".replace),rF=vw([].shift),iF=vw("".split),cF=vw("".slice),aF=vw("".toLowerCase),oF=vw([].unshift),lF=/[a-z]/i,uF=/[\d+-.a-z]/i,dF=/\d/,sF=/^0x/i,mF=/^[0-7]+$/,ZF=/^\d+$/,hF=/^[\da-f]+$/i,bF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,pF=/[\0\t\n\r #/:<>?@[\\\]^|]/,IF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,gF=/[\t\n\r]/g,yF=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)oF(t,e%256),e=Ew(e/256);return qw(t,".")}if("object"==c(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=$w(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},XF={},fF=Kw({},XF,{" ":1,'"':1,"<":1,">":1,"`":1}),GF=Kw({},fF,{"#":1,"?":1,"{":1,"}":1}),VF=Kw({},GF,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),WF=function(e,t){var n=Hw(e,0);return n>32&&n<127&&!Jw(t,e)?e:encodeURIComponent(e)},CF={ftp:21,file:null,http:80,https:443,ws:80,wss:443},vF=function(e,t){var n;return 2==e.length&&_w(lF,Ow(e,0))&&(":"==(n=Ow(e,1))||!t&&"|"==n)},RF=function(e){var t;return e.length>1&&vF(cF(e,0,2))&&(2==e.length||"/"===(t=Ow(e,2))||"\\"===t||"?"===t||"#"===t)},SF=function(e){return"."===e||"%2e"===aF(e)},YF={},JF={},KF={},NF={},LF={},HF={},xF={},UF={},kF={},AF={},wF={},FF={},TF={},BF={},zF={},jF={},MF={},QF={},PF={},EF={},DF={},OF=function e(t,n,r){var i,c,a,o=Uw(t);if(n){if(c=this.parse(o))throw Qw(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(o,null,i))throw Qw(c);(a=jw(new zw)).bindURL(this),this.searchParams=a}};OF.prototype={type:"URL",parse:function(e,t,n){var r,i,c,a,o,l=this,u=t||YF,d=0,s="",m=!1,Z=!1,h=!1;for(e=Uw(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=nF(e,IF,"")),e=nF(e,gF,""),r=Nw(e);d<=r.length;){switch(i=r[d],u){case YF:if(!i||!_w(lF,i)){if(t)return"Invalid scheme";u=KF;continue}s+=aF(i),u=JF;break;case JF:if(i&&(_w(uF,i)||"+"==i||"-"==i||"."==i))s+=aF(i);else{if(":"!=i){if(t)return"Invalid scheme";s="",u=KF,d=0;continue}if(t&&(l.isSpecial()!=Jw(CF,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&CF[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=BF:l.isSpecial()&&n&&n.scheme==l.scheme?u=NF:l.isSpecial()?u=UF:"/"==r[d+1]?(u=LF,d++):(l.cannotBeABaseURL=!0,tF(l.path,""),u=PF)}break;case KF:if(!n||n.cannotBeABaseURL&&"#"!=i)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=Lw(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=DF;break}u="file"==n.scheme?BF:HF;continue;case NF:if("/"!=i||"/"!=r[d+1]){u=HF;continue}u=kF,d++;break;case LF:if("/"==i){u=AF;break}u=QF;continue;case HF:if(l.scheme=n.scheme,i==Xw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Lw(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=xF;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Lw(n.path),l.query="",u=EF;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Lw(n.path),l.path.length--,u=QF;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Lw(n.path),l.query=n.query,l.fragment="",u=DF}break;case xF:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=QF;continue}u=AF}else u=kF;break;case UF:if(u=kF,"/"!=i||"/"!=Ow(s,d+1))continue;d++;break;case kF:if("/"!=i&&"\\"!=i){u=AF;continue}break;case AF:if("@"==i){m&&(s="%40"+s),m=!0,c=Nw(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||h){var I=WF(p,VF);h?l.password+=I:l.username+=I}else h=!0}s=""}else if(i==Xw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=Nw(s).length+1,s="",u=wF}else s+=i;break;case wF:case FF:if(t&&"file"==l.scheme){u=jF;continue}if(":"!=i||Z){if(i==Xw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==s)return"Invalid host";if(t&&""==s&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(s))return a;if(s="",u=MF,t)return;continue}"["==i?Z=!0:"]"==i&&(Z=!1),s+=i}else{if(""==s)return"Invalid host";if(a=l.parseHost(s))return a;if(s="",u=TF,t==FF)return}break;case TF:if(!_w(dF,i)){if(i==Xw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=Pw(s,10);if(g>65535)return"Invalid port";l.port=l.isSpecial()&&g===CF[l.scheme]?null:g,s=""}if(t)return;u=MF;continue}return"Invalid port"}s+=i;break;case BF:if(l.scheme="file","/"==i||"\\"==i)u=zF;else{if(!n||"file"!=n.scheme){u=QF;continue}if(i==Xw)l.host=n.host,l.path=Lw(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=Lw(n.path),l.query="",u=EF;else{if("#"!=i){RF(qw(Lw(r,d),""))||(l.host=n.host,l.path=Lw(n.path),l.shortenPath()),u=QF;continue}l.host=n.host,l.path=Lw(n.path),l.query=n.query,l.fragment="",u=DF}}break;case zF:if("/"==i||"\\"==i){u=jF;break}n&&"file"==n.scheme&&!RF(qw(Lw(r,d),""))&&(vF(n.path[0],!0)?tF(l.path,n.path[0]):l.host=n.host),u=QF;continue;case jF:if(i==Xw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&vF(s))u=QF;else if(""==s){if(l.host="",t)return;u=MF}else{if(a=l.parseHost(s))return a;if("localhost"==l.host&&(l.host=""),t)return;s="",u=MF}continue}s+=i;break;case MF:if(l.isSpecial()){if(u=QF,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=Xw&&(u=QF,"/"!=i))continue}else l.fragment="",u=DF;else l.query="",u=EF;break;case QF:if(i==Xw||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(o=aF(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||tF(l.path,"")):SF(s)?"/"==i||"\\"==i&&l.isSpecial()||tF(l.path,""):("file"==l.scheme&&!l.path.length&&vF(s)&&(l.host&&(l.host=""),s=Ow(s,0)+":"),tF(l.path,s)),s="","file"==l.scheme&&(i==Xw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)rF(l.path);"?"==i?(l.query="",u=EF):"#"==i&&(l.fragment="",u=DF)}else s+=WF(i,GF);break;case PF:"?"==i?(l.query="",u=EF):"#"==i?(l.fragment="",u=DF):i!=Xw&&(l.path[0]+=WF(i,XF));break;case EF:t||"#"!=i?i!=Xw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":WF(i,XF)):(l.fragment="",u=DF);break;case DF:i!=Xw&&(l.fragment+=WF(i,fF))}d++}},parseHost:function(e){var t,n,r;if("["==Ow(e,0)){if("]"!=Ow(e,e.length-1))return"Invalid host";if(t=function(e){var t,n,r,i,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return Ow(e,s)};if(":"==m()){if(":"!=Ow(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&_w(hF,m());)t=16*t+Pw(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!_w(dF,m()))return;for(;_w(dF,m());){if(c=Pw(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;l[u++]=t}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(a=u-d,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[d+a-1],l[d+--a]=o;else if(8!=u)return;return l}(cF(e,1,-1)),!t)return"Invalid host";this.host=t}else if(this.isSpecial()){if(e=xw(e),_w(bF,e))return"Invalid host";if(t=function(e){var t,n,r,i,c,a,o,l=iF(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==Ow(i,0)&&(c=_w(sF,i)?16:8,i=cF(i,8==c?1:2)),""===i)a=0;else{if(!_w(10==c?ZF:8==c?mF:hF,i))return e;a=Pw(i,c)}tF(n,a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=Dw(256,5-t))return null}else if(a>255)return null;for(o=eF(n),r=0;r<n.length;r++)o+=n[r]*Dw(256,3-r);return o}(e),null===t)return"Invalid host";this.host=t}else{if(_w(pF,e))return"Invalid host";for(t="",n=Nw(e),r=0;r<n.length;r++)t+=WF(n[r],XF);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Jw(CF,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&vF(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,a=e.path,o=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=yF(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+qw(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw Qw(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new _F(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+yF(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(Uw(e)+":",YF)},getUsername:function(){return this.username},setUsername:function(e){var t=Nw(Uw(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=WF(t[n],VF)}},getPassword:function(){return this.password},setPassword:function(e){var t=Nw(Uw(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=WF(t[n],VF)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?yF(e):yF(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,wF)},getHostname:function(){var e=this.host;return null===e?"":yF(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,FF)},getPort:function(){var e=this.port;return null===e?"":Uw(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=Uw(e))?this.port=null:this.parse(e,TF))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+qw(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,MF))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=Uw(e))?this.query=null:("?"==Ow(e,0)&&(e=cF(e,1)),this.query="",this.parse(e,EF)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=Uw(e))?("#"==Ow(e,0)&&(e=cF(e,1)),this.fragment="",this.parse(e,DF)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var _F=function(e){var t=Yw(this,qF),n=Aw(arguments.length,1)>1?arguments[1]:void 0,r=Tw(t,new OF(e,!1,n));Gw||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},qF=_F.prototype,$F=function(e,t){return{get:function(){return Bw(this)[e]()},set:t&&function(e){return Bw(this)[t](e)},configurable:!0,enumerable:!0}};if(Gw&&(Sw(qF,"href",$F("serialize","setHref")),Sw(qF,"origin",$F("getOrigin")),Sw(qF,"protocol",$F("getProtocol","setProtocol")),Sw(qF,"username",$F("getUsername","setUsername")),Sw(qF,"password",$F("getPassword","setPassword")),Sw(qF,"host",$F("getHost","setHost")),Sw(qF,"hostname",$F("getHostname","setHostname")),Sw(qF,"port",$F("getPort","setPort")),Sw(qF,"pathname",$F("getPathname","setPathname")),Sw(qF,"search",$F("getSearch","setSearch")),Sw(qF,"searchParams",$F("getSearchParams")),Sw(qF,"hash",$F("getHash","setHash"))),Rw(qF,"toJSON",(function(){return Bw(this).serialize()}),{enumerable:!0}),Rw(qF,"toString",(function(){return Bw(this).serialize()}),{enumerable:!0}),Mw){var eT=Mw.createObjectURL,tT=Mw.revokeObjectURL;eT&&Rw(_F,"createObjectURL",Cw(eT,Mw)),tT&&Rw(_F,"revokeObjectURL",Cw(tT,Mw))}kw(_F,"URL"),fw({global:!0,forced:!Vw,sham:!Gw},{URL:_F});var nT,rT=H;function iT(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}
|
|
2
2
|
/*! *****************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation.
|
|
4
4
|
|
|
@@ -12,7 +12,7 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function $F(e,t,n,r){return new(n||(n=Promise))((function(i,c){function o(e){try{l(r.next(e))}catch(e){c(e)}}function a(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}))}mi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return _F(URL.prototype.toString,this)}}),function(e){e.formPost="form_post",e.query="query"}(DF||(DF={}));var eT,tT="{{token}}",nT="{{username}}",rT="{{scope}}",iT="{{clientID}}",cT="{{clientSecret}}";!function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(eT||(eT={}));var oT,aT="refresh_token_timer",lT="pkce_code_verifier",uT="#",dT=["RS256","RS512","RS384","PS256"],sT="ERR_JWT_CLAIM_VALIDATION_FAILED",mT="nbf",ZT="code",hT="session_state",bT="sign_out_url",pT="sign_out_success",IT="state",gT="openid";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(oT||(oT={}));var yT=d((function e(t,n,r){l(this,e),this.message=r,this.name=n,this.code=t,Object.setPrototypeOf(this,(this instanceof e?this.constructor:void 0).prototype)})),XT=function(){function e(){l(this,e)}return d(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=G(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(f(e.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();XT.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var GT,fT,VT=function(){function e(t,n){var r=this;l(this,e),this._dataLayer=t,this._config=function(){return $F(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return $F(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return d(e,[{key:"resolveEndpoints",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return $F(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));return r.includes(t)}))){e.next=7;break}throw new yT("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return e.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),Object.assign({},t)));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return $F(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=n.baseUrl){e.next=7;break}throw new yT("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},e.abrupt("return",Object.assign(Object.assign({},i),t));case 10:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new yT("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return t.prev=8,t.next=11,fetch(n,{credentials:r.sendCookiesInRequests?oT.Include:oT.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new yT("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=t.t0?t.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){t.next=24;break}return t.t1=yT,t.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),t.next=22,i.json();case 22:throw t.t3=t.sent,new t.t1("JS-AUTH_HELPER-VIT-HE03",t.t2,t.t3);case 24:return t.next=26,this._oidcProviderMetaData();case 26:return c=t.sent.issuer,t.next=29,i.json();case 29:return o=t.sent,a=o.keys,t.next=33,this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],a);case 33:return l=t.sent,t.t4=this._cryptoHelper,t.t5=e,t.t6=l,t.next=39,this._config();case 39:return t.t7=t.sent.clientID,t.t8=null!=c?c:"",t.t9=this._cryptoHelper.decodeIDToken(e).sub,t.next=44,this._config();case 44:return t.t10=t.sent.clockTolerance,t.abrupt("return",t.t4.isValidIdToken.call(t.t4,t.t5,t.t6,t.t7,t.t8,t.t9,t.t10));case 46:case"end":return t.stop()}}),t,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),o=XT.getTenantDomainFromIdTokenPayload(c),a=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=l&&u?"".concat(l," ").concat(u):l||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:o,username:a},XT.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(t);case 6:return o=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",o.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(o.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status&&e.ok){n.next=7;break}return n.t0=yT,n.t1="Invalid response status received for token request (".concat(e.statusText,")."),n.next=5,e.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,e.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return $F(c,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setSessionData(r,t);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},e.abrupt("return",Promise.resolve(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,t);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),WT=function(){function e(t){l(this,e),this._cryptoUtils=t}return d(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=C(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(e){i.e(e)}finally{i.f()}throw new yT("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+t.map((function(e){return e.kid})).join(", "))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,dT,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new yT("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(e){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==e?void 0:e.code)&&"nbf"===(null==e?void 0:e.claim)?Promise.reject(new yT("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new yT("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new yT("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),CT=function(){function e(t,n){var r=this;l(this,e),this._cryptoUtils=n,this._cryptoHelper=new WT(n),this._authenticationHelper=new VT(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return $F(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return $F(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return d(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return $F(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,f,V,W,v,R;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return o=c.sent,c.next=5,this._config();case 5:if(a=c.sent,o&&0!==o.trim().length){c.next=8;break}throw new yT("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return l=new URL(o),(u=new Map).set("response_type","code"),u.set("client_id",a.clientID),d="openid",a.scope&&a.scope.length>0&&(a.scope.includes("openid")||a.scope.push("openid"),d=a.scope.join(" ")),u.set("scope",d),u.set("redirect_uri",a.signInRedirectURL),a.responseMode&&u.set("response_mode",a.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(s=c.sent,!a.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),Z=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(s,m,t);case 19:u.set("code_challenge_method","S256"),u.set("code_challenge",Z);case 21:if(a.prompt&&u.set("prompt",a.prompt),h=e)for(b=0,p=Object.entries(h);b<p.length;b++)I=G(p[b],2),g=I[0],y=I[1],""!=g&&""!=y&&"state"!==g&&(X=g.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())})),u.set(X,y.toString()));u.set("state",XT.generateStateParamForRequestCorrelation(s,h?null===(i=h.state)||void 0===i?void 0:i.toString():"")),f=C(u.entries());try{for(f.s();!(V=f.n()).done;)W=G(V.value,2),v=W[0],R=W[1],l.searchParams.append(v,R)}catch(e){f.e(e)}finally{f.f()}return c.abrupt("return",l.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return $F(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(o=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new yT("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((a=[]).push("client_id=".concat(o.clientID)),o.clientSecret&&o.clientSecret.trim().length>0&&a.push("client_secret=".concat(o.clientSecret)),l=e,a.push("code=".concat(l)),a.push("grant_type=authorization_code"),a.push("redirect_uri=".concat(o.signInRedirectURL)),i.t1=o.enablePKCE,!i.t1){i.next=29;break}return i.t2=a,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(XT.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(XT.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:a.join("&"),credentials:o.sendCookiesInRequests?oT.Include:oT.SameOrigin,headers:new Headers(XT.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new yT("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(u.ok){i.next=45;break}return i.t7=yT,i.t8="Requesting access token failed with ".concat(u.statusText),i.next=43,u.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(u,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}throw new yT("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){t.next=13;break}throw new yT("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),t.prev=15,t.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?oT.Include:oT.SameOrigin,headers:new Headers(XT.getTokenRequestHeaders()),method:"POST"});case 18:o=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new yT("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=t.t0?t.t0:"The request to refresh the access token failed.");case 24:if(o.ok){t.next=31;break}return t.t1=yT,t.t2="Refreshing access token failed with ".concat(o.statusText),t.next=29,o.json();case 29:throw t.t3=t.sent,new t.t1("JS-AUTH_CORE-RAT2-HE04",t.t2,t.t3);case 31:return t.abrupt("return",this._authenticationHelper.handleTokenResponse(o,e));case 32:case"end":return t.stop()}}),t,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new yT("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.prev=18,t.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?oT.Include:oT.SameOrigin,headers:new Headers(XT.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new yT("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=t.t4?t.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){t.next=34;break}return t.t5=yT,t.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),t.next=32,c.json();case 32:throw t.t7=t.sent,new t.t5("JS-AUTH_CORE-RAT3-HE03",t.t6,t.t7);case 34:return t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),Promise.resolve(c)));case 35:case"end":return t.stop()}}),t,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a,l,u,d=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new yT("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(e.data).map((function(e){var n=G(e,2),r=n[0],i=n[1];return $F(d,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(o=n.sent,a=Object.assign({},XT.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},a),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},a=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:o.join("&"),credentials:i.sendCookiesInRequests?oT.Include:oT.SameOrigin,headers:new Headers(a),method:"POST"},n.prev=24,n.next=27,fetch(c,l);case 27:u=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new yT("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===u.status&&u.ok){n.next=40;break}return n.t8=yT,n.t9="Invalid response status received for the custom grant request. (".concat(u.statusText,")"),n.next=38,u.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!e.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(u,t),n.next=49;break;case 44:return n.t12=Promise,n.next=47,u.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:if(n=t.sent,t.t0=!e,!t.t0){t.next=8;break}return t.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:t.t0=t.sent;case 8:if(!t.t0){t.next=10;break}return t.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){t.next=36;break}return t.prev=12,t.next=15,fetch(r);case 15:if(200===(i=t.sent).status&&i.ok){t.next=18;break}throw new Error;case 18:t.next=23;break;case 20:throw t.prev=20,t.t1=t.catch(12),new yT("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return t.t2=this._dataLayer,t.t3=this._authenticationHelper,t.next=27,i.json();case 27:return t.t4=t.sent,t.next=30,t.t3.resolveEndpoints.call(t.t3,t.t4);case 30:return t.t5=t.sent,t.next=33,t.t2.setOIDCProviderMetaData.call(t.t2,t.t5);case 33:return t.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return t.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){t.next=52;break}return t.prev=37,t.t6=this._dataLayer,t.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return t.t7=t.sent,t.next=44,t.t6.setOIDCProviderMetaData.call(t.t6,t.t7);case 44:t.next=49;break;case 46:throw t.prev=46,t.t8=t.catch(37),new yT("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=t.t8?t.t8:"Resolving endpoints by base url failed.");case 49:return t.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return t.abrupt("return",Promise.resolve());case 52:return t.prev=52,t.t9=this._dataLayer,t.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return t.t10=t.sent,t.next=59,t.t9.setOIDCProviderMetaData.call(t.t9,t.t10);case 59:t.next=64;break;case 61:throw t.prev=61,t.t11=t.catch(52),new yT("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=t.t11?t.t11:"Resolving endpoints by explicitly failed.");case 64:return t.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return t.abrupt("return",Promise.resolve());case 67:case"end":return t.stop()}}),t,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,o,a,l,u;return $F(this,void 0,void 0,regeneratorRuntime.mark((function d(){var s;return regeneratorRuntime.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,this._oidcProviderMetaData();case 2:return s=d.sent,d.abrupt("return",{authorizationEndpoint:null!==(e=s.authorization_endpoint)&&void 0!==e?e:"",checkSessionIframe:null!==(t=s.check_session_iframe)&&void 0!==t?t:"",endSessionEndpoint:null!==(n=s.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=s.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=s.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=s.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(o=s.registration_endpoint)&&void 0!==o?o:"",revocationEndpoint:null!==(a=s.revocation_endpoint)&&void 0!==a?a:"",tokenEndpoint:null!==(l=s.token_endpoint)&&void 0!==l?l:"",userinfoEndpoint:null!==(u=s.userinfo_endpoint)&&void 0!==u?u:""});case 4:case"end":return d.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return $F(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(o=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new yT("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(e);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((a=i.t5)&&0!==a.trim().length){i.next=31;break}throw new yT("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((l=null!==(r=null==o?void 0:o.signOutRedirectURL)&&void 0!==r?r:null==o?void 0:o.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new yT("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(a,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return n=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(XT.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(XT.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:return t.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return t.stop()}}),t,this)})))}}]),e}(),vT=function(){function e(t,n){l(this,e),this._id=t,this._store=n}return d(e,[{key:"setDataInBulk",value:function(e,t){var n;return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),o=Object.assign(Object.assign({},c),t),a=JSON.stringify(o),r.next=17,this._store.setData(e,a);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return $F(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,a,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,o=c&&JSON.parse(c),a=Object.assign(Object.assign({},o),s({},t,n)),l=JSON.stringify(a),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(o=Object.assign({},c))[t],a=JSON.stringify(o),r.next=18,this._store.setData(e,a);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.setDataInBulk(this._resolveKey(eT.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.setDataInBulk(this._resolveKey(eT.OIDCProviderMetaData),e);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"setTemporaryData",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(eT.TemporaryData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionData",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(eT.SessionData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigData",value:function(){var e;return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=JSON,t.next=3,this._store.getData(this._resolveKey(eT.ConfigData));case 3:if(t.t2=e=t.sent,t.t1=null!==t.t2,!t.t1){t.next=7;break}t.t1=void 0!==e;case 7:if(!t.t1){t.next=11;break}t.t3=e,t.next=12;break;case 11:t.t3=null;case 12:return t.t4=t.t3,t.abrupt("return",t.t0.parse.call(t.t0,t.t4));case 14:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var e;return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=JSON,t.next=3,this._store.getData(this._resolveKey(eT.OIDCProviderMetaData));case 3:if(t.t2=e=t.sent,t.t1=null!==t.t2,!t.t1){t.next=7;break}t.t1=void 0!==e;case 7:if(!t.t1){t.next=11;break}t.t3=e,t.next=12;break;case 11:t.t3=null;case 12:return t.t4=t.t3,t.abrupt("return",t.t0.parse.call(t.t0,t.t4));case 14:case"end":return t.stop()}}),t,this)})))}},{key:"getTemporaryData",value:function(e){var t;return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(eT.TemporaryData,e));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionData",value:function(e){var t;return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(eT.SessionData,e));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"removeConfigData",value:function(){return $F(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(eT.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return $F(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(eT.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(eT.TemporaryData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(eT.SessionData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.getData(this._resolveKey(eT.ConfigData));case 2:return n=t.sent,t.abrupt("return",n&&JSON.parse(n)[e]);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.getData(this._resolveKey(eT.OIDCProviderMetaData));case 2:return n=t.sent,t.abrupt("return",n&&JSON.parse(n)[e]);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getTemporaryDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(eT.TemporaryData,t));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(eT.SessionData,t));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"setConfigDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(eT.ConfigData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(eT.OIDCProviderMetaData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(e,t,n){return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(eT.TemporaryData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionDataParameter",value:function(e,t,n){return $F(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(eT.SessionData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigDataParameter",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.removeValue(this._resolveKey(eT.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.removeValue(this._resolveKey(eT.OIDCProviderMetaData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(eT.TemporaryData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionDataParameter",value:function(e,t){return $F(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(eT.SessionData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}}]),e}(),RT={clockTolerance:300,enablePKCE:!0,responseMode:DF.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},ST=function(){
|
|
15
|
+
***************************************************************************** */function cT(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}yi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return rT(URL.prototype.toString,this)}}),function(e){e.formPost="form_post",e.query="query"}(nT||(nT={}));var aT,oT="{{token}}",lT="{{username}}",uT="{{scope}}",dT="{{clientID}}",sT="{{clientSecret}}";!function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(aT||(aT={}));var mT,ZT="refresh_token_timer",hT="pkce_code_verifier",bT="#",pT=["RS256","RS512","RS384","PS256"],IT="ERR_JWT_CLAIM_VALIDATION_FAILED",gT="nbf",yT="code",XT="session_state",fT="sign_out_url",GT="sign_out_success",VT="state",WT="openid";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(mT||(mT={}));var CT=d((function e(t,n,r){l(this,e),this.message=r,this.name=n,this.code=t,Object.setPrototypeOf(this,(this instanceof e?this.constructor:void 0).prototype)})),vT=function(){function e(){l(this,e)}return d(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=f(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(G(e.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();vT.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var RT,ST,YT=function(){function e(t,n){var r=this;l(this,e),this._dataLayer=t,this._config=function(){return cT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return cT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return d(e,[{key:"resolveEndpoints",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return cT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));return r.includes(t)}))){e.next=7;break}throw new CT("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return e.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),Object.assign({},t)));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return cT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=n.baseUrl){e.next=7;break}throw new CT("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},e.abrupt("return",Object.assign(Object.assign({},i),t));case 10:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new CT("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return t.prev=8,t.next=11,fetch(n,{credentials:r.sendCookiesInRequests?mT.Include:mT.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new CT("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=t.t0?t.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){t.next=24;break}return t.t1=CT,t.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),t.next=22,i.json();case 22:throw t.t3=t.sent,new t.t1("JS-AUTH_HELPER-VIT-HE03",t.t2,t.t3);case 24:return t.next=26,this._oidcProviderMetaData();case 26:return c=t.sent.issuer,t.next=29,i.json();case 29:return a=t.sent,o=a.keys,t.next=33,this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],o);case 33:return l=t.sent,t.t4=this._cryptoHelper,t.t5=e,t.t6=l,t.next=39,this._config();case 39:return t.t7=t.sent.clientID,t.t8=null!=c?c:"",t.t9=this._cryptoHelper.decodeIDToken(e).sub,t.next=44,this._config();case 44:return t.t10=t.sent.clockTolerance,t.abrupt("return",t.t4.isValidIdToken.call(t.t4,t.t5,t.t6,t.t7,t.t8,t.t9,t.t10));case 46:case"end":return t.stop()}}),t,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),a=vT.getTenantDomainFromIdTokenPayload(c),o=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=l&&u?"".concat(l," ").concat(u):l||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:a,username:o},vT.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(t);case 6:return a=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",a.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(a.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status&&e.ok){n.next=7;break}return n.t0=CT,n.t1="Invalid response status received for token request (".concat(e.statusText,")."),n.next=5,e.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,e.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return cT(c,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setSessionData(r,t);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},e.abrupt("return",Promise.resolve(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,t);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),JT=function(){function e(t){l(this,e),this._cryptoUtils=t}return d(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=C(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(e){i.e(e)}finally{i.f()}throw new CT("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+t.map((function(e){return e.kid})).join(", "))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,pT,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new CT("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(e){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==e?void 0:e.code)&&"nbf"===(null==e?void 0:e.claim)?Promise.reject(new CT("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new CT("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new CT("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),KT=function(){function e(t,n){var r=this;l(this,e),this._cryptoUtils=n,this._cryptoHelper=new JT(n),this._authenticationHelper=new YT(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return cT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return cT(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return d(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return cT(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,V,W,v,R;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return a=c.sent,c.next=5,this._config();case 5:if(o=c.sent,a&&0!==a.trim().length){c.next=8;break}throw new CT("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return l=new URL(a),(u=new Map).set("response_type","code"),u.set("client_id",o.clientID),d="openid",o.scope&&o.scope.length>0&&(o.scope.includes("openid")||o.scope.push("openid"),d=o.scope.join(" ")),u.set("scope",d),u.set("redirect_uri",o.signInRedirectURL),o.responseMode&&u.set("response_mode",o.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(s=c.sent,!o.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),Z=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(s,m,t);case 19:u.set("code_challenge_method","S256"),u.set("code_challenge",Z);case 21:if(o.prompt&&u.set("prompt",o.prompt),h=e)for(b=0,p=Object.entries(h);b<p.length;b++)I=f(p[b],2),g=I[0],y=I[1],""!=g&&""!=y&&"state"!==g&&(X=g.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())})),u.set(X,y.toString()));u.set("state",vT.generateStateParamForRequestCorrelation(s,h?null===(i=h.state)||void 0===i?void 0:i.toString():"")),G=C(u.entries());try{for(G.s();!(V=G.n()).done;)W=f(V.value,2),v=W[0],R=W[1],l.searchParams.append(v,R)}catch(e){G.e(e)}finally{G.f()}return c.abrupt("return",l.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return cT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(a=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new CT("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((o=[]).push("client_id=".concat(a.clientID)),a.clientSecret&&a.clientSecret.trim().length>0&&o.push("client_secret=".concat(a.clientSecret)),l=e,o.push("code=".concat(l)),o.push("grant_type=authorization_code"),o.push("redirect_uri=".concat(a.signInRedirectURL)),i.t1=a.enablePKCE,!i.t1){i.next=29;break}return i.t2=o,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(vT.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(vT.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:o.join("&"),credentials:a.sendCookiesInRequests?mT.Include:mT.SameOrigin,headers:new Headers(vT.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new CT("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(u.ok){i.next=45;break}return i.t7=CT,i.t8="Requesting access token failed with ".concat(u.statusText),i.next=43,u.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(u,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}throw new CT("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){t.next=13;break}throw new CT("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),t.prev=15,t.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?mT.Include:mT.SameOrigin,headers:new Headers(vT.getTokenRequestHeaders()),method:"POST"});case 18:a=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new CT("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=t.t0?t.t0:"The request to refresh the access token failed.");case 24:if(a.ok){t.next=31;break}return t.t1=CT,t.t2="Refreshing access token failed with ".concat(a.statusText),t.next=29,a.json();case 29:throw t.t3=t.sent,new t.t1("JS-AUTH_CORE-RAT2-HE04",t.t2,t.t3);case 31:return t.abrupt("return",this._authenticationHelper.handleTokenResponse(a,e));case 32:case"end":return t.stop()}}),t,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new CT("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.prev=18,t.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?mT.Include:mT.SameOrigin,headers:new Headers(vT.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new CT("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=t.t4?t.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){t.next=34;break}return t.t5=CT,t.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),t.next=32,c.json();case 32:throw t.t7=t.sent,new t.t5("JS-AUTH_CORE-RAT3-HE03",t.t6,t.t7);case 34:return t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),Promise.resolve(c)));case 35:case"end":return t.stop()}}),t,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,d=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new CT("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(e.data).map((function(e){var n=f(e,2),r=n[0],i=n[1];return cT(d,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(a=n.sent,o=Object.assign({},vT.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},o),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},o=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:a.join("&"),credentials:i.sendCookiesInRequests?mT.Include:mT.SameOrigin,headers:new Headers(o),method:"POST"},n.prev=24,n.next=27,fetch(c,l);case 27:u=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new CT("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===u.status&&u.ok){n.next=40;break}return n.t8=CT,n.t9="Invalid response status received for the custom grant request. (".concat(u.statusText,")"),n.next=38,u.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!e.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(u,t),n.next=49;break;case 44:return n.t12=Promise,n.next=47,u.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:if(n=t.sent,t.t0=!e,!t.t0){t.next=8;break}return t.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:t.t0=t.sent;case 8:if(!t.t0){t.next=10;break}return t.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){t.next=36;break}return t.prev=12,t.next=15,fetch(r);case 15:if(200===(i=t.sent).status&&i.ok){t.next=18;break}throw new Error;case 18:t.next=23;break;case 20:throw t.prev=20,t.t1=t.catch(12),new CT("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return t.t2=this._dataLayer,t.t3=this._authenticationHelper,t.next=27,i.json();case 27:return t.t4=t.sent,t.next=30,t.t3.resolveEndpoints.call(t.t3,t.t4);case 30:return t.t5=t.sent,t.next=33,t.t2.setOIDCProviderMetaData.call(t.t2,t.t5);case 33:return t.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return t.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){t.next=52;break}return t.prev=37,t.t6=this._dataLayer,t.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return t.t7=t.sent,t.next=44,t.t6.setOIDCProviderMetaData.call(t.t6,t.t7);case 44:t.next=49;break;case 46:throw t.prev=46,t.t8=t.catch(37),new CT("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=t.t8?t.t8:"Resolving endpoints by base url failed.");case 49:return t.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return t.abrupt("return",Promise.resolve());case 52:return t.prev=52,t.t9=this._dataLayer,t.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return t.t10=t.sent,t.next=59,t.t9.setOIDCProviderMetaData.call(t.t9,t.t10);case 59:t.next=64;break;case 61:throw t.prev=61,t.t11=t.catch(52),new CT("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=t.t11?t.t11:"Resolving endpoints by explicitly failed.");case 64:return t.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return t.abrupt("return",Promise.resolve());case 67:case"end":return t.stop()}}),t,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,a,o,l,u;return cT(this,void 0,void 0,regeneratorRuntime.mark((function d(){var s;return regeneratorRuntime.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,this._oidcProviderMetaData();case 2:return s=d.sent,d.abrupt("return",{authorizationEndpoint:null!==(e=s.authorization_endpoint)&&void 0!==e?e:"",checkSessionIframe:null!==(t=s.check_session_iframe)&&void 0!==t?t:"",endSessionEndpoint:null!==(n=s.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=s.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=s.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=s.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(a=s.registration_endpoint)&&void 0!==a?a:"",revocationEndpoint:null!==(o=s.revocation_endpoint)&&void 0!==o?o:"",tokenEndpoint:null!==(l=s.token_endpoint)&&void 0!==l?l:"",userinfoEndpoint:null!==(u=s.userinfo_endpoint)&&void 0!==u?u:""});case 4:case"end":return d.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return cT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(a=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new CT("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(e);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((o=i.t5)&&0!==o.trim().length){i.next=31;break}throw new CT("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((l=null!==(r=null==a?void 0:a.signOutRedirectURL)&&void 0!==r?r:null==a?void 0:a.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new CT("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(o,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"clearUserSessionData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.clearUserSessionData(e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(vT.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(vT.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:return t.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return t.stop()}}),t,this)})))}}]),e}(),NT=function(){function e(t,n){l(this,e),this._id=t,this._store=n}return d(e,[{key:"setDataInBulk",value:function(e,t){var n;return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),a=Object.assign(Object.assign({},c),t),o=JSON.stringify(a),r.next=17,this._store.setData(e,o);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return cT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,a=c&&JSON.parse(c),o=Object.assign(Object.assign({},a),s({},t,n)),l=JSON.stringify(o),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(a=Object.assign({},c))[t],o=JSON.stringify(a),r.next=18,this._store.setData(e,o);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.setDataInBulk(this._resolveKey(aT.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this.setDataInBulk(this._resolveKey(aT.OIDCProviderMetaData),e);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"setTemporaryData",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(aT.TemporaryData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionData",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(aT.SessionData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigData",value:function(){var e;return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=JSON,t.next=3,this._store.getData(this._resolveKey(aT.ConfigData));case 3:if(t.t2=e=t.sent,t.t1=null!==t.t2,!t.t1){t.next=7;break}t.t1=void 0!==e;case 7:if(!t.t1){t.next=11;break}t.t3=e,t.next=12;break;case 11:t.t3=null;case 12:return t.t4=t.t3,t.abrupt("return",t.t0.parse.call(t.t0,t.t4));case 14:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var e;return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=JSON,t.next=3,this._store.getData(this._resolveKey(aT.OIDCProviderMetaData));case 3:if(t.t2=e=t.sent,t.t1=null!==t.t2,!t.t1){t.next=7;break}t.t1=void 0!==e;case 7:if(!t.t1){t.next=11;break}t.t3=e,t.next=12;break;case 11:t.t3=null;case 12:return t.t4=t.t3,t.abrupt("return",t.t0.parse.call(t.t0,t.t4));case 14:case"end":return t.stop()}}),t,this)})))}},{key:"getTemporaryData",value:function(e){var t;return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(aT.TemporaryData,e));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionData",value:function(e){var t;return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(aT.SessionData,e));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"removeConfigData",value:function(){return cT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(aT.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return cT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(aT.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(aT.TemporaryData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(aT.SessionData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.getData(this._resolveKey(aT.ConfigData));case 2:return n=t.sent,t.abrupt("return",n&&JSON.parse(n)[e]);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.getData(this._resolveKey(aT.OIDCProviderMetaData));case 2:return n=t.sent,t.abrupt("return",n&&JSON.parse(n)[e]);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getTemporaryDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(aT.TemporaryData,t));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getSessionDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(aT.SessionData,t));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"setConfigDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(aT.ConfigData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(aT.OIDCProviderMetaData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(e,t,n){return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(aT.TemporaryData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionDataParameter",value:function(e,t,n){return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(aT.SessionData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigDataParameter",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.removeValue(this._resolveKey(aT.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.removeValue(this._resolveKey(aT.OIDCProviderMetaData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(aT.TemporaryData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionDataParameter",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(aT.SessionData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}}]),e}(),LT={clockTolerance:300,enablePKCE:!0,responseMode:nT.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},HT=function(){
|
|
16
16
|
/**
|
|
17
17
|
* This is the constructor method that returns an instance of the .
|
|
18
18
|
*
|
|
@@ -27,7 +27,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
27
27
|
* @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#constructor
|
|
28
28
|
* @preserve
|
|
29
29
|
*/
|
|
30
|
-
function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new
|
|
30
|
+
function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new NT("instance_".concat(e._instanceID),t),this._authenticationCore=new KT(this._dataLayer,n),e._authenticationCore=new KT(this._dataLayer,n)}
|
|
31
31
|
/**
|
|
32
32
|
*
|
|
33
33
|
* This method initializes the SDK with the config data.
|
|
@@ -46,7 +46,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
46
46
|
* @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#initialize
|
|
47
47
|
*
|
|
48
48
|
* @preserve
|
|
49
|
-
*/return d(e,[{key:"initialize",value:function(e){var t,n,r;return
|
|
49
|
+
*/return d(e,[{key:"initialize",value:function(e){var t,n,r;return cT(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},LT),e),{scope:[].concat(G(null!==(t=LT.scope)&&void 0!==t?t:[]),G(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==LT?void 0:LT.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}
|
|
50
50
|
/**
|
|
51
51
|
* This method returns the `DataLayer` object that allows you to access authentication data.
|
|
52
52
|
*
|
|
@@ -87,7 +87,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
87
87
|
* @memberof AsgardeoAuthClient
|
|
88
88
|
*
|
|
89
89
|
* @preserve
|
|
90
|
-
*/},{key:"getAuthorizationURL",value:function(e,t){return
|
|
90
|
+
*/},{key:"getAuthorizationURL",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},e))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,t),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==e?void 0:e.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,t)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}
|
|
91
91
|
/**
|
|
92
92
|
* This is an async method that sends a request to obtain the access token and returns a Promise
|
|
93
93
|
* that resolves with the token and other relevant data.
|
|
@@ -113,7 +113,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
113
113
|
* @memberof AsgardeoAuthClient
|
|
114
114
|
*
|
|
115
115
|
* @preserve
|
|
116
|
-
*/},{key:"requestAccessToken",value:function(e,t,n,r){return
|
|
116
|
+
*/},{key:"requestAccessToken",value:function(e,t,n,r){return cT(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(e,t,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(e,t,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}
|
|
117
117
|
/**
|
|
118
118
|
* This method clears all authentication data and returns the sign-out URL.
|
|
119
119
|
*
|
|
@@ -132,7 +132,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
132
132
|
* @memberof AsgardeoAuthClient
|
|
133
133
|
*
|
|
134
134
|
* @preserve
|
|
135
|
-
*/},{key:"signOut",value:function(e){return
|
|
135
|
+
*/},{key:"signOut",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
136
136
|
/**
|
|
137
137
|
* This method returns the sign-out URL.
|
|
138
138
|
*
|
|
@@ -153,7 +153,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
153
153
|
* @memberof AsgardeoAuthClient
|
|
154
154
|
*
|
|
155
155
|
* @preserve
|
|
156
|
-
*/},{key:"getSignOutURL",value:function(e){return
|
|
156
|
+
*/},{key:"getSignOutURL",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
157
157
|
/**
|
|
158
158
|
* This method returns OIDC service endpoints that are fetched from the `.well-known` endpoint.
|
|
159
159
|
*
|
|
@@ -169,7 +169,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
169
169
|
* @memberof AsgardeoAuthClient
|
|
170
170
|
*
|
|
171
171
|
* @preserve
|
|
172
|
-
*/},{key:"getOIDCServiceEndpoints",value:function(){return
|
|
172
|
+
*/},{key:"getOIDCServiceEndpoints",value:function(){return cT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e,this)})))}
|
|
173
173
|
/**
|
|
174
174
|
* This method decodes the payload of the ID token and returns it.
|
|
175
175
|
*
|
|
@@ -188,7 +188,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
188
188
|
* @memberof AsgardeoAuthClient
|
|
189
189
|
*
|
|
190
190
|
* @preserve
|
|
191
|
-
*/},{key:"getDecodedIDToken",value:function(e){return
|
|
191
|
+
*/},{key:"getDecodedIDToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
192
192
|
/**
|
|
193
193
|
* This method returns the ID token.
|
|
194
194
|
*
|
|
@@ -207,7 +207,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
207
207
|
* @memberof AsgardeoAuthClient
|
|
208
208
|
*
|
|
209
209
|
* @preserve
|
|
210
|
-
*/},{key:"getIDToken",value:function(e){return
|
|
210
|
+
*/},{key:"getIDToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
211
211
|
/**
|
|
212
212
|
* This method returns the basic user information obtained from the ID token.
|
|
213
213
|
*
|
|
@@ -226,7 +226,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
226
226
|
* @memberof AsgardeoAuthClient
|
|
227
227
|
*
|
|
228
228
|
* @preserve
|
|
229
|
-
*/},{key:"getBasicUserInfo",value:function(e){return
|
|
229
|
+
*/},{key:"getBasicUserInfo",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
230
230
|
/**
|
|
231
231
|
* This method revokes the access token.
|
|
232
232
|
*
|
|
@@ -294,7 +294,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
294
294
|
* @memberof AsgardeoAuthClient
|
|
295
295
|
*
|
|
296
296
|
* @preserve
|
|
297
|
-
*/},{key:"getAccessToken",value:function(e){return
|
|
297
|
+
*/},{key:"getAccessToken",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
298
298
|
/**
|
|
299
299
|
* This method sends a custom-grant request and returns a Promise that resolves with the response
|
|
300
300
|
* depending on the config passed.
|
|
@@ -353,7 +353,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
353
353
|
* @memberof AsgardeoAuthClient
|
|
354
354
|
*
|
|
355
355
|
* @preserve
|
|
356
|
-
*/},{key:"isAuthenticated",value:function(e){return
|
|
356
|
+
*/},{key:"isAuthenticated",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated(e));case 1:case"end":return t.stop()}}),t,this)})))}
|
|
357
357
|
/**
|
|
358
358
|
* This method returns the PKCE code generated during the generation of the authentication URL.
|
|
359
359
|
*
|
|
@@ -373,7 +373,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
373
373
|
* @memberof AsgardeoAuthClient
|
|
374
374
|
*
|
|
375
375
|
* @preserve
|
|
376
|
-
*/},{key:"getPKCECode",value:function(e,t){return
|
|
376
|
+
*/},{key:"getPKCECode",value:function(e,t){return cT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(e,t));case 1:case"end":return n.stop()}}),n,this)})))}
|
|
377
377
|
/**
|
|
378
378
|
* This method sets the PKCE code to the data store.
|
|
379
379
|
*
|
|
@@ -392,7 +392,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
392
392
|
* @memberof AsgardeoAuthClient
|
|
393
393
|
*
|
|
394
394
|
* @preserve
|
|
395
|
-
*/},{key:"setPKCECode",value:function(e,t,n){return
|
|
395
|
+
*/},{key:"setPKCECode",value:function(e,t,n){return cT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(e,t,n);case 2:case"end":return r.stop()}}),r,this)})))}
|
|
396
396
|
/**
|
|
397
397
|
* This method returns if the sign-out is successful or not.
|
|
398
398
|
*
|
|
@@ -430,7 +430,7 @@ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._d
|
|
|
430
430
|
*
|
|
431
431
|
* @preserve
|
|
432
432
|
*/
|
|
433
|
-
function(e){return
|
|
433
|
+
function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.updateConfig(e);case 2:case"end":return t.stop()}}),t,this)})))}}],[{key:"isSignOutSuccessful",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}
|
|
434
434
|
/**
|
|
435
435
|
* This method returns if the sign-out has failed or not.
|
|
436
436
|
*
|
|
@@ -446,9 +446,9 @@ function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
|
|
|
446
446
|
* @memberof AsgardeoAuthClient
|
|
447
447
|
*
|
|
448
448
|
* @preserve
|
|
449
|
-
*/},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}}]),e}();!function(e){e.LocalStorage="localStorage",e.SessionStorage="sessionStorage",e.WebWorker="webWorker",e.BrowserMemory="browserMemory"}(GT||(GT={})),function(e){e.SignIn="sign-in",e.SignOut="sign-out",e.Initialize="initialize",e.HttpRequestStart="http-request-start",e.HttpRequestFinish="http-request-finish",e.HttpRequestError="http-request-error",e.HttpRequestSuccess="http-request-success",e.RevokeAccessToken="revoke-access-token",e.CustomGrant="custom-grant",e.SignOutFailed="sign-out-failed"}(fT||(fT={}));var YT,JT,KT,LT,NT,HT,xT,kT,UT,AT,wT,FT,TT,BT,zT,jT,MT,QT="Y2hlY2tTZXNzaW9u",PT=function(){function e(t){l(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return d(e,[{key:"refreshAccessTokenAutomatically",value:function(){return qF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return qF(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(aT,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return qF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(aT);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(aT);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),ET=function(){function e(){l(this,e)}return d(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(bT,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(bT))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem("initialized-silent-sign-in"),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){if(ST.isSignOutSuccessful(window.location.href)){var e=window.location.href.split("?")[0];return history.pushState({},document.title,e),!0}return!1}},{key:"didSignOutFail",value:function(){if(ST.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get("error"),n=e.searchParams.get("error_description"),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes("sign-in-silently"))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get("error")&&t.searchParams.get("state")!==pT}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem("promptNoneRequestSent");return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),OT=(FT=function(e,t,n,r,i,c,o){YT=e,JT=t,KT=n,NT=c,HT=i,wT=o,(LT=r)>-1&&TT(),HT>-1&&(i=setInterval((function(){jT()}),1e3*HT))},TT=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,KT();case 2:r=t.sent,Boolean(YT)&&Boolean(r)&&(i="".concat(YT," ").concat(r),c=document.getElementById("rpIFrame"),o=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(a=o.contentWindow)||a.postMessage(i,JT));case 4:case"end":return t.stop()}}),t)})))},JT&&YT&&NT){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById("rpIFrame"),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=JT+"?client_id="+YT+"&redirect_uri="+NT,e.next=9,r();case 9:kT=setInterval(r,1e3*LT),zT();case 11:case"end":return e.stop()}}),e)})))},BT=function(){clearInterval(kT),clearInterval(void 0)},zT=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=JT)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&"set_session_state_from_iframe"!==(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,xT();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&jT();case 13:case"end":return n.stop()}}),n)})))}),!1)},jT=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=document.getElementById("rpIFrame"),r=null===(t=null==n?void 0:n.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),!ET.canSendPromptNoneRequest()){e.next=10;break}return ET.setPromptNoneRequestSent(!0),i=function e(t){var n,r,i;"set_session_state_from_iframe"===(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)&&(AT(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},UT!==GT.BrowserMemory&&UT!==GT.WebWorker||null===window||void 0===window||window.addEventListener("message",i),e.next=8,wT({prompt:"none",state:QT,responseMode:"query"});case 8:c=e.sent,r.src=c;case 10:case"end":return e.stop()}}),e)})))},MT=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l,u,d,s;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new URL(window.location.href).searchParams.get("state"),c=new URL(window.location.href).searchParams.get(hT),o=window.parent.parent,null===i||!i.includes(QT)&&!i.includes("sign-in-silently")){t.next=48;break}if(null===(a=new URL(window.location.href).searchParams.get("code"))||0===a.length){t.next=32;break}if(!i.includes("sign-in-silently")){t.next=15;break}return l={data:{code:a,sessionState:null!=c?c:"",state:i},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),o.postMessage(l,o.origin),ET.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=14,ET.waitTillPageRedirect();case 14:return t.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),UT!==GT.LocalStorage&&UT!==GT.SessionStorage){t.next=23;break}if(t.t0=e,!t.t0){t.next=21;break}return t.next=21,e(u);case 21:t.next=25;break;case 23:d={data:null!=u?u:"",type:"set_session_state_from_iframe"},null===(r=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===r||r.postMessage(d);case 25:return ET.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=29,ET.waitTillPageRedirect();case 29:return t.abrupt("return",!0);case 32:if(!i.includes("sign-in-silently")){t.next=40;break}return s={type:"check_session_signed_out"},window.parent.parent.postMessage(s,o.origin),ET.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=39,ET.waitTillPageRedirect();case 39:return t.abrupt("return",!0);case 40:return ET.setPromptNoneRequestSent(!1),t.next=43,xT();case 43:return o.location.href=t.sent,window.location.href="about:blank",t.next=47,ET.waitTillPageRedirect();case 47:return t.abrupt("return",!0);case 48:return t.abrupt("return",!1);case 49:case"end":return t.stop()}}),t)})))},function(e,t,n){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id","rpIFrame"),c.style.display="none",o=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById("rpIFrame"))?void 0:c.contentDocument,a=null==i?void 0:i.createElement("iframe");a&&(a.setAttribute("id","opIFrame"),a.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id","promptNoneIFrame"),l.style.display="none"),a&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(a)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),o=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),xT=e,UT=t,AT=n,a=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==o){r.next=15;break}return r.next=13,a();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:FT,receivePromptNoneResponse:MT,reset:BT});case 16:case"end":return r.stop()}}),r)})))}),DT={exports:{}},_T=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},qT=_T,$T=Object.prototype.toString;function eB(e){return Array.isArray(e)}function tB(e){return void 0===e}function nB(e){return"[object ArrayBuffer]"===$T.call(e)}function rB(e){return null!==e&&"object"===c(e)}function iB(e){if("[object Object]"!==$T.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function cB(e){return"[object Function]"===$T.call(e)}function oB(e,t){if(null!=e)if("object"!==c(e)&&(e=[e]),eB(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var aB={isArray:eB,isArrayBuffer:nB,isBuffer:function(e){return null!==e&&!tB(e)&&null!==e.constructor&&!tB(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===$T.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&nB(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:rB,isPlainObject:iB,isUndefined:tB,isDate:function(e){return"[object Date]"===$T.call(e)},isFile:function(e){return"[object File]"===$T.call(e)},isBlob:function(e){return"[object Blob]"===$T.call(e)},isFunction:cB,isStream:function(e){return rB(e)&&cB(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===$T.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:oB,merge:function e(){var t={};function n(n,r){iB(t[r])&&iB(n)?t[r]=e(t[r],n):iB(n)?t[r]=e({},n):eB(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)oB(arguments[r],n);return t},extend:function(e,t,n){return oB(t,(function(t,r){e[r]=n&&"function"==typeof t?qT(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},lB=aB;function uB(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var dB=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(lB.isURLSearchParams(t))r=t.toString();else{var i=[];lB.forEach(t,(function(e,t){null!=e&&(lB.isArray(e)?t+="[]":e=[e],lB.forEach(e,(function(e){lB.isDate(e)?e=e.toISOString():lB.isObject(e)&&(e=JSON.stringify(e)),i.push(uB(t)+"="+uB(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},sB=aB;function mB(){this.handlers=[]}mB.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},mB.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},mB.prototype.forEach=function(e){sB.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var ZB=mB,hB="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function bB(){throw new Error("setTimeout has not been defined")}function pB(){throw new Error("clearTimeout has not been defined")}var IB=bB,gB=pB;function yB(e){if(IB===setTimeout)return setTimeout(e,0);if((IB===bB||!IB)&&setTimeout)return IB=setTimeout,setTimeout(e,0);try{return IB(e,0)}catch(t){try{return IB.call(null,e,0)}catch(t){return IB.call(this,e,0)}}}"function"==typeof hB.setTimeout&&(IB=setTimeout),"function"==typeof hB.clearTimeout&&(gB=clearTimeout);var XB,GB=[],fB=!1,VB=-1;function WB(){fB&&XB&&(fB=!1,XB.length?GB=XB.concat(GB):VB=-1,GB.length&&CB())}function CB(){if(!fB){var e=yB(WB);fB=!0;for(var t=GB.length;t;){for(XB=GB,GB=[];++VB<t;)XB&&XB[VB].run();VB=-1,t=GB.length}XB=null,fB=!1,function(e){if(gB===clearTimeout)return clearTimeout(e);if((gB===pB||!gB)&&clearTimeout)return gB=clearTimeout,clearTimeout(e);try{gB(e)}catch(t){try{return gB.call(null,e)}catch(t){return gB.call(this,e)}}}(e)}}function vB(e,t){this.fun=e,this.array=t}vB.prototype.run=function(){this.fun.apply(null,this.array)};function RB(){}var SB=RB,YB=RB,JB=RB,KB=RB,LB=RB,NB=RB,HB=RB;var xB=hB.performance||{},kB=xB.now||xB.mozNow||xB.msNow||xB.oNow||xB.webkitNow||function(){return(new Date).getTime()};var UB=new Date;var AB={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];GB.push(new vB(e,t)),1!==GB.length||fB||yB(CB)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:SB,addListener:YB,once:JB,off:KB,removeListener:LB,removeAllListeners:NB,emit:HB,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*kB.call(xB),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-UB)/1e3}},wB=AB,FB=aB,TB=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},BB={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},zB=TB,jB=function(e,t,n,r,i){var c=new Error(e);return zB(c,t,n,r,i)},MB=jB,QB=aB,PB=QB.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var o=[];o.push(e+"="+encodeURIComponent(t)),QB.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),QB.isString(r)&&o.push("path="+r),QB.isString(i)&&o.push("domain="+i),!0===c&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},EB=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},OB=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},DB=aB,_B=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],qB=aB,$B=qB.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=qB.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function ez(e){this.message=e}ez.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},ez.prototype.__CANCEL__=!0;var tz=ez,nz=aB,rz=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(MB("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},iz=PB,cz=dB,oz=function(e,t){return e&&!EB(t)?OB(e,t):t},az=function(e){var t,n,r,i={};return e?(DB.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=DB.trim(e.substr(0,r)).toLowerCase(),n=DB.trim(e.substr(r+1)),t){if(i[t]&&_B.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},lz=$B,uz=jB,dz=BB,sz=tz,mz=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,o=e.responseType;function a(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}nz.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=oz(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?az(l.getAllResponseHeaders()):null,i={data:o&&"text"!==o&&"json"!==o?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};rz((function(e){t(e),a()}),(function(e){n(e),a()}),i),l=null}}if(l.open(e.method.toUpperCase(),cz(s,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(uz("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(uz("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||dz;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(uz(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},nz.isStandardBrowserEnv()){var Z=(e.withCredentials||lz(s))&&e.xsrfCookieName?iz.read(e.xsrfCookieName):void 0;Z&&(c[e.xsrfHeaderName]=Z)}"setRequestHeader"in l&&nz.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),nz.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),o&&"json"!==o&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new sz("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},Zz=aB,hz=function(e,t){FB.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},bz=TB,pz={"Content-Type":"application/x-www-form-urlencoded"};function Iz(e,t){!Zz.isUndefined(e)&&Zz.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var gz,yz={transitional:BB,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==wB&&"[object process]"===Object.prototype.toString.call(wB))&&(gz=mz),gz),transformRequest:[function(e,t){return hz(t,"Accept"),hz(t,"Content-Type"),Zz.isFormData(e)||Zz.isArrayBuffer(e)||Zz.isBuffer(e)||Zz.isStream(e)||Zz.isFile(e)||Zz.isBlob(e)?e:Zz.isArrayBufferView(e)?e.buffer:Zz.isURLSearchParams(e)?(Iz(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Zz.isObject(e)||t&&"application/json"===t["Content-Type"]?(Iz(t,"application/json"),function(e,t,n){if(Zz.isString(e))try{return(t||JSON.parse)(e),Zz.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||yz.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&Zz.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw bz(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Zz.forEach(["delete","get","head"],(function(e){yz.headers[e]={}})),Zz.forEach(["post","put","patch"],(function(e){yz.headers[e]=Zz.merge(pz)}));var Xz=yz,Gz=aB,fz=Xz,Vz=function(e){return!(!e||!e.__CANCEL__)},Wz=aB,Cz=function(e,t,n){var r=this||fz;return Gz.forEach(n,(function(n){e=n.call(r,e,t)})),e},vz=Vz,Rz=Xz,Sz=tz;function Yz(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Sz("canceled")}var Jz=aB,Kz=function(e,t){t=t||{};var n={};function r(e,t){return Jz.isPlainObject(e)&&Jz.isPlainObject(t)?Jz.merge(e,t):Jz.isPlainObject(t)?Jz.merge({},t):Jz.isArray(t)?t.slice():t}function i(n){return Jz.isUndefined(t[n])?Jz.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!Jz.isUndefined(t[e]))return r(void 0,t[e])}function o(n){return Jz.isUndefined(t[n])?Jz.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function a(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:c,method:c,data:c,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a};return Jz.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);Jz.isUndefined(r)&&t!==a||(n[e]=r)})),n},Lz="0.26.1",Nz=Lz,Hz={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Hz[e]=function(n){return c(n)===e||"a"+(t<1?"n ":" ")+e}}));var xz={};Hz.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Nz+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!xz[i]&&(xz[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var kz={assertOptions:function(e,t,n){if("object"!==c(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var o=r[i],a=t[o];if(a){var l=e[o],u=void 0===l||a(l,o,e);if(!0!==u)throw new TypeError("option "+o+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+o)}},validators:Hz},Uz=aB,Az=dB,wz=ZB,Fz=function(e){return Yz(e),e.headers=e.headers||{},e.data=Cz.call(e,e.data,e.headers,e.transformRequest),e.headers=Wz.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Wz.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Rz.adapter)(e).then((function(t){return Yz(e),t.data=Cz.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return vz(t)||(Yz(e),t&&t.response&&(t.response.data=Cz.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Tz=Kz,Bz=kz,zz=Bz.validators;function jz(e){this.defaults=e,this.interceptors={request:new wz,response:new wz}}jz.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=Tz(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Bz.assertOptions(n,{silentJSONParsing:zz.transitional(zz.boolean),forcedJSONParsing:zz.transitional(zz.boolean),clarifyTimeoutError:zz.transitional(zz.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,o=[];if(this.interceptors.response.forEach((function(e){o.push(e.fulfilled,e.rejected)})),!i){var a=[Fz,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(o),c=Promise.resolve(t);a.length;)c=c.then(a.shift(),a.shift());return c}for(var l=t;r.length;){var u=r.shift(),d=r.shift();try{l=u(l)}catch(e){d(e);break}}try{c=Fz(l)}catch(e){return Promise.reject(e)}for(;o.length;)c=c.then(o.shift(),o.shift());return c},jz.prototype.getUri=function(e){return e=Tz(this.defaults,e),Az(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Uz.forEach(["delete","get","head","options"],(function(e){jz.prototype[e]=function(t,n){return this.request(Tz(n||{},{method:e,url:t,data:(n||{}).data}))}})),Uz.forEach(["post","put","patch"],(function(e){jz.prototype[e]=function(t,n,r){return this.request(Tz(r||{},{method:e,url:t,data:n}))}}));var Mz=jz,Qz=tz;function Pz(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new Qz(e),t(n.reason))}))}Pz.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Pz.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},Pz.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},Pz.source=function(){var e,t=new Pz((function(t){e=t}));return{token:t,cancel:e}};var Ez=Pz,Oz=aB,Dz=aB,_z=_T,qz=Mz,$z=Kz;var ej=function e(t){var n=new qz(t),r=_z(qz.prototype.request,n);return Dz.extend(r,qz.prototype,n),Dz.extend(r,n),r.create=function(n){return e($z(t,n))},r}(Xz);ej.Axios=qz,ej.Cancel=tz,ej.CancelToken=Ez,ej.isCancel=Vz,ej.VERSION=Lz,ej.all=function(e){return Promise.all(e)},ej.spread=function(e){return function(t){return e.apply(null,t)}},ej.isAxiosError=function(e){return Oz.isObject(e)&&!0===e.isAxiosError},DT.exports=ej,DT.exports.default=ej;var tj,nj=DT.exports;var rj=tj=function(){function e(){l(this,e),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return d(e,[{key:"requestHandler",value:function(e){return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),tj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw tj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return tj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:tj.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){tj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){tj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:tj.DEFAULT_HANDLER_DISABLE_TIMEOUT;tj.isHandlerEnabled=!1,setTimeout((function(){tj.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=nj.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new tj),this.axiosInstance.interceptors.request.use((function(t){return qF(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=nj.all,this.axiosInstance.spread=nj.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),e}();rj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,rj=tj=function(e,t,n,r){var i,o=arguments.length,a=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":c(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(o<3?i(a):o>3?i(t,n,a):i(t,n))||a);return o>3&&a&&Object.defineProperty(t,n,a),a}([function(e){}],rj);var ij=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),cj=function(){function e(){l(this,e),this._data=new Map}return d(e,[{key:"setData",value:function(e,t){return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return qF(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),oj=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return qF(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),aj=[],lj=[],uj="undefined"!=typeof Uint8Array?Uint8Array:Array,dj=!1;function sj(){dj=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)aj[t]=e[t],lj[e.charCodeAt(t)]=t;lj["-".charCodeAt(0)]=62,lj["_".charCodeAt(0)]=63}function mj(e,t,n){for(var r,i,c=[],o=t;o<n;o+=3)r=(e[o]<<16)+(e[o+1]<<8)+e[o+2],c.push(aj[(i=r)>>18&63]+aj[i>>12&63]+aj[i>>6&63]+aj[63&i]);return c.join("")}function Zj(e){var t;dj||sj();for(var n=e.length,r=n%3,i="",c=[],o=16383,a=0,l=n-r;a<l;a+=o)c.push(mj(e,a,a+o>l?l:a+o));return 1===r?(t=e[n-1],i+=aj[t>>2],i+=aj[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=aj[t>>10],i+=aj[t>>4&63],i+=aj[t<<2&63],i+="="),c.push(i),c.join("")}function hj(e,t,n,r,i){var c,o,a=8*i-r-1,l=(1<<a)-1,u=l>>1,d=-7,s=n?i-1:0,m=n?-1:1,Z=e[t+s];for(s+=m,c=Z&(1<<-d)-1,Z>>=-d,d+=a;d>0;c=256*c+e[t+s],s+=m,d-=8);for(o=c&(1<<-d)-1,c>>=-d,d+=r;d>0;o=256*o+e[t+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return o?NaN:1/0*(Z?-1:1);o+=Math.pow(2,r),c-=u}return(Z?-1:1)*o*Math.pow(2,c-r)}function bj(e,t,n,r,i,c){var o,a,l,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,Z=r?0:c-1,h=r?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=d):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),(t+=o+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(o++,l/=2),o+s>=d?(a=0,o=d):o+s>=1?(a=(t*l-1)*Math.pow(2,i),o+=s):(a=t*Math.pow(2,s-1)*Math.pow(2,i),o=0));i>=8;e[n+Z]=255&a,Z+=h,a/=256,i-=8);for(o=o<<i|a,u+=i;u>0;e[n+Z]=255&o,Z+=h,o/=256,u-=8);e[n+Z-h]|=128*b}var pj={}.toString,Ij=Array.isArray||function(e){return"[object Array]"==pj.call(e)};Gj.TYPED_ARRAY_SUPPORT=void 0===hB.TYPED_ARRAY_SUPPORT||hB.TYPED_ARRAY_SUPPORT;var gj=yj();function yj(){return Gj.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Xj(e,t){if(yj()<t)throw new RangeError("Invalid typed array length");return Gj.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Gj.prototype:(null===e&&(e=new Gj(t)),e.length=t),e}function Gj(e,t,n){if(!(Gj.TYPED_ARRAY_SUPPORT||this instanceof Gj))return new Gj(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Wj(this,e)}return fj(this,e,t,n)}function fj(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);Gj.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Gj.prototype:e=Cj(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Gj.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|Sj(t,n),i=(e=Xj(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(Rj(t)){var n=0|vj(t.length);return 0===(e=Xj(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?Xj(e,0):Cj(e,t);if("Buffer"===t.type&&Ij(t.data))return Cj(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Vj(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Wj(e,t){if(Vj(t),e=Xj(e,t<0?0:0|vj(t)),!Gj.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function Cj(e,t){var n=t.length<0?0:0|vj(t.length);e=Xj(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function vj(e){if(e>=yj())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+yj().toString(16)+" bytes");return 0|e}function Rj(e){return!(null==e||!e._isBuffer)}function Sj(e,t){if(Rj(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return eM(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return tM(e).length;default:if(r)return eM(e).length;t=(""+t).toLowerCase(),r=!0}}function Yj(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return zj(this,t,n);case"utf8":case"utf-8":return Fj(this,t,n);case"ascii":return Tj(this,t,n);case"latin1":case"binary":return Bj(this,t,n);case"base64":return wj(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return jj(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Jj(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function Kj(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=Gj.from(t,r)),Rj(t))return 0===t.length?-1:Lj(e,t,n,r,i);if("number"==typeof t)return t&=255,Gj.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):Lj(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function Lj(e,t,n,r,i){var c,o=1,a=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,l/=2,n/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var d=-1;for(c=n;c<a;c++)if(u(e,c)===u(t,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*o}else-1!==d&&(c-=c-d),d=-1}else for(n+l>a&&(n=a-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){s=!1;break}if(s)return c}return-1}function Nj(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var o=0;o<r;++o){var a=parseInt(t.substr(2*o,2),16);if(isNaN(a))return o;e[n+o]=a}return o}function Hj(e,t,n,r){return nM(eM(t,e.length-n),e,n,r)}function xj(e,t,n,r){return nM(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function kj(e,t,n,r){return xj(e,t,n,r)}function Uj(e,t,n,r){return nM(tM(t),e,n,r)}function Aj(e,t,n,r){return nM(function(e,t){for(var n,r,i,c=[],o=0;o<e.length&&!((t-=2)<0);++o)r=(n=e.charCodeAt(o))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function wj(e,t,n){return 0===t&&n===e.length?Zj(e):Zj(e.slice(t,n))}function Fj(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,o,a,l,u=e[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=e[i+1],o=e[i+2],128==(192&c)&&128==(192&o)&&(l=(15&u)<<12|(63&c)<<6|63&o)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=e[i+1],o=e[i+2],a=e[i+3],128==(192&c)&&128==(192&o)&&128==(192&a)&&(l=(15&u)<<18|(63&c)<<12|(63&o)<<6|63&a)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=4096));return n}(r)}Gj.poolSize=8192,Gj._augment=function(e){return e.__proto__=Gj.prototype,e},Gj.from=function(e,t,n){return fj(null,e,t,n)},Gj.TYPED_ARRAY_SUPPORT&&(Gj.prototype.__proto__=Uint8Array.prototype,Gj.__proto__=Uint8Array),Gj.alloc=function(e,t,n){return function(e,t,n,r){return Vj(t),t<=0?Xj(e,t):void 0!==n?"string"==typeof r?Xj(e,t).fill(n,r):Xj(e,t).fill(n):Xj(e,t)}(null,e,t,n)},Gj.allocUnsafe=function(e){return Wj(null,e)},Gj.allocUnsafeSlow=function(e){return Wj(null,e)},Gj.isBuffer=rM,Gj.compare=function(e,t){if(!Rj(e)||!Rj(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},Gj.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Gj.concat=function(e,t){if(!Ij(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Gj.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=Gj.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!Rj(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},Gj.byteLength=Sj,Gj.prototype._isBuffer=!0,Gj.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Jj(this,t,t+1);return this},Gj.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Jj(this,t,t+3),Jj(this,t+1,t+2);return this},Gj.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Jj(this,t,t+7),Jj(this,t+1,t+6),Jj(this,t+2,t+5),Jj(this,t+3,t+4);return this},Gj.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?Fj(this,0,e):Yj.apply(this,arguments)},Gj.prototype.equals=function(e){if(!Rj(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Gj.compare(this,e)},Gj.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},Gj.prototype.compare=function(e,t,n,r,i){if(!Rj(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),a=Math.min(c,o),l=this.slice(r,i),u=e.slice(t,n),d=0;d<a;++d)if(l[d]!==u[d]){c=l[d],o=u[d];break}return c<o?-1:o<c?1:0},Gj.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},Gj.prototype.indexOf=function(e,t,n){return Kj(this,e,t,n,!0)},Gj.prototype.lastIndexOf=function(e,t,n){return Kj(this,e,t,n,!1)},Gj.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return Nj(this,e,t,n);case"utf8":case"utf-8":return Hj(this,e,t,n);case"ascii":return xj(this,e,t,n);case"latin1":case"binary":return kj(this,e,t,n);case"base64":return Uj(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Aj(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},Gj.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Tj(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function Bj(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function zj(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=$j(e[c]);return i}function jj(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function Mj(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function Qj(e,t,n,r,i,c){if(!Rj(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function Pj(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function Ej(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function Oj(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function Dj(e,t,n,r,i){return i||Oj(e,0,n,4),bj(e,t,n,r,23,4),n+4}function _j(e,t,n,r,i){return i||Oj(e,0,n,8),bj(e,t,n,r,52,8),n+8}Gj.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),Gj.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Gj.prototype;else{var i=t-e;n=new Gj(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},Gj.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||Mj(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},Gj.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||Mj(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},Gj.prototype.readUInt8=function(e,t){return t||Mj(e,1,this.length),this[e]},Gj.prototype.readUInt16LE=function(e,t){return t||Mj(e,2,this.length),this[e]|this[e+1]<<8},Gj.prototype.readUInt16BE=function(e,t){return t||Mj(e,2,this.length),this[e]<<8|this[e+1]},Gj.prototype.readUInt32LE=function(e,t){return t||Mj(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Gj.prototype.readUInt32BE=function(e,t){return t||Mj(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Gj.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||Mj(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},Gj.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||Mj(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},Gj.prototype.readInt8=function(e,t){return t||Mj(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Gj.prototype.readInt16LE=function(e,t){t||Mj(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Gj.prototype.readInt16BE=function(e,t){t||Mj(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Gj.prototype.readInt32LE=function(e,t){return t||Mj(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Gj.prototype.readInt32BE=function(e,t){return t||Mj(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Gj.prototype.readFloatLE=function(e,t){return t||Mj(e,4,this.length),hj(this,e,!0,23,4)},Gj.prototype.readFloatBE=function(e,t){return t||Mj(e,4,this.length),hj(this,e,!1,23,4)},Gj.prototype.readDoubleLE=function(e,t){return t||Mj(e,8,this.length),hj(this,e,!0,52,8)},Gj.prototype.readDoubleBE=function(e,t){return t||Mj(e,8,this.length),hj(this,e,!1,52,8)},Gj.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||Qj(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},Gj.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||Qj(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},Gj.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,1,255,0),Gj.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Gj.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,2,65535,0),Gj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Pj(this,e,t,!0),t+2},Gj.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,2,65535,0),Gj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Pj(this,e,t,!1),t+2},Gj.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,4,4294967295,0),Gj.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):Ej(this,e,t,!0),t+4},Gj.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,4,4294967295,0),Gj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Ej(this,e,t,!1),t+4},Gj.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);Qj(this,e,t,n,i-1,-i)}var c=0,o=1,a=0;for(this[t]=255&e;++c<n&&(o*=256);)e<0&&0===a&&0!==this[t+c-1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},Gj.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);Qj(this,e,t,n,i-1,-i)}var c=n-1,o=1,a=0;for(this[t+c]=255&e;--c>=0&&(o*=256);)e<0&&0===a&&0!==this[t+c+1]&&(a=1),this[t+c]=(e/o>>0)-a&255;return t+n},Gj.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,1,127,-128),Gj.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Gj.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,2,32767,-32768),Gj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):Pj(this,e,t,!0),t+2},Gj.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,2,32767,-32768),Gj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):Pj(this,e,t,!1),t+2},Gj.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,4,2147483647,-2147483648),Gj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):Ej(this,e,t,!0),t+4},Gj.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||Qj(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Gj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):Ej(this,e,t,!1),t+4},Gj.prototype.writeFloatLE=function(e,t,n){return Dj(this,e,t,!0,n)},Gj.prototype.writeFloatBE=function(e,t,n){return Dj(this,e,t,!1,n)},Gj.prototype.writeDoubleLE=function(e,t,n){return _j(this,e,t,!0,n)},Gj.prototype.writeDoubleBE=function(e,t,n){return _j(this,e,t,!1,n)},Gj.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!Gj.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},Gj.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!Gj.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var o=Rj(e)?e:eM(new Gj(e,r).toString()),a=o.length;for(c=0;c<n-t;++c)this[c+t]=o[c%a]}return this};var qj=/[^+\/0-9A-Za-z-_]/g;function $j(e){return e<16?"0"+e.toString(16):e.toString(16)}function eM(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],o=0;o<r;++o){if((n=e.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function tM(e){return function(e){var t,n,r,i,c,o;dj||sj();var a=e.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[a-2]?2:"="===e[a-1]?1:0,o=new uj(3*a/4-c),r=c>0?a-4:a;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=lj[e.charCodeAt(t)]<<18|lj[e.charCodeAt(t+1)]<<12|lj[e.charCodeAt(t+2)]<<6|lj[e.charCodeAt(t+3)],o[l++]=i>>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===c?(i=lj[e.charCodeAt(t)]<<2|lj[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===c&&(i=lj[e.charCodeAt(t)]<<10|lj[e.charCodeAt(t+1)]<<4|lj[e.charCodeAt(t+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(qj,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function nM(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function rM(e){return null!=e&&(!!e._isBuffer||iM(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&iM(e.slice(0,0))}(e))}function iM(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var cM=Object.freeze({__proto__:null,Buffer:Gj,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),Gj.alloc(+e)},isBuffer:rM,kMaxLength:gj}),oM={exports:{}},aM={},lM={};Object.defineProperty(lM,"__esModule",{value:!0}),lM.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,o=Gj.alloc(c);for(o.write(e);i--;)o.write("=",r++);return o.toString()},Object.defineProperty(aM,"__esModule",{value:!0});var uM=lM;function dM(e,t){return void 0===t&&(t="utf8"),Gj.isBuffer(e)?mM(e.toString("base64")):mM(Gj.from(e,t).toString("base64"))}function sM(e){return e=e.toString(),uM.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function mM(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var ZM,hM=dM;hM.encode=dM,hM.decode=function(e,t){return void 0===t&&(t="utf8"),Gj.from(sM(e),"base64").toString(t)},hM.toBase64=sM,hM.fromBase64=mM,hM.toBuffer=function(e){return Gj.from(sM(e),"base64")},aM.default=hM,(ZM=oM).exports=aM.default,ZM.exports.default=ZM.exports;var bM=oM.exports,pM={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(e,n,r,i,c){for(var o,a,l,u,d,s,m,Z,h,b,p,I,g;c>=64;){for(o=n[0],a=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],Z=n[7],b=0;b<16;b++)p=i+4*b,e[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)I=((h=e[b-2])>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,g=((h=e[b-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,e[b]=(I+e[b-7]|0)+(g+e[b-16]|0);for(b=0;b<64;b++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(Z+(t[b]+e[b]|0)|0)|0,g=((o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10))+(o&a^o&l^a&l)|0,Z=m,m=s,s=d,d=u+I|0,u=l,l=a,a=o,o=I+g|0;n[0]+=o,n[1]+=a,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=Z,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,o=t%64<56?64:128;this.buffer[r]=128;for(var a=r+1;a<o-8;a++)this.buffer[a]=0;this.buffer[o-8]=i>>>24&255,this.buffer[o-7]=i>>>16&255,this.buffer[o-6]=i>>>8&255,this.buffer[o-5]=i>>>0&255,this.buffer[o-4]=c>>>24&255,this.buffer[o-3]=c>>>16&255,this.buffer[o-2]=c>>>8&255,this.buffer[o-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,o),this.finished=!0}for(a=0;a<8;a++)e[4*a+0]=this.state[a]>>>24&255,e[4*a+1]=this.state[a]>>>16&255,e[4*a+2]=this.state[a]>>>8&255,e[4*a+3]=this.state[a]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function o(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function a(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=o;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=o(t,e),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,Z=new Uint8Array(r),h=0;h<r;h++)m===s.length&&(a(s,d,n,c),m=0),Z[h]=s[m++];return d.clean(),s.fill(0),c.fill(0),Z}function d(e,t,n,r){for(var c=new i(e),o=c.digestLength,a=new Uint8Array(4),l=new Uint8Array(o),u=new Uint8Array(o),d=new Uint8Array(r),s=0;s*o<r;s++){var m=s+1;a[0]=m>>>24&255,a[1]=m>>>16&255,a[2]=m>>>8&255,a[3]=m>>>0&255,c.reset(),c.update(t),c.update(a),c.finish(u);for(var Z=0;Z<o;Z++)l[Z]=u[Z];for(Z=2;Z<=n;Z++){c.reset(),c.update(u).finish(u);for(var h=0;h<o;h++)l[h]^=u[h]}for(Z=0;Z<o&&s*o+Z<r;Z++)d[s*o+Z]=l[Z]}for(s=0;s<o;s++)l[s]=u[s]=0;for(s=0;s<4;s++)a[s]=0;return c.clean(),d}e.hkdf=u,e.pbkdf2=d}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(pM);var IM=t(pM.exports),gM=crypto,yM=function(e){return e instanceof CryptoKey},XM=new TextEncoder,GM=new TextDecoder;function fM(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var VM=function(e){var t=e;t instanceof Uint8Array&&(t=GM.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){for(var t=atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},WM=function(e){m(n,I(Error));var t=X(n);function n(e){var r,i;return l(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,g(r),r.constructor),r}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(),CM=function(e){m(n,WM);var t=X(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return l(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(),vM=function(e){m(n,WM);var t=X(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return l(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(),RM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(),SM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(),YM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(),JM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(),KM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(),LM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(),NM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(),HM=function(e){m(n,WM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}();function xM(){return"function"==typeof WebSocketPair}function kM(){try{return void 0!==wB.versions.node}catch(e){return!1}}function UM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function AM(e,t){return e.name===t}function wM(e){return parseInt(e.name.slice(4),10)}function FM(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function TM(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var BM=function(e){for(var t="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var o=r.pop();t+="one of type ".concat(r.join(", "),", or ").concat(o,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===c(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},zM=function(e){return yM(e)},jM=["CryptoKey"],MM=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,o=C(i);try{for(o.s();!(c=o.n()).done;){var a=c.value,l=Object.keys(a);if(r&&0!==r.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(r.has(s))return!1;r.add(s)}else r=new Set(l)}}catch(e){o.e(e)}finally{o.f()}return!0};function QM(e){if("object"!==c(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var PM=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function EM(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new SM("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new SM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new SM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new SM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(xM()||kM())&&"OKP":if("EdDSA"!==e.alg)throw new SM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case kM()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new SM('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new SM('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var OM=function(){var e=a(regeneratorRuntime.mark((function e(t){var n,r,c,o,a,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=EM(t),a=o.algorithm,l=o.keyUsages,u=[a,null!==(r=t.ext)&&void 0!==r&&r,null!==(c=t.key_ops)&&void 0!==c?c:l],"PBKDF2"!==a.name){e.next=4;break}return e.abrupt("return",(d=gM.subtle).importKey.apply(d,["raw",VM(t.k)].concat(u)));case 4:return delete(s=i({},t)).alg,e.abrupt("return",(n=gM.subtle).importKey.apply(n,["jwk",s].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function DM(e,t,n){return _M.apply(this,arguments)}function _M(){return(_M=a(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(QM(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",OM(i(i({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",VM(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new SM('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",OM(i(i({},t),{},{alg:n})));case 17:throw new SM('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var qM=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!zM(e))throw new TypeError(BM.apply(void 0,[e].concat(f(jM),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(jM.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!zM(e))throw new TypeError(BM.apply(void 0,[e].concat(f(jM))));if("secret"===e.type)throw new TypeError("".concat(jM.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(jM.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(jM.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(jM.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(jM.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function $M(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(f(Object.entries(n)),f(t.entries()))):t;var o,a=C(r.crit);try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!c.has(l))throw new SM('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){a.e(e)}finally{a.f()}return new Set(r.crit)}var eQ=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function tQ(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:t.namedCurve};case(xM()||kM())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new SM("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function nQ(e,t,n){if(yM(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!AM(e.algorithm,"HMAC"))throw UM("HMAC");var n=parseInt(t.slice(2),10);if(wM(e.algorithm.hash)!==n)throw UM("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!AM(e.algorithm,"RSASSA-PKCS1-v1_5"))throw UM("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(wM(e.algorithm.hash)!==r)throw UM("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!AM(e.algorithm,"RSA-PSS"))throw UM("RSA-PSS");var i=parseInt(t.slice(2),10);if(wM(e.algorithm.hash)!==i)throw UM("SHA-".concat(i),"algorithm.hash");break;case kM()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw UM("NODE-ED25519 or NODE-ED448");break;case xM()&&"EdDSA":if(!AM(e.algorithm,"NODE-ED25519"))throw UM("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!AM(e.algorithm,"ECDSA"))throw UM("ECDSA");var c=FM(t);if(e.algorithm.namedCurve!==c)throw UM(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var o=arguments.length,a=new Array(o>2?o-2:0),l=2;l<o;l++)a[l-2]=arguments[l];TM(e,a)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(BM.apply(void 0,[t].concat(f(jM))));return gM.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(BM.apply(void 0,[t].concat(f(jM),["Uint8Array"])))}var rQ=function(){var e=a(regeneratorRuntime.mark((function e(t,n,r,i){var c,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,nQ(t,n,"verify");case 2:return c=e.sent,PM(t,c),o=tQ(t,c.algorithm),e.prev=5,e.next=8,gM.subtle.verify(o,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function iQ(e,t,n){return cQ.apply(this,arguments)}function cQ(){return cQ=a(regeneratorRuntime.mark((function e(t,n,r){var c,o,a,l,u,d,s,m,Z,h,b,p,I;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(QM(t)){e.next=2;break}throw new YM("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new YM('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new YM("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new YM("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new YM("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||QM(t.header)){e.next=12;break}throw new YM("JWS Unprotected Header incorrect type");case 12:if(o={},!t.protected){e.next=22;break}a=VM(t.protected),e.prev=15,o=JSON.parse(GM.decode(a)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new YM("JWS Protected Header is invalid");case 22:if(MM(o,t.header)){e.next=24;break}throw new YM("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=i(i({},o),t.header),u=$M(YM,new Map([["b64",!0]]),null==r?void 0:r.crit,o,l),d=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(d=o.b64)){e.next=31;break}throw new YM('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(s=l.alg)&&s){e.next=34;break}throw new YM('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&eQ("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new RM('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new YM("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new YM("JWS Payload must be a string or an Uint8Array instance");case 44:if(Z=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(o,t);case 48:n=e.sent,Z=!0;case 50:return qM(s,n,"verify"),h=fM(XM.encode(null!==(c=t.protected)&&void 0!==c?c:""),XM.encode("."),"string"==typeof t.payload?XM.encode(t.payload):t.payload),b=VM(t.signature),e.next=55,rQ(s,n,b,h);case 55:if(e.sent){e.next=58;break}throw new HM;case 58:if(p=d?VM(t.payload):"string"==typeof t.payload?XM.encode(t.payload):t.payload,I={payload:p},void 0!==t.protected&&(I.protectedHeader=o),void 0!==t.header&&(I.unprotectedHeader=t.header),!Z){e.next=64;break}return e.abrupt("return",i(i({},I),{},{key:n}));case 64:return e.abrupt("return",I);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),cQ.apply(this,arguments)}function oQ(e,t,n){return aQ.apply(this,arguments)}function aQ(){return aQ=a(regeneratorRuntime.mark((function e(t,n,r){var c,o,a,l,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=GM.decode(t)),"string"==typeof t){e.next=3;break}throw new YM("Compact JWS must be a string or Uint8Array");case 3:if(c=t.split("."),o=c[0],a=c[1],l=c[2],3===c.length){e.next=6;break}throw new YM("Invalid Compact JWS");case 6:return e.next=8,iQ({payload:a,protected:o,signature:l},n,r);case 8:if(u=e.sent,d={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",i(i({},d),{},{key:u.key}));case 12:return e.abrupt("return",d);case 13:case"end":return e.stop()}}),e)}))),aQ.apply(this,arguments)}var lQ=function(e){return Math.floor(e.getTime()/1e3)},uQ=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,dQ=function(e){var t=uQ.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},sQ=function(e){return e.toLowerCase().replace(/^application\//,"")},mQ=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},ZQ=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||sQ(e.typ)!==sQ(i)))throw new CM('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(GM.decode(t))}catch(e){}if(!QM(n))throw new JM("JWT Claims Set must be a top-level JSON object");var o=r.issuer;if(o&&!(Array.isArray(o)?o:[o]).includes(n.iss))throw new CM('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new CM('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!mQ(n.aud,"string"==typeof u?[u]:u))throw new CM('unexpected "aud" claim value',"aud","check_failed");switch(c(r.clockTolerance)){case"string":l=dQ(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=r.currentDate,s=lQ(d||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new CM('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new CM('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new CM('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new CM('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new vM('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,Z="number"==typeof r.maxTokenAge?r.maxTokenAge:dQ(r.maxTokenAge);if(m-l>Z)throw new vM('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new CM('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function hQ(){return hQ=a(regeneratorRuntime.mark((function e(t,n,r){var c,o,a,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,oQ(t,n,r);case 2:if(o=e.sent,!(null===(c=o.protectedHeader.crit)||void 0===c?void 0:c.includes("b64"))||!1!==o.protectedHeader.b64){e.next=5;break}throw new JM("JWTs MUST NOT use unencoded payload");case 5:if(a=ZQ(o.protectedHeader,o.payload,r),l={payload:a,protectedHeader:o.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",i(i({},l),{},{key:o.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),hQ.apply(this,arguments)}function bQ(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new SM('Unsupported "alg" value for a JSON Web Key Set')}}function pQ(e){return QM(e)}var IQ=function(){function e(t){if(l(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===c(e)&&Array.isArray(e.keys)&&e.keys.every(pQ)}(t))throw new KM("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return d(e,[{key:"getKey",value:(t=a(regeneratorRuntime.mark((function e(t,n){var r,c,o,a,l,u,d,s,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=i(i({},t),n.header),c=r.alg,o=r.kid,a=bQ(c),l=this._jwks.keys.filter((function(e){var t=a===e.kty;if(t&&"string"==typeof o&&(t=o===e.kid),t&&"string"==typeof e.alg&&(t=c===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===c&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(c){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),u=l[0],0!==(d=l.length)){e.next=8;break}throw new LM;case 8:if(1===d){e.next=10;break}throw new NM;case 10:if(void 0!==(s=this._cached.get(u)||this._cached.set(u,{}).get(u))[c]){e.next=18;break}return e.next=14,DM(i(i({},u),{},{ext:!0}),c);case 14:if(!((m=e.sent)instanceof Uint8Array||"public"!==m.type)){e.next=17;break}throw new KM("JSON Web Key Set members must be public keys");case 17:s[c]=m;case 18:return e.abrupt("return",s[c]);case 19:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var gQ={exports:{}},yQ={exports:{}},XQ=n(cM);
|
|
449
|
+
*/},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}},{key:"clearUserSessionData",value:function(e){return cT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.clearUserSessionData(e);case 2:case"end":return t.stop()}}),t,this)})))}}]),e}();!function(e){e.LocalStorage="localStorage",e.SessionStorage="sessionStorage",e.WebWorker="webWorker",e.BrowserMemory="browserMemory"}(RT||(RT={})),function(e){e.SignIn="sign-in",e.SignOut="sign-out",e.Initialize="initialize",e.HttpRequestStart="http-request-start",e.HttpRequestFinish="http-request-finish",e.HttpRequestError="http-request-error",e.HttpRequestSuccess="http-request-success",e.RevokeAccessToken="revoke-access-token",e.CustomGrant="custom-grant",e.SignOutFailed="sign-out-failed"}(ST||(ST={}));var xT,UT,kT,AT,wT,FT,TT,BT,zT,jT,MT,QT,PT,ET,DT,OT,_T,qT="Y2hlY2tTZXNzaW9u",$T=function(){function e(t){l(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return d(e,[{key:"refreshAccessTokenAutomatically",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return iT(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(ZT,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(ZT);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(ZT);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),eB=function(){function e(){l(this,e)}return d(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(fT,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(fT))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem("initialized-silent-sign-in"),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!HT.isSignOutSuccessful(window.location.href)){e.next=6;break}return t=window.location.href.split("?")[0],history.pushState({},document.title,t),e.next=5,HT.clearUserSessionData();case 5:return e.abrupt("return",!0);case 6:return e.abrupt("return",!1);case 7:case"end":return e.stop()}}),e)})))}},{key:"didSignOutFail",value:function(){if(HT.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get("error"),n=e.searchParams.get("error_description"),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes("sign-in-silently"))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get("error")&&t.searchParams.get("state")!==GT}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem("promptNoneRequestSent");return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),tB=(QT=function(e,t,n,r,i,c,a){xT=e,UT=t,kT=n,wT=c,FT=i,MT=a,(AT=r)>-1&&PT(),FT>-1&&(i=setInterval((function(){OT()}),1e3*FT))},PT=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,kT();case 2:r=t.sent,Boolean(xT)&&Boolean(r)&&(i="".concat(xT," ").concat(r),c=document.getElementById("rpIFrame"),a=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(o=a.contentWindow)||o.postMessage(i,UT));case 4:case"end":return t.stop()}}),t)})))},UT&&xT&&wT){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById("rpIFrame"),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=UT+"?client_id="+xT+"&redirect_uri="+wT,e.next=9,r();case 9:BT=setInterval(r,1e3*AT),DT();case 11:case"end":return e.stop()}}),e)})))},ET=function(){clearInterval(BT),clearInterval(void 0)},DT=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=UT)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&"set_session_state_from_iframe"!==(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,TT();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&OT();case 13:case"end":return n.stop()}}),n)})))}),!1)},OT=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=document.getElementById("rpIFrame"),r=null===(t=null==n?void 0:n.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),!eB.canSendPromptNoneRequest()){e.next=10;break}return eB.setPromptNoneRequestSent(!0),i=function e(t){var n,r,i;"set_session_state_from_iframe"===(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)&&(jT(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},zT!==RT.BrowserMemory&&zT!==RT.WebWorker||null===window||void 0===window||window.addEventListener("message",i),e.next=8,MT({prompt:"none",responseMode:"query",state:qT});case 8:c=e.sent,r.src=c;case 10:case"end":return e.stop()}}),e)})))},_T=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,l,u,d,s;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new URL(window.location.href).searchParams.get("state"),c=new URL(window.location.href).searchParams.get(XT),a=window.parent.parent,null===i||!i.includes(qT)&&!i.includes("sign-in-silently")){t.next=48;break}if(null===(o=new URL(window.location.href).searchParams.get("code"))||0===o.length){t.next=32;break}if(!i.includes("sign-in-silently")){t.next=15;break}return l={data:{code:o,sessionState:null!=c?c:"",state:i},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),a.postMessage(l,a.origin),eB.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=14,eB.waitTillPageRedirect();case 14:return t.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),zT!==RT.LocalStorage&&zT!==RT.SessionStorage){t.next=23;break}if(t.t0=e,!t.t0){t.next=21;break}return t.next=21,e(u);case 21:t.next=25;break;case 23:d={data:null!=u?u:"",type:"set_session_state_from_iframe"},null===(r=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===r||r.postMessage(d);case 25:return eB.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=29,eB.waitTillPageRedirect();case 29:return t.abrupt("return",!0);case 32:if(!i.includes("sign-in-silently")){t.next=40;break}return s={type:"check_session_signed_out"},window.parent.parent.postMessage(s,a.origin),eB.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=39,eB.waitTillPageRedirect();case 39:return t.abrupt("return",!0);case 40:return eB.setPromptNoneRequestSent(!1),t.next=43,TT();case 43:return a.location.href=t.sent,window.location.href="about:blank",t.next=47,eB.waitTillPageRedirect();case 47:return t.abrupt("return",!0);case 48:return t.abrupt("return",!1);case 49:case"end":return t.stop()}}),t)})))},function(e,t,n){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id","rpIFrame"),c.style.display="none",a=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById("rpIFrame"))?void 0:c.contentDocument,o=null==i?void 0:i.createElement("iframe");o&&(o.setAttribute("id","opIFrame"),o.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id","promptNoneIFrame"),l.style.display="none"),o&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(o)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),a=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),TT=e,zT=t,jT=n,o=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==a){r.next=15;break}return r.next=13,o();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:QT,receivePromptNoneResponse:_T,reset:ET});case 16:case"end":return r.stop()}}),r)})))}),nB={exports:{}},rB=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},iB=rB,cB=Object.prototype.toString;function aB(e){return Array.isArray(e)}function oB(e){return void 0===e}function lB(e){return"[object ArrayBuffer]"===cB.call(e)}function uB(e){return null!==e&&"object"===c(e)}function dB(e){if("[object Object]"!==cB.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function sB(e){return"[object Function]"===cB.call(e)}function mB(e,t){if(null!=e)if("object"!==c(e)&&(e=[e]),aB(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var ZB={isArray:aB,isArrayBuffer:lB,isBuffer:function(e){return null!==e&&!oB(e)&&null!==e.constructor&&!oB(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===cB.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&lB(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:uB,isPlainObject:dB,isUndefined:oB,isDate:function(e){return"[object Date]"===cB.call(e)},isFile:function(e){return"[object File]"===cB.call(e)},isBlob:function(e){return"[object Blob]"===cB.call(e)},isFunction:sB,isStream:function(e){return uB(e)&&sB(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===cB.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:mB,merge:function e(){var t={};function n(n,r){dB(t[r])&&dB(n)?t[r]=e(t[r],n):dB(n)?t[r]=e({},n):aB(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)mB(arguments[r],n);return t},extend:function(e,t,n){return mB(t,(function(t,r){e[r]=n&&"function"==typeof t?iB(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},hB=ZB;function bB(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var pB=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(hB.isURLSearchParams(t))r=t.toString();else{var i=[];hB.forEach(t,(function(e,t){null!=e&&(hB.isArray(e)?t+="[]":e=[e],hB.forEach(e,(function(e){hB.isDate(e)?e=e.toISOString():hB.isObject(e)&&(e=JSON.stringify(e)),i.push(bB(t)+"="+bB(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},IB=ZB;function gB(){this.handlers=[]}gB.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},gB.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},gB.prototype.forEach=function(e){IB.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var yB=gB,XB="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function fB(){throw new Error("setTimeout has not been defined")}function GB(){throw new Error("clearTimeout has not been defined")}var VB=fB,WB=GB;function CB(e){if(VB===setTimeout)return setTimeout(e,0);if((VB===fB||!VB)&&setTimeout)return VB=setTimeout,setTimeout(e,0);try{return VB(e,0)}catch(t){try{return VB.call(null,e,0)}catch(t){return VB.call(this,e,0)}}}"function"==typeof XB.setTimeout&&(VB=setTimeout),"function"==typeof XB.clearTimeout&&(WB=clearTimeout);var vB,RB=[],SB=!1,YB=-1;function JB(){SB&&vB&&(SB=!1,vB.length?RB=vB.concat(RB):YB=-1,RB.length&&KB())}function KB(){if(!SB){var e=CB(JB);SB=!0;for(var t=RB.length;t;){for(vB=RB,RB=[];++YB<t;)vB&&vB[YB].run();YB=-1,t=RB.length}vB=null,SB=!1,function(e){if(WB===clearTimeout)return clearTimeout(e);if((WB===GB||!WB)&&clearTimeout)return WB=clearTimeout,clearTimeout(e);try{WB(e)}catch(t){try{return WB.call(null,e)}catch(t){return WB.call(this,e)}}}(e)}}function NB(e,t){this.fun=e,this.array=t}NB.prototype.run=function(){this.fun.apply(null,this.array)};function LB(){}var HB=LB,xB=LB,UB=LB,kB=LB,AB=LB,wB=LB,FB=LB;var TB=XB.performance||{},BB=TB.now||TB.mozNow||TB.msNow||TB.oNow||TB.webkitNow||function(){return(new Date).getTime()};var zB=new Date;var jB={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];RB.push(new NB(e,t)),1!==RB.length||SB||CB(KB)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:HB,addListener:xB,once:UB,off:kB,removeListener:AB,removeAllListeners:wB,emit:FB,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*BB.call(TB),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-zB)/1e3}},MB=jB,QB=ZB,PB=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e},EB={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},DB=PB,OB=function(e,t,n,r,i){var c=new Error(e);return DB(c,t,n,r,i)},_B=OB,qB=ZB,$B=qB.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var a=[];a.push(e+"="+encodeURIComponent(t)),qB.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),qB.isString(r)&&a.push("path="+r),qB.isString(i)&&a.push("domain="+i),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},ez=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},tz=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},nz=ZB,rz=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],iz=ZB,cz=iz.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=iz.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function az(e){this.message=e}az.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},az.prototype.__CANCEL__=!0;var oz=az,lz=ZB,uz=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(_B("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},dz=$B,sz=pB,mz=function(e,t){return e&&!ez(t)?tz(e,t):t},Zz=function(e){var t,n,r,i={};return e?(nz.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=nz.trim(e.substr(0,r)).toLowerCase(),n=nz.trim(e.substr(r+1)),t){if(i[t]&&rz.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},hz=cz,bz=OB,pz=EB,Iz=oz,gz=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,a=e.responseType;function o(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}lz.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+d)}var s=mz(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?Zz(l.getAllResponseHeaders()):null,i={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};uz((function(e){t(e),o()}),(function(e){n(e),o()}),i),l=null}}if(l.open(e.method.toUpperCase(),sz(s,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(bz("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(bz("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||pz;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(bz(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},lz.isStandardBrowserEnv()){var Z=(e.withCredentials||hz(s))&&e.xsrfCookieName?dz.read(e.xsrfCookieName):void 0;Z&&(c[e.xsrfHeaderName]=Z)}"setRequestHeader"in l&&lz.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),lz.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new Iz("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},yz=ZB,Xz=function(e,t){QB.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},fz=PB,Gz={"Content-Type":"application/x-www-form-urlencoded"};function Vz(e,t){!yz.isUndefined(e)&&yz.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Wz,Cz={transitional:EB,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==MB&&"[object process]"===Object.prototype.toString.call(MB))&&(Wz=gz),Wz),transformRequest:[function(e,t){return Xz(t,"Accept"),Xz(t,"Content-Type"),yz.isFormData(e)||yz.isArrayBuffer(e)||yz.isBuffer(e)||yz.isStream(e)||yz.isFile(e)||yz.isBlob(e)?e:yz.isArrayBufferView(e)?e.buffer:yz.isURLSearchParams(e)?(Vz(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):yz.isObject(e)||t&&"application/json"===t["Content-Type"]?(Vz(t,"application/json"),function(e,t,n){if(yz.isString(e))try{return(t||JSON.parse)(e),yz.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||Cz.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&yz.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw fz(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};yz.forEach(["delete","get","head"],(function(e){Cz.headers[e]={}})),yz.forEach(["post","put","patch"],(function(e){Cz.headers[e]=yz.merge(Gz)}));var vz=Cz,Rz=ZB,Sz=vz,Yz=function(e){return!(!e||!e.__CANCEL__)},Jz=ZB,Kz=function(e,t,n){var r=this||Sz;return Rz.forEach(n,(function(n){e=n.call(r,e,t)})),e},Nz=Yz,Lz=vz,Hz=oz;function xz(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Hz("canceled")}var Uz=ZB,kz=function(e,t){t=t||{};var n={};function r(e,t){return Uz.isPlainObject(e)&&Uz.isPlainObject(t)?Uz.merge(e,t):Uz.isPlainObject(t)?Uz.merge({},t):Uz.isArray(t)?t.slice():t}function i(n){return Uz.isUndefined(t[n])?Uz.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!Uz.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return Uz.isUndefined(t[n])?Uz.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function o(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return Uz.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);Uz.isUndefined(r)&&t!==o||(n[e]=r)})),n},Az="0.26.1",wz=Az,Fz={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Fz[e]=function(n){return c(n)===e||"a"+(t<1?"n ":" ")+e}}));var Tz={};Fz.transitional=function(e,t,n){function r(e,t){return"[Axios v"+wz+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!Tz[i]&&(Tz[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var Bz={assertOptions:function(e,t,n){if("object"!==c(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var a=r[i],o=t[a];if(o){var l=e[a],u=void 0===l||o(l,a,e);if(!0!==u)throw new TypeError("option "+a+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+a)}},validators:Fz},zz=ZB,jz=pB,Mz=yB,Qz=function(e){return xz(e),e.headers=e.headers||{},e.data=Kz.call(e,e.data,e.headers,e.transformRequest),e.headers=Jz.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Jz.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Lz.adapter)(e).then((function(t){return xz(e),t.data=Kz.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Nz(t)||(xz(e),t&&t.response&&(t.response.data=Kz.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Pz=kz,Ez=Bz,Dz=Ez.validators;function Oz(e){this.defaults=e,this.interceptors={request:new Mz,response:new Mz}}Oz.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=Pz(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&Ez.assertOptions(n,{silentJSONParsing:Dz.transitional(Dz.boolean),forcedJSONParsing:Dz.transitional(Dz.boolean),clarifyTimeoutError:Dz.transitional(Dz.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)})),!i){var o=[Qz,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(a),c=Promise.resolve(t);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=t;r.length;){var u=r.shift(),d=r.shift();try{l=u(l)}catch(e){d(e);break}}try{c=Qz(l)}catch(e){return Promise.reject(e)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},Oz.prototype.getUri=function(e){return e=Pz(this.defaults,e),jz(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},zz.forEach(["delete","get","head","options"],(function(e){Oz.prototype[e]=function(t,n){return this.request(Pz(n||{},{method:e,url:t,data:(n||{}).data}))}})),zz.forEach(["post","put","patch"],(function(e){Oz.prototype[e]=function(t,n,r){return this.request(Pz(r||{},{method:e,url:t,data:n}))}}));var _z=Oz,qz=oz;function $z(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new qz(e),t(n.reason))}))}$z.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},$z.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},$z.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},$z.source=function(){var e,t=new $z((function(t){e=t}));return{token:t,cancel:e}};var ej=$z,tj=ZB,nj=ZB,rj=rB,ij=_z,cj=kz;var aj=function e(t){var n=new ij(t),r=rj(ij.prototype.request,n);return nj.extend(r,ij.prototype,n),nj.extend(r,n),r.create=function(n){return e(cj(t,n))},r}(vz);aj.Axios=ij,aj.Cancel=oz,aj.CancelToken=ej,aj.isCancel=Yz,aj.VERSION=Az,aj.all=function(e){return Promise.all(e)},aj.spread=function(e){return function(t){return e.apply(null,t)}},aj.isAxiosError=function(e){return tj.isObject(e)&&!0===e.isAxiosError},nB.exports=aj,nB.exports.default=aj;var oj,lj=nB.exports;var uj=oj=function(){function e(){l(this,e),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return d(e,[{key:"requestHandler",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),oj.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw oj.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return oj.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:oj.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){oj.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){oj.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:oj.DEFAULT_HANDLER_DISABLE_TIMEOUT;oj.isHandlerEnabled=!1,setTimeout((function(){oj.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=lj.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new oj),this.axiosInstance.interceptors.request.use((function(t){return iT(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=lj.all,this.axiosInstance.spread=lj.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),e}();uj.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,uj=oj=function(e,t,n,r){var i,a=arguments.length,o=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":c(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}([function(e){}],uj);var dj=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),sj=function(){function e(){l(this,e),this._data=new Map}return d(e,[{key:"setData",value:function(e,t){return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return iT(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),mj=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),Zj=[],hj=[],bj="undefined"!=typeof Uint8Array?Uint8Array:Array,pj=!1;function Ij(){pj=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)Zj[t]=e[t],hj[e.charCodeAt(t)]=t;hj["-".charCodeAt(0)]=62,hj["_".charCodeAt(0)]=63}function gj(e,t,n){for(var r,i,c=[],a=t;a<n;a+=3)r=(e[a]<<16)+(e[a+1]<<8)+e[a+2],c.push(Zj[(i=r)>>18&63]+Zj[i>>12&63]+Zj[i>>6&63]+Zj[63&i]);return c.join("")}function yj(e){var t;pj||Ij();for(var n=e.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(gj(e,o,o+a>l?l:o+a));return 1===r?(t=e[n-1],i+=Zj[t>>2],i+=Zj[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=Zj[t>>10],i+=Zj[t>>4&63],i+=Zj[t<<2&63],i+="="),c.push(i),c.join("")}function Xj(e,t,n,r,i){var c,a,o=8*i-r-1,l=(1<<o)-1,u=l>>1,d=-7,s=n?i-1:0,m=n?-1:1,Z=e[t+s];for(s+=m,c=Z&(1<<-d)-1,Z>>=-d,d+=o;d>0;c=256*c+e[t+s],s+=m,d-=8);for(a=c&(1<<-d)-1,c>>=-d,d+=r;d>0;a=256*a+e[t+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(Z?-1:1);a+=Math.pow(2,r),c-=u}return(Z?-1:1)*a*Math.pow(2,c-r)}function fj(e,t,n,r,i,c){var a,o,l,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,Z=r?0:c-1,h=r?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=d):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+s>=1?m/l:m*Math.pow(2,1-s))*l>=2&&(a++,l/=2),a+s>=d?(o=0,a=d):a+s>=1?(o=(t*l-1)*Math.pow(2,i),a+=s):(o=t*Math.pow(2,s-1)*Math.pow(2,i),a=0));i>=8;e[n+Z]=255&o,Z+=h,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;e[n+Z]=255&a,Z+=h,a/=256,u-=8);e[n+Z-h]|=128*b}var Gj={}.toString,Vj=Array.isArray||function(e){return"[object Array]"==Gj.call(e)};Rj.TYPED_ARRAY_SUPPORT=void 0===XB.TYPED_ARRAY_SUPPORT||XB.TYPED_ARRAY_SUPPORT;var Wj=Cj();function Cj(){return Rj.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function vj(e,t){if(Cj()<t)throw new RangeError("Invalid typed array length");return Rj.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Rj.prototype:(null===e&&(e=new Rj(t)),e.length=t),e}function Rj(e,t,n){if(!(Rj.TYPED_ARRAY_SUPPORT||this instanceof Rj))return new Rj(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Jj(this,e)}return Sj(this,e,t,n)}function Sj(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);Rj.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Rj.prototype:e=Kj(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Rj.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|Hj(t,n),i=(e=vj(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(Lj(t)){var n=0|Nj(t.length);return 0===(e=vj(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?vj(e,0):Kj(e,t);if("Buffer"===t.type&&Vj(t.data))return Kj(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Yj(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Jj(e,t){if(Yj(t),e=vj(e,t<0?0:0|Nj(t)),!Rj.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function Kj(e,t){var n=t.length<0?0:0|Nj(t.length);e=vj(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function Nj(e){if(e>=Cj())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Cj().toString(16)+" bytes");return 0|e}function Lj(e){return!(null==e||!e._isBuffer)}function Hj(e,t){if(Lj(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return aM(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return oM(e).length;default:if(r)return aM(e).length;t=(""+t).toLowerCase(),r=!0}}function xj(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return Dj(this,t,n);case"utf8":case"utf-8":return Qj(this,t,n);case"ascii":return Pj(this,t,n);case"latin1":case"binary":return Ej(this,t,n);case"base64":return Mj(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Oj(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Uj(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function kj(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=Rj.from(t,r)),Lj(t))return 0===t.length?-1:Aj(e,t,n,r,i);if("number"==typeof t)return t&=255,Rj.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):Aj(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function Aj(e,t,n,r,i){var c,a=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var d=-1;for(c=n;c<o;c++)if(u(e,c)===u(t,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===l)return d*a}else-1!==d&&(c-=c-d),d=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var s=!0,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){s=!1;break}if(s)return c}return-1}function wj(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var a=0;a<r;++a){var o=parseInt(t.substr(2*a,2),16);if(isNaN(o))return a;e[n+a]=o}return a}function Fj(e,t,n,r){return lM(aM(t,e.length-n),e,n,r)}function Tj(e,t,n,r){return lM(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function Bj(e,t,n,r){return Tj(e,t,n,r)}function zj(e,t,n,r){return lM(oM(t),e,n,r)}function jj(e,t,n,r){return lM(function(e,t){for(var n,r,i,c=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(n=e.charCodeAt(a))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function Mj(e,t,n){return 0===t&&n===e.length?yj(e):yj(e.slice(t,n))}function Qj(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,a,o,l,u=e[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(d=l);break;case 3:c=e[i+1],a=e[i+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(d=l);break;case 4:c=e[i+1],a=e[i+2],o=e[i+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(d=l)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=4096));return n}(r)}Rj.poolSize=8192,Rj._augment=function(e){return e.__proto__=Rj.prototype,e},Rj.from=function(e,t,n){return Sj(null,e,t,n)},Rj.TYPED_ARRAY_SUPPORT&&(Rj.prototype.__proto__=Uint8Array.prototype,Rj.__proto__=Uint8Array),Rj.alloc=function(e,t,n){return function(e,t,n,r){return Yj(t),t<=0?vj(e,t):void 0!==n?"string"==typeof r?vj(e,t).fill(n,r):vj(e,t).fill(n):vj(e,t)}(null,e,t,n)},Rj.allocUnsafe=function(e){return Jj(null,e)},Rj.allocUnsafeSlow=function(e){return Jj(null,e)},Rj.isBuffer=uM,Rj.compare=function(e,t){if(!Lj(e)||!Lj(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},Rj.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Rj.concat=function(e,t){if(!Vj(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Rj.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=Rj.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!Lj(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},Rj.byteLength=Hj,Rj.prototype._isBuffer=!0,Rj.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Uj(this,t,t+1);return this},Rj.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Uj(this,t,t+3),Uj(this,t+1,t+2);return this},Rj.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Uj(this,t,t+7),Uj(this,t+1,t+6),Uj(this,t+2,t+5),Uj(this,t+3,t+4);return this},Rj.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?Qj(this,0,e):xj.apply(this,arguments)},Rj.prototype.equals=function(e){if(!Lj(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Rj.compare(this,e)},Rj.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},Rj.prototype.compare=function(e,t,n,r,i){if(!Lj(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),o=Math.min(c,a),l=this.slice(r,i),u=e.slice(t,n),d=0;d<o;++d)if(l[d]!==u[d]){c=l[d],a=u[d];break}return c<a?-1:a<c?1:0},Rj.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},Rj.prototype.indexOf=function(e,t,n){return kj(this,e,t,n,!0)},Rj.prototype.lastIndexOf=function(e,t,n){return kj(this,e,t,n,!1)},Rj.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return wj(this,e,t,n);case"utf8":case"utf-8":return Fj(this,e,t,n);case"ascii":return Tj(this,e,t,n);case"latin1":case"binary":return Bj(this,e,t,n);case"base64":return zj(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return jj(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},Rj.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Pj(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function Ej(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function Dj(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=cM(e[c]);return i}function Oj(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function _j(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function qj(e,t,n,r,i,c){if(!Lj(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function $j(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function eM(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function tM(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function nM(e,t,n,r,i){return i||tM(e,0,n,4),fj(e,t,n,r,23,4),n+4}function rM(e,t,n,r,i){return i||tM(e,0,n,8),fj(e,t,n,r,52,8),n+8}Rj.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),Rj.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Rj.prototype;else{var i=t-e;n=new Rj(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},Rj.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||_j(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},Rj.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||_j(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},Rj.prototype.readUInt8=function(e,t){return t||_j(e,1,this.length),this[e]},Rj.prototype.readUInt16LE=function(e,t){return t||_j(e,2,this.length),this[e]|this[e+1]<<8},Rj.prototype.readUInt16BE=function(e,t){return t||_j(e,2,this.length),this[e]<<8|this[e+1]},Rj.prototype.readUInt32LE=function(e,t){return t||_j(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Rj.prototype.readUInt32BE=function(e,t){return t||_j(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Rj.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||_j(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},Rj.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||_j(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},Rj.prototype.readInt8=function(e,t){return t||_j(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Rj.prototype.readInt16LE=function(e,t){t||_j(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Rj.prototype.readInt16BE=function(e,t){t||_j(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Rj.prototype.readInt32LE=function(e,t){return t||_j(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Rj.prototype.readInt32BE=function(e,t){return t||_j(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Rj.prototype.readFloatLE=function(e,t){return t||_j(e,4,this.length),Xj(this,e,!0,23,4)},Rj.prototype.readFloatBE=function(e,t){return t||_j(e,4,this.length),Xj(this,e,!1,23,4)},Rj.prototype.readDoubleLE=function(e,t){return t||_j(e,8,this.length),Xj(this,e,!0,52,8)},Rj.prototype.readDoubleBE=function(e,t){return t||_j(e,8,this.length),Xj(this,e,!1,52,8)},Rj.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||qj(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},Rj.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||qj(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},Rj.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,1,255,0),Rj.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Rj.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,2,65535,0),Rj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$j(this,e,t,!0),t+2},Rj.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,2,65535,0),Rj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$j(this,e,t,!1),t+2},Rj.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,4,4294967295,0),Rj.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):eM(this,e,t,!0),t+4},Rj.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,4,4294967295,0),Rj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):eM(this,e,t,!1),t+4},Rj.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);qj(this,e,t,n,i-1,-i)}var c=0,a=1,o=0;for(this[t]=255&e;++c<n&&(a*=256);)e<0&&0===o&&0!==this[t+c-1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},Rj.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);qj(this,e,t,n,i-1,-i)}var c=n-1,a=1,o=0;for(this[t+c]=255&e;--c>=0&&(a*=256);)e<0&&0===o&&0!==this[t+c+1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},Rj.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,1,127,-128),Rj.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Rj.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,2,32767,-32768),Rj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):$j(this,e,t,!0),t+2},Rj.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,2,32767,-32768),Rj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):$j(this,e,t,!1),t+2},Rj.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,4,2147483647,-2147483648),Rj.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):eM(this,e,t,!0),t+4},Rj.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||qj(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Rj.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):eM(this,e,t,!1),t+4},Rj.prototype.writeFloatLE=function(e,t,n){return nM(this,e,t,!0,n)},Rj.prototype.writeFloatBE=function(e,t,n){return nM(this,e,t,!1,n)},Rj.prototype.writeDoubleLE=function(e,t,n){return rM(this,e,t,!0,n)},Rj.prototype.writeDoubleBE=function(e,t,n){return rM(this,e,t,!1,n)},Rj.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!Rj.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},Rj.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!Rj.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var a=Lj(e)?e:aM(new Rj(e,r).toString()),o=a.length;for(c=0;c<n-t;++c)this[c+t]=a[c%o]}return this};var iM=/[^+\/0-9A-Za-z-_]/g;function cM(e){return e<16?"0"+e.toString(16):e.toString(16)}function aM(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function oM(e){return function(e){var t,n,r,i,c,a;pj||Ij();var o=e.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[o-2]?2:"="===e[o-1]?1:0,a=new bj(3*o/4-c),r=c>0?o-4:o;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=hj[e.charCodeAt(t)]<<18|hj[e.charCodeAt(t+1)]<<12|hj[e.charCodeAt(t+2)]<<6|hj[e.charCodeAt(t+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=hj[e.charCodeAt(t)]<<2|hj[e.charCodeAt(t+1)]>>4,a[l++]=255&i):1===c&&(i=hj[e.charCodeAt(t)]<<10|hj[e.charCodeAt(t+1)]<<4|hj[e.charCodeAt(t+2)]>>2,a[l++]=i>>8&255,a[l++]=255&i),a}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(iM,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function lM(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function uM(e){return null!=e&&(!!e._isBuffer||dM(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&dM(e.slice(0,0))}(e))}function dM(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var sM=Object.freeze({__proto__:null,Buffer:Rj,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),Rj.alloc(+e)},isBuffer:uM,kMaxLength:Wj}),mM={exports:{}},ZM={},hM={};Object.defineProperty(hM,"__esModule",{value:!0}),hM.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,a=Rj.alloc(c);for(a.write(e);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(ZM,"__esModule",{value:!0});var bM=hM;function pM(e,t){return void 0===t&&(t="utf8"),Rj.isBuffer(e)?gM(e.toString("base64")):gM(Rj.from(e,t).toString("base64"))}function IM(e){return e=e.toString(),bM.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function gM(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var yM,XM=pM;XM.encode=pM,XM.decode=function(e,t){return void 0===t&&(t="utf8"),Rj.from(IM(e),"base64").toString(t)},XM.toBase64=IM,XM.fromBase64=gM,XM.toBuffer=function(e){return Rj.from(IM(e),"base64")},ZM.default=XM,(yM=mM).exports=ZM.default,yM.exports.default=yM.exports;var fM=mM.exports,GM={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(e,n,r,i,c){for(var a,o,l,u,d,s,m,Z,h,b,p,I,g;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],d=n[4],s=n[5],m=n[6],Z=n[7],b=0;b<16;b++)p=i+4*b,e[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)I=((h=e[b-2])>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,g=((h=e[b-15])>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,e[b]=(I+e[b-7]|0)+(g+e[b-16]|0);for(b=0;b<64;b++)I=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(Z+(t[b]+e[b]|0)|0)|0,g=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,Z=m,m=s,s=d,d=u+I|0,u=l,l=o,o=a,a=I+g|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=Z,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,a=t%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=i>>>24&255,this.buffer[a-7]=i>>>16&255,this.buffer[a-6]=i>>>8&255,this.buffer[a-5]=i>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)e[4*o+0]=this.state[o]>>>24&255,e[4*o+1]=this.state[o]>>>16&255,e[4*o+2]=this.state[o]>>>8&255,e[4*o+3]=this.state[o]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function a(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function o(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=a;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=a(t,e),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,Z=new Uint8Array(r),h=0;h<r;h++)m===s.length&&(o(s,d,n,c),m=0),Z[h]=s[m++];return d.clean(),s.fill(0),c.fill(0),Z}function d(e,t,n,r){for(var c=new i(e),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),d=new Uint8Array(r),s=0;s*a<r;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(t),c.update(o),c.finish(u);for(var Z=0;Z<a;Z++)l[Z]=u[Z];for(Z=2;Z<=n;Z++){c.reset(),c.update(u).finish(u);for(var h=0;h<a;h++)l[h]^=u[h]}for(Z=0;Z<a&&s*a+Z<r;Z++)d[s*a+Z]=l[Z]}for(s=0;s<a;s++)l[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}e.hkdf=u,e.pbkdf2=d}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(GM);var VM=t(GM.exports),WM=crypto,CM=function(e){return e instanceof CryptoKey},vM=new TextEncoder,RM=new TextDecoder;function SM(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var YM=function(e){var t=e;t instanceof Uint8Array&&(t=RM.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){for(var t=atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},JM=function(e){m(n,I(Error));var t=X(n);function n(e){var r,i;return l(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,g(r),r.constructor),r}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(),KM=function(e){m(n,JM);var t=X(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return l(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(),NM=function(e){m(n,JM);var t=X(n);function n(e){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return l(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(),LM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(),HM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(),xM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(),UM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(),kM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(),AM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(),wM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(),FM=function(e){m(n,JM);var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}();function TM(){return"function"==typeof WebSocketPair}function BM(){try{return void 0!==MB.versions.node}catch(e){return!1}}function zM(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function jM(e,t){return e.name===t}function MM(e){return parseInt(e.name.slice(4),10)}function QM(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function PM(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var EM=function(e){for(var t="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var a=r.pop();t+="one of type ".concat(r.join(", "),", or ").concat(a,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===c(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},DM=function(e){return CM(e)},OM=["CryptoKey"],_M=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,a=C(i);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(r&&0!==r.size)for(var u=0,d=l;u<d.length;u++){var s=d[u];if(r.has(s))return!1;r.add(s)}else r=new Set(l)}}catch(e){a.e(e)}finally{a.f()}return!0};function qM(e){if("object"!==c(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var $M=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function eQ(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new HM("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new HM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new HM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new HM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(TM()||BM())&&"OKP":if("EdDSA"!==e.alg)throw new HM('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case BM()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new HM('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new HM('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var tQ=function(){var e=o(regeneratorRuntime.mark((function e(t){var n,r,c,a,o,l,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=eQ(t),o=a.algorithm,l=a.keyUsages,u=[o,null!==(r=t.ext)&&void 0!==r&&r,null!==(c=t.key_ops)&&void 0!==c?c:l],"PBKDF2"!==o.name){e.next=4;break}return e.abrupt("return",(d=WM.subtle).importKey.apply(d,["raw",YM(t.k)].concat(u)));case 4:return delete(s=i({},t)).alg,e.abrupt("return",(n=WM.subtle).importKey.apply(n,["jwk",s].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function nQ(e,t,n){return rQ.apply(this,arguments)}function rQ(){return(rQ=o(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(qM(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",tQ(i(i({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",YM(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new HM('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",tQ(i(i({},t),{},{alg:n})));case 17:throw new HM('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var iQ=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!DM(e))throw new TypeError(EM.apply(void 0,[e].concat(G(OM),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(OM.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!DM(e))throw new TypeError(EM.apply(void 0,[e].concat(G(OM))));if("secret"===e.type)throw new TypeError("".concat(OM.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(OM.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(OM.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(OM.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(OM.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function cQ(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(G(Object.entries(n)),G(t.entries()))):t;var a,o=C(r.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new HM('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){o.e(e)}finally{o.f()}return new Set(r.crit)}var aQ=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function oQ(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:t.namedCurve};case(TM()||BM())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new HM("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function lQ(e,t,n){if(CM(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!jM(e.algorithm,"HMAC"))throw zM("HMAC");var n=parseInt(t.slice(2),10);if(MM(e.algorithm.hash)!==n)throw zM("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!jM(e.algorithm,"RSASSA-PKCS1-v1_5"))throw zM("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(MM(e.algorithm.hash)!==r)throw zM("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!jM(e.algorithm,"RSA-PSS"))throw zM("RSA-PSS");var i=parseInt(t.slice(2),10);if(MM(e.algorithm.hash)!==i)throw zM("SHA-".concat(i),"algorithm.hash");break;case BM()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw zM("NODE-ED25519 or NODE-ED448");break;case TM()&&"EdDSA":if(!jM(e.algorithm,"NODE-ED25519"))throw zM("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!jM(e.algorithm,"ECDSA"))throw zM("ECDSA");var c=QM(t);if(e.algorithm.namedCurve!==c)throw zM(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];PM(e,o)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(EM.apply(void 0,[t].concat(G(OM))));return WM.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(EM.apply(void 0,[t].concat(G(OM),["Uint8Array"])))}var uQ=function(){var e=o(regeneratorRuntime.mark((function e(t,n,r,i){var c,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,lQ(t,n,"verify");case 2:return c=e.sent,$M(t,c),a=oQ(t,c.algorithm),e.prev=5,e.next=8,WM.subtle.verify(a,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function dQ(e,t,n){return sQ.apply(this,arguments)}function sQ(){return sQ=o(regeneratorRuntime.mark((function e(t,n,r){var c,a,o,l,u,d,s,m,Z,h,b,p,I;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(qM(t)){e.next=2;break}throw new xM("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new xM('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new xM("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new xM("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new xM("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||qM(t.header)){e.next=12;break}throw new xM("JWS Unprotected Header incorrect type");case 12:if(a={},!t.protected){e.next=22;break}o=YM(t.protected),e.prev=15,a=JSON.parse(RM.decode(o)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new xM("JWS Protected Header is invalid");case 22:if(_M(a,t.header)){e.next=24;break}throw new xM("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=i(i({},a),t.header),u=cQ(xM,new Map([["b64",!0]]),null==r?void 0:r.crit,a,l),d=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(d=a.b64)){e.next=31;break}throw new xM('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(s=l.alg)&&s){e.next=34;break}throw new xM('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&aQ("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new LM('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new xM("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new xM("JWS Payload must be a string or an Uint8Array instance");case 44:if(Z=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(a,t);case 48:n=e.sent,Z=!0;case 50:return iQ(s,n,"verify"),h=SM(vM.encode(null!==(c=t.protected)&&void 0!==c?c:""),vM.encode("."),"string"==typeof t.payload?vM.encode(t.payload):t.payload),b=YM(t.signature),e.next=55,uQ(s,n,b,h);case 55:if(e.sent){e.next=58;break}throw new FM;case 58:if(p=d?YM(t.payload):"string"==typeof t.payload?vM.encode(t.payload):t.payload,I={payload:p},void 0!==t.protected&&(I.protectedHeader=a),void 0!==t.header&&(I.unprotectedHeader=t.header),!Z){e.next=64;break}return e.abrupt("return",i(i({},I),{},{key:n}));case 64:return e.abrupt("return",I);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),sQ.apply(this,arguments)}function mQ(e,t,n){return ZQ.apply(this,arguments)}function ZQ(){return ZQ=o(regeneratorRuntime.mark((function e(t,n,r){var c,a,o,l,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=RM.decode(t)),"string"==typeof t){e.next=3;break}throw new xM("Compact JWS must be a string or Uint8Array");case 3:if(c=t.split("."),a=c[0],o=c[1],l=c[2],3===c.length){e.next=6;break}throw new xM("Invalid Compact JWS");case 6:return e.next=8,dQ({payload:o,protected:a,signature:l},n,r);case 8:if(u=e.sent,d={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",i(i({},d),{},{key:u.key}));case 12:return e.abrupt("return",d);case 13:case"end":return e.stop()}}),e)}))),ZQ.apply(this,arguments)}var hQ=function(e){return Math.floor(e.getTime()/1e3)},bQ=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,pQ=function(e){var t=bQ.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},IQ=function(e){return e.toLowerCase().replace(/^application\//,"")},gQ=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},yQ=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||IQ(e.typ)!==IQ(i)))throw new KM('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(RM.decode(t))}catch(e){}if(!qM(n))throw new UM("JWT Claims Set must be a top-level JSON object");var a=r.issuer;if(a&&!(Array.isArray(a)?a:[a]).includes(n.iss))throw new KM('unexpected "iss" claim value',"iss","check_failed");var o=r.subject;if(o&&n.sub!==o)throw new KM('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!gQ(n.aud,"string"==typeof u?[u]:u))throw new KM('unexpected "aud" claim value',"aud","check_failed");switch(c(r.clockTolerance)){case"string":l=pQ(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var d=r.currentDate,s=hQ(d||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new KM('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new KM('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new KM('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new KM('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new NM('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,Z="number"==typeof r.maxTokenAge?r.maxTokenAge:pQ(r.maxTokenAge);if(m-l>Z)throw new NM('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new KM('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function XQ(){return XQ=o(regeneratorRuntime.mark((function e(t,n,r){var c,a,o,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,mQ(t,n,r);case 2:if(a=e.sent,!(null===(c=a.protectedHeader.crit)||void 0===c?void 0:c.includes("b64"))||!1!==a.protectedHeader.b64){e.next=5;break}throw new UM("JWTs MUST NOT use unencoded payload");case 5:if(o=yQ(a.protectedHeader,a.payload,r),l={payload:o,protectedHeader:a.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",i(i({},l),{},{key:a.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),XQ.apply(this,arguments)}function fQ(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new HM('Unsupported "alg" value for a JSON Web Key Set')}}function GQ(e){return qM(e)}var VQ=function(){function e(t){if(l(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===c(e)&&Array.isArray(e.keys)&&e.keys.every(GQ)}(t))throw new kM("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return d(e,[{key:"getKey",value:(t=o(regeneratorRuntime.mark((function e(t,n){var r,c,a,o,l,u,d,s,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=i(i({},t),n.header),c=r.alg,a=r.kid,o=fQ(c),l=this._jwks.keys.filter((function(e){var t=o===e.kty;if(t&&"string"==typeof a&&(t=a===e.kid),t&&"string"==typeof e.alg&&(t=c===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===c&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(c){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),u=l[0],0!==(d=l.length)){e.next=8;break}throw new AM;case 8:if(1===d){e.next=10;break}throw new wM;case 10:if(void 0!==(s=this._cached.get(u)||this._cached.set(u,{}).get(u))[c]){e.next=18;break}return e.next=14,nQ(i(i({},u),{},{ext:!0}),c);case 14:if(!((m=e.sent)instanceof Uint8Array||"public"!==m.type)){e.next=17;break}throw new kM("JSON Web Key Set members must be public keys");case 17:s[c]=m;case 18:return e.abrupt("return",s[c]);case 19:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var WQ={exports:{}},CQ={exports:{}},vQ=n(sM);
|
|
450
450
|
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
451
|
-
!function(e,t){var n=XQ,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(yQ,yQ.exports);var GQ=yQ.exports.Buffer,fQ=e.crypto||e.msCrypto;fQ&&fQ.getRandomValues?gQ.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var n=GQ.allocUnsafe(e);if(e>0)if(e>65536)for(var r=0;r<e;r+=65536)fQ.getRandomValues(n.slice(r,r+65536));else fQ.getRandomValues(n);if("function"==typeof t)return wB.nextTick((function(){t(null,n)}));return n}:gQ.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var VQ=gQ.exports,WQ=function(){function e(){l(this,e)}return d(e,[{key:"base64URLEncode",value:function(e){return bM.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return bM.decode(e).toString()}},{key:"hashSha256",value:function(e){return Gj.from(IM((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return VQ(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,o){return function(e,t,n){return hQ.apply(this,arguments)}(e,(a={keys:[t]},IQ.prototype.getKey.bind(new IQ(a))),{algorithms:n,audience:r,clockTolerance:o,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var a}}]),e}(),CQ=function(e){switch(e){case GT.LocalStorage:return new ij;case GT.SessionStorage:return new oj;case GT.BrowserMemory:return new cj;default:return new oj}},vQ=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,V,W,v,R,S,Y,J,K,L,N,H,x,k,U,A,w,F,T;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=CQ(e.storage),i=new WQ,c=new ST(r,i),t.next=5,c.initialize(e);case 5:return o=new PT(c),a=c.getDataLayer(),t.next=9,OT((function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(n=e.storage)&&void 0!==n?n:GT.SessionStorage,(function(e){return a.setSessionDataParameter(hT,null!=e?e:"")}));case 9:if(l=t.sent,u=!1,d=rj.getInstance(),s=!0,h=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,c.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},t.t0=null==d?void 0:d.init,!t.t0){t.next=18;break}return t.next=18,d.init(!0,h);case 18:return b=function(e){(null==d?void 0:d.setHttpRequestStartCallback)&&d.setHttpRequestStartCallback(e)},p=function(e){(null==d?void 0:d.setHttpRequestSuccessCallback)&&d.setHttpRequestSuccessCallback(e)},I=function(e){(null==d?void 0:d.setHttpRequestFinishCallback)&&d.setHttpRequestFinishCallback(e),Z=e},g=function(e){m=e},y=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,a.getConfigData();case 3:return c=t.sent,o=0,t.t0=[],t.t1=f,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[c.baseUrl],l=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(o<l.length)){t.next=30;break}if(!(u=l[o])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:o++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",d.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o,a;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,J();case 4:o=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!s){n.next=14;break}if("function"!=typeof m){n.next=13;break}return n.next=13,m(Object.assign(Object.assign({},t),{code:"Access token is invalid"}));case 13:"function"==typeof Z&&Z();case 14:throw new yT("SPA-MAIN_THREAD_CLIENT-HR-SE01",null!==(i=null===n.t0||void 0===n.t0?void 0:n.t0.name)&&void 0!==i?i:"Refresh token request failed.",null!==(c=null===n.t0||void 0===n.t0?void 0:n.t0.message)&&void 0!==c?c:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!o){n.next=31;break}return n.prev=16,n.next=19,d.request(e);case 19:return a=n.sent,n.abrupt("return",Promise.resolve(a));case 23:if(n.prev=23,n.t1=n.catch(16),!s){n.next=30;break}if("function"!=typeof m){n.next=29;break}return n.next=29,m(n.t1);case 29:"function"==typeof Z&&Z();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!s){n.next=36;break}if("function"!=typeof m){n.next=35;break}return n.next=35,m(t);case 35:"function"==typeof Z&&Z();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:throw new yT("SPA-MAIN_THREAD_CLIENT-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 35:case"end":return t.stop()}}),t)})))},X=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,o,l,u,h,b,p,I,g,y,X;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=!0,t.next=3,a.getConfigData();case 3:l=t.sent,u=C(e),t.prev=5,u.s();case 7:if((h=u.n()).done){t.next=50;break}return b=h.value,p=!1,I=0,t.t0=[],t.t1=f,t.next=15,l;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[l.baseUrl],g=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(I<g.length)){t.next=45;break}if(!(y=g[I])||!(null===(i=b.url)||void 0===i?void 0:i.startsWith(y))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:I++,t.next=37;break;case 45:if(p){t.next=48;break}return o=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(X=[],!o){t.next=64;break}return e.forEach((function(e){X.push(d.request(e))})),t.abrupt("return",(null==d?void 0:d.all)&&d.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,c.refreshAccessToken();case 4:o=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!s){t.next=14;break}if("function"!=typeof m){t.next=13;break}return t.next=13,m(Object.assign(Object.assign({},e),{code:"Access token is invalid"}));case 13:"function"==typeof Z&&Z();case 14:throw new yT("SPA-MAIN_THREAD_CLIENT-HRA-SE01",null!==(r=null===t.t0||void 0===t.t0?void 0:t.t0.name)&&void 0!==r?r:"Refresh token request failed.",null!==(i=null===t.t0||void 0===t.t0?void 0:t.t0.message)&&void 0!==i?i:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!o){t.next=17;break}return t.abrupt("return",d.all&&d.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!s){t.next=5;break}if("function"!=typeof m){t.next=4;break}return t.next=4,m(e);case 4:"function"==typeof Z&&Z();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!s){t.next=22;break}if("function"!=typeof m){t.next=21;break}return t.next=21,m(e);case 21:"function"==typeof Z&&Z();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:throw new yT("SPA-MAIN_THREAD_CLIENT-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return t.stop()}}),t,null,[[5,52,55,58]])})))},G=function(){return d},V=function(){return(null==d?void 0:d.enableHandler)&&d.enableHandler(),s=!0,!0},W=function(){return(null==d?void 0:d.disableHandler)&&d.disableHandler(),s=!1,!0},v=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,a.getConfigData();case 5:o=e.sent,l.initialize(o.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=o.checkSessionInterval)&&void 0!==n?n:3,null!==(r=o.sessionRefreshInterval)&&void 0!==r?r:300,o.signInRedirectURL,(function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},R=function(e,t,n,r){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var u,d,s,m,Z,h,b,p,I,g;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,a.getConfigData();case 2:return m=i.sent,i.next=5,l.receivePromptNoneResponse((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.setSessionDataParameter(hT,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return i.next=10,c.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),m.enableOIDCSessionManagement&&v(),i.t0=Promise,i.next=17,c.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if((null==m?void 0:m.responseMode)===DF.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(u=new URL(window.location.href).searchParams.get(ZT))&&void 0!==u?u:"",h=null!==(d=new URL(window.location.href).searchParams.get(hT))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(IT))&&void 0!==s?s:"",ET.removeAuthorizationCode()),!Z||!b){i.next=22;break}return i.abrupt("return",L(Z,h,b));case 22:if(p=new URL(window.location.href).searchParams.get("error"),I=new URL(window.location.href).searchParams.get("error_description"),!p){i.next=30;break}throw(g=new URL(window.location.href)).searchParams.delete("error"),g.searchParams.delete("error_description"),history.pushState(null,document.title,g.toString()),new yT("SPA-MAIN_THREAD_CLIENT-SI-SE01",p,null!=I?I:"");case 30:return i.abrupt("return",c.getAuthorizationURL(e).then((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(m.storage!==GT.BrowserMemory||!m.enablePKCE){t.next=8;break}return n=XT.extractPKCEKeyFromStateParam(b),t.t0=ET,t.t1=n,t.next=6,c.getPKCECode(b);case 6:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 8:return location.href=e,t.next=11,ET.waitTillPageRedirect();case 11:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return t.stop()}}),t)})))})));case 31:case"end":return i.stop()}}),i)})))},S=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!u;case 5:if(!e.t0){e.next=11;break}return e.next=8,c.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=ET.getSignOutURL(),e.next=14,a.removeOIDCProviderMetaData();case 14:return e.next=16,a.removeTemporaryData();case 16:return e.next=18,a.removeSessionData();case 18:return o.clearRefreshTokenTimeout(),e.next=21,ET.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},Y=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,l,d,s,m,Z;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l=!0,d=!1,!(null==e?void 0:e.tokenEndpoint)){t.next=39;break}return l=!1,s=0,t.t0=[],t.t1=f,t.next=9,a.getConfigData();case 9:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=13;break}t.t3=void 0===n;case 13:if(!t.t3){t.next=17;break}t.t5=void 0,t.next=18;break;case 17:t.t5=n.resourceServerURLs;case 18:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=22;break}t.t2=void 0!==r;case 22:if(!t.t2){t.next=26;break}t.t7=r,t.next=27;break;case 26:t.t7=[];case 27:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[e.baseUrl],m=t.t0.concat.call(t.t0,t.t9,t.t10);case 31:if(!(s<m.length)){t.next=39;break}if(!(Z=m[s])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(Z))){t.next=36;break}return d=!0,t.abrupt("break",39);case 36:s++,t.next=31;break;case 39:if(e.shouldReplayAfterRefresh&&a.setTemporaryDataParameter("custom_grant_config",JSON.stringify(e)),!l&&!d){t.next=44;break}return t.abrupt("return",c.requestCustomGrant(e).then((function(t){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(u=!0),!e.returnsSession){n.next=6;break}return o.refreshAccessTokenAutomatically(),n.abrupt("return",c.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 44:return t.abrupt("return",Promise.reject(new yT("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return t.stop()}}),t)})))},J=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.refreshAccessToken();case 3:return e.next=5,T();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,Y(t);case 9:return o.refreshAccessTokenAutomatically(),e.abrupt("return",c.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))},K=function(){return c.revokeAccessToken().then((function(){return l.reset(),o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},L=function(e,t,n){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,l;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,a.getConfigData();case 2:if((i=r.sent).storage!==GT.BrowserMemory||!i.enablePKCE){r.next=7;break}return l=ET.getPKCE(XT.extractPKCEKeyFromStateParam(n)),r.next=7,c.setPKCECode(XT.extractPKCEKeyFromStateParam(n),l);case 7:return r.abrupt("return",c.requestAccessToken(e,t,n).then((function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=ET,e.next=3,c.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),i.enableOIDCSessionManagement&&v(),e.abrupt("return",c.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return r.stop()}}),r)})))},N=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,o,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getConfigData();case 2:if(n=e.sent,!ET.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return r=document.getElementById("rpIFrame"),i=null===(t=null==r?void 0:r.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),e.prev=9,e.next=12,c.getAuthorizationURL({prompt:"none",state:"sign-in-silently"});case 12:if(o=e.sent,(u=new URL(o)).searchParams.set("response_mode","query"),d=u.toString(),n.storage!==GT.BrowserMemory||!n.enablePKCE){e.next=24;break}return s=u.searchParams.get(IT),e.t0=ET,e.t1=XT.extractPKCEKeyFromStateParam(null!=s?s:""),e.next=22,c.getPKCECode(null!=s?s:"");case 22:e.t2=e.sent,e.t0.setPKCE.call(e.t0,e.t1,e.t2);case 24:i.src=d,e.next=30;break;case 27:return e.prev=27,e.t3=e.catch(9),e.abrupt("return",Promise.reject(e.t3));case 30:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(u=i.data)?void 0:u.type)&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),"check_session_signed_in"==(null==u?void 0:u.type)&&(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code)&&L(u.data.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return e.stop()}}),e,null,[[9,27]])})))},H=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},x=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},k=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getIDToken());case 1:case"end":return e.stop()}}),e)})))},U=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},A=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},w=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},F=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,c.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(l.reset(),v());case 8:case"end":return t.stop()}}),t)})))},T=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getTemporaryDataParameter("custom_grant_config");case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},t.abrupt("return",{disableHttpHandler:W,enableHttpHandler:V,getAccessToken:A,getBasicUserInfo:H,getDecodedIDToken:x,getHttpClient:G,getIDToken:k,getOIDCServiceEndpoints:U,httpRequest:y,httpRequestAll:X,isAuthenticated:w,refreshAccessToken:J,requestCustomGrant:Y,revokeAccessToken:K,setHttpRequestErrorCallback:g,setHttpRequestFinishCallback:I,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:p,signIn:R,signOut:S,trySignInSilently:N,updateConfig:F});case 44:case"end":return t.stop()}}),t)})))};function RQ(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),c=i.indexOf("\n",10)+1,o=i.substring(c)+(r?"//# sourceMappingURL="+r:""),a=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(a)}var SQ,YQ,JQ,KQ,LQ=(SQ="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLG8saSl7dHJ5e3ZhciBzPWVbb10oaSksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24oaSxhLG8scyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24oaSxhLG8scyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZpKGUucHJvdG90eXBlLHQpLHImJmkoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxvPVtdLGk9ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEoaT0obj1yLm5leHQoKSkuZG9uZSkmJihvLnB1c2gobi52YWx1ZSksIXR8fG8ubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gb30oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gaT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtpfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGkscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiBpKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBULEE9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFR8fChUPXt9KSk7dmFyIEQ9cygoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMiksbj10WzBdLGE9dFsxXSxvPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3Jbb109YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7Ty5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBQLEksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1yfXJldHVybiBzKGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JbdF09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihyPWUuc2VudCxuPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIG4uaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChyLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKHI9ZS5zZW50LG49ci5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiByLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxhPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQobikuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2lufSk7Y2FzZSAxMTphPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1hLnN0YXR1cyYmYS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoYS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixhLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGEuanNvbigpO2Nhc2UgMjk6cmV0dXJuIGk9dC5zZW50LHM9aS5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0scyk7Y2FzZSAzMzpyZXR1cm4gdT10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9dSx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG89dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksaT1PLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChvKSxzPW51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPW8uZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1vLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1vLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjppLHVzZXJuYW1lOnN9LE8uZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKG8pKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0ib3BlbmlkIixuLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89bi5zZW50LG4ubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIGk9bi5zZW50LG4uYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksYT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLGkuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKGkuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGEpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShyPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09cj9yOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtyLm5leHQ9NzticmVha31yZXR1cm4gci50MD1ELHIudDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksci5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IHIudDI9ci5zZW50LG5ldyByLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsci50MSxyLnQyKTtjYXNlIDc6cmV0dXJuIHIubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4obj1yLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksci5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD0xNTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4geChvLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDI6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGE9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDE4OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksbz1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7aWYobi5raWQ9PT1vLmtpZClyZXR1cm4gb319Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEQoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLG8pe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsbykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBEKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBEKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXIsdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBMKHIpLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBVKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiBzKGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbygpe3ZhciBpLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSxiLHcsayxfLHgsUyxFLFQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBpPW8uc2VudCxvLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1vLnNlbnQsaSYmMCE9PWkudHJpbSgpLmxlbmd0aCl7by5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiB1PW5ldyBVUkwoaSksKGM9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGMuc2V0KCJjbGllbnRfaWQiLHMuY2xpZW50SUQpLGY9Im9wZW5pZCIscy5zY29wZSYmcy5zY29wZS5sZW5ndGg+MCYmKHMuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxzLnNjb3BlLnB1c2goIm9wZW5pZCIpLGY9cy5zY29wZS5qb2luKCIgIikpLGMuc2V0KCJzY29wZSIsZiksYy5zZXQoInJlZGlyZWN0X3VyaSIscy5zaWduSW5SZWRpcmVjdFVSTCkscy5yZXNwb25zZU1vZGUmJmMuc2V0KCJyZXNwb25zZV9tb2RlIixzLnJlc3BvbnNlTW9kZSksby5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGw9by5zZW50LCFzLmVuYWJsZVBLQ0Upe28ubmV4dD0yMTticmVha31yZXR1cm4gaD1udWxsPT09KHI9dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRDb2RlVmVyaWZpZXIoKSxwPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVDaGFsbGVuZ2UoaCksby5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGwsaCx0KTtjYXNlIDE5OmMuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksYy5zZXQoImNvZGVfY2hhbGxlbmdlIixwKTtjYXNlIDIxOmlmKHMucHJvbXB0JiZjLnNldCgicHJvbXB0IixzLnByb21wdCksZD1lKWZvcih2PTAsZz1PYmplY3QuZW50cmllcyhkKTt2PGcubGVuZ3RoO3YrKyltPXkoZ1t2XSwyKSxiPW1bMF0sdz1tWzFdLCIiIT1iJiYiIiE9dyYmInN0YXRlIiE9PWImJihrPWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGMuc2V0KGssdy50b1N0cmluZygpKSk7Yy5zZXQoInN0YXRlIixPLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihsLGQ/bnVsbD09PShhPWQuc3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvU3RyaW5nKCk6IiIpKSxfPVIoYy5lbnRyaWVzKCkpO3RyeXtmb3IoXy5zKCk7ISh4PV8ubigpKS5kb25lOylTPXkoeC52YWx1ZSwyKSxFPVNbMF0sVD1TWzFdLHUuc2VhcmNoUGFyYW1zLmFwcGVuZChFLFQpfWNhdGNoKGUpe18uZShlKX1maW5hbGx5e18uZigpfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix1LnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLHUsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1hLnNlbnQudG9rZW5fZW5kcG9pbnQsYS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9YS5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe2EubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihhLnQwPXQsIWEudDApe2EubmV4dD0xMjticmVha31yZXR1cm4gYS5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxuKTtjYXNlIDEyOmlmKChzPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoaS5jbGllbnRJRCkpLGkuY2xpZW50U2VjcmV0JiZpLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnMucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChpLmNsaWVudFNlY3JldCkpLHU9ZSxzLnB1c2goImNvZGU9Ii5jb25jYXQodSkpLHMucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSxzLnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChpLnNpZ25JblJlZGlyZWN0VVJMKSksYS50MT1pLmVuYWJsZVBLQ0UsIWEudDEpe2EubmV4dD0yOTticmVha31yZXR1cm4gYS50Mj1zLGEudDM9ImNvZGVfdmVyaWZpZXI9IixhLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTy5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHIpLG4pO2Nhc2UgMjQ6cmV0dXJuIGEudDQ9YS5zZW50LGEudDU9YS50My5jb25jYXQuY2FsbChhLnQzLGEudDQpLGEudDIucHVzaC5jYWxsKGEudDIsYS50NSksYS5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI5OnJldHVybiBhLnByZXY9MjksYS5uZXh0PTMyLGZldGNoKG8se2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpjPWEuc2VudCxhLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyBhLnByZXY9MzUsYS50Nj1hLmNhdGNoKDI5KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9YS50Nj9hLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoYy5vayl7YS5uZXh0PTQ1O2JyZWFrfXJldHVybiBhLnQ3PUQsYS50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoYy5zdGF0dXNUZXh0KSxhLm5leHQ9NDMsYy5qc29uKCk7Y2FzZSA0Mzp0aHJvdyBhLnQ5PWEuc2VudCxuZXcgYS50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsYS50OCxhLnQ5KTtjYXNlIDQ1OnJldHVybiBhLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShjLG4pO2Nhc2UgNDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBuPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChhPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYociYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoYS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxuLmNsaWVudFNlY3JldCYmbi5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQobi5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKHIse2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODppPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYoaS5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoaS5zdGF0dXNUZXh0KSx0Lm5leHQ9MjksaS5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGksZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLHQudDA9YSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksYS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChyLHtib2R5OmEuam9pbigiJiIpLGNyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEQoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUQsdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyxpLHMsdSxjLGY9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9ci5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDpuLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHIubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9eShlLDIpLG49clswXSxhPXJbMV07cmV0dXJuIHgoZix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGEsdCk7Y2FzZSAyOnJldHVybiByPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobiwiPSIpLmNvbmNhdChyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYoaT1yLnNlbnQscz1PYmplY3QuYXNzaWduKHt9LE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxyLnQwPWUuYXR0YWNoVG9rZW4sIXIudDApe3IubmV4dD0yMzticmVha31yZXR1cm4gci50MT1PYmplY3Qsci50Mj1PYmplY3QuYXNzaWduKHt9LHMpLHIudDM9IkJlYXJlciAiLHIubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpyLnQ0PXIuc2VudC5hY2Nlc3NfdG9rZW4sci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Nj17QXV0aG9yaXphdGlvbjpyLnQ1fSxzPXIudDEuYXNzaWduLmNhbGwoci50MSxyLnQyLHIudDYpO2Nhc2UgMjM6cmV0dXJuIHU9e2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHMpLG1ldGhvZDoiUE9TVCJ9LHIucHJldj0yNCxyLm5leHQ9MjcsZmV0Y2gobyx1KTtjYXNlIDI3OmM9ci5zZW50LHIubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IHIucHJldj0zMCxyLnQ3PXIuY2F0Y2goMjQpLG5ldyBEKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9ci50Nz9yLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWMuc3RhdHVzJiZjLm9rKXtyLm5leHQ9NDA7YnJlYWt9cmV0dXJuIHIudDg9RCxyLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoYy5zdGF0dXNUZXh0LCIpIiksci5uZXh0PTM4LGMuanNvbigpO2Nhc2UgMzg6dGhyb3cgci50MTA9ci5zZW50LG5ldyByLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLHIudDksci50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD00NDticmVha31yLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGMsdCksci5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIHIudDEyPVByb21pc2Usci5uZXh0PTQ3LGMuanNvbigpO2Nhc2UgNDc6ci50MTM9ci5zZW50LHIudDExPXIudDEyLnJlc29sdmUuY2FsbChyLnQxMixyLnQxMyk7Y2FzZSA0OTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsbj10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09cj92b2lkIDA6ci5pZF90b2tlbiksYT17YWxsb3dlZFNjb3BlczpyLnNjb3BlLHNlc3Npb25TdGF0ZTpyLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1uW2VdJiYiIiE9PW5bZV0mJm51bGwhPT1uW2VdfHxkZWxldGUgbltlXX0pKSxhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSxuKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2NvbmZpZygpO2Nhc2UgMjppZihyPXQuc2VudCx0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5uZXh0PTcsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDc6dC50MD10LnNlbnQ7Y2FzZSA4OmlmKCF0LnQwKXt0Lm5leHQ9MTA7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDEwOmlmKCEobj1yLndlbGxLbm93bkVuZHBvaW50KSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiB0LnByZXY9MTIsdC5uZXh0PTE1LGZldGNoKG4pO2Nhc2UgMTU6aWYoMjAwPT09KGE9dC5zZW50KS5zdGF0dXMmJmEub2spe3QubmV4dD0xODticmVha310aHJvdyBuZXcgRXJyb3I7Y2FzZSAxODp0Lm5leHQ9MjM7YnJlYWs7Y2FzZSAyMDp0aHJvdyB0LnByZXY9MjAsdC50MT10LmNhdGNoKDEyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUhFMDEiLCJJbnZhbGlkIHdlbGwta25vd24gcmVzcG9uc2UiLCJUaGUgd2VsbCBrbm93biBlbmRwb2ludCByZXNwb25zZSBoYXMgYmVlbiBmYWlsZWQgd2l0aCBhbiBlcnJvci4iKTtjYXNlIDIzOnJldHVybiB0LnQyPXRoaXMuX2RhdGFMYXllcix0LnQzPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHQubmV4dD0yNyxhLmpzb24oKTtjYXNlIDI3OnJldHVybiB0LnQ0PXQuc2VudCx0Lm5leHQ9MzAsdC50My5yZXNvbHZlRW5kcG9pbnRzLmNhbGwodC50Myx0LnQ0KTtjYXNlIDMwOnJldHVybiB0LnQ1PXQuc2VudCx0Lm5leHQ9MzMsdC50Mi5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDIsdC50NSk7Y2FzZSAzMzpyZXR1cm4gdC5uZXh0PTM1LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAzNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMzY6aWYoIXIuYmFzZVVybCl7dC5uZXh0PTUyO2JyZWFrfXJldHVybiB0LnByZXY9MzcsdC50Nj10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTQxLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwoKTtjYXNlIDQxOnJldHVybiB0LnQ3PXQuc2VudCx0Lm5leHQ9NDQsdC50Ni5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDYsdC50Nyk7Y2FzZSA0NDp0Lm5leHQ9NDk7YnJlYWs7Y2FzZSA0Njp0aHJvdyB0LnByZXY9NDYsdC50OD10LmNhdGNoKDM3KSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDIiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDg/dC50ODoiUmVzb2x2aW5nIGVuZHBvaW50cyBieSBiYXNlIHVybCBmYWlsZWQuIik7Y2FzZSA0OTpyZXR1cm4gdC5uZXh0PTUxLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA1MTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNTI6cmV0dXJuIHQucHJldj01Mix0LnQ5PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NTYsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkoKTtjYXNlIDU2OnJldHVybiB0LnQxMD10LnNlbnQsdC5uZXh0PTU5LHQudDkuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQ5LHQudDEwKTtjYXNlIDU5OnQubmV4dD02NDticmVhaztjYXNlIDYxOnRocm93IHQucHJldj02MSx0LnQxMT10LmNhdGNoKDUyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDMiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDExP3QudDExOiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGV4cGxpY2l0bHkgZmFpbGVkLiIpO2Nhc2UgNjQ6cmV0dXJuIHQubmV4dD02Nix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgNjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDY3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTIsMjBdLFszNyw0Nl0sWzUyLDYxXV0pfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscixuLGEsbyxpLHMsdSxjO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZigpe3ZhciBsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZil7Zm9yKDs7KXN3aXRjaChmLnByZXY9Zi5uZXh0KXtjYXNlIDA6cmV0dXJuIGYubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBsPWYuc2VudCxmLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50Om51bGwhPT0oZT1sLmF1dGhvcml6YXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1lP2U6IiIsY2hlY2tTZXNzaW9uSWZyYW1lOm51bGwhPT0odD1sLmNoZWNrX3Nlc3Npb25faWZyYW1lKSYmdm9pZCAwIT09dD90OiIiLGVuZFNlc3Npb25FbmRwb2ludDpudWxsIT09KHI9bC5lbmRfc2Vzc2lvbl9lbmRwb2ludCkmJnZvaWQgMCE9PXI/cjoiIixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6bnVsbCE9PShuPWwuaW50cm9zcGVjdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PW4/bjoiIixpc3N1ZXI6bnVsbCE9PShhPWwuaXNzdWVyKSYmdm9pZCAwIT09YT9hOiIiLGp3a3NVcmk6bnVsbCE9PShvPWwuandrc191cmkpJiZ2b2lkIDAhPT1vP286IiIscmVnaXN0cmF0aW9uRW5kcG9pbnQ6bnVsbCE9PShpPWwucmVnaXN0cmF0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09aT9pOiIiLHJldm9jYXRpb25FbmRwb2ludDpudWxsIT09KHM9bC5yZXZvY2F0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cz9zOiIiLHRva2VuRW5kcG9pbnQ6bnVsbCE9PSh1PWwudG9rZW5fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdXNlcmluZm9FbmRwb2ludDpudWxsIT09KGM9bC51c2VyaW5mb19lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGYuc3RvcCgpfX0pLGYsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKGEudDE9dD1hLnNlbnQsYS50MD1udWxsPT09YS50MSxhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj12b2lkIDAsYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89YS50MixhLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihpPWEuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXthLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDEiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gYS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKGEudDQ9cj1hLnNlbnQsYS50Mz1udWxsPT09YS50NCxhLnQzKXthLm5leHQ9MjM7YnJlYWt9YS50Mz12b2lkIDA9PT1yO2Nhc2UgMjM6aWYoIWEudDMpe2EubmV4dD0yNzticmVha31hLnQ1PXZvaWQgMCxhLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzphLnQ1PXIuaWRfdG9rZW47Y2FzZSAyODppZigocz1hLnQ1KSYmMCE9PXMudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAyIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKHU9bnVsbCE9PShuPW51bGw9PWk/dm9pZCAwOmkuc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09bj9uOm51bGw9PWk/dm9pZCAwOmkuc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09dS50cmltKCkubGVuZ3RoKXthLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDMiLCJObyBzaWduLW91dCByZWRpcmVjdCBVUkwgZm91bmQuIiwiVGhlIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBjYW5ub3QgYmUgZm91bmQgb3IgdGhlIFVSTCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4gTm8gc2lnbi1pbiByZWRpcmVjdCBVUkwgaGFzIGJlZW4gZm91bmQgZWl0aGVyLiAiKTtjYXNlIDM0OnJldHVybiBhLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobywiP2lkX3Rva2VuX2hpbnQ9IikuY29uY2F0KHMsIiZwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9IikuY29uY2F0KHUsIiZzdGF0ZT1zaWduX291dF9zdWNjZXNzIikpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTChlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjppZihyLnQxPXQ9ci5zZW50LHIudDA9bnVsbD09PXIudDEsci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDA9PT10O2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9dm9pZCAwLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9dC5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUJvb2xlYW4sdC5uZXh0PTMsdGhpcy5nZXRBY2Nlc3NUb2tlbihlKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCgwLHQudDApKHQudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShlKSx0KTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSxlLHIpO2Nhc2UgMjpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCEwKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGkscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixvPWEmJkpTT04ucGFyc2UoYSksaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbyksdCkscz1KU09OLnN0cmluZ2lmeShpKSxuLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoYS50MT1uPWEuc2VudCxhLnQwPW51bGwhPT1hLnQxLCFhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj1uLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9bnVsbDtjYXNlIDExOnJldHVybiBvPWEudDIsaT1vJiZKU09OLnBhcnNlKG8pLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHUoe30sdCxyKSksYz1KU09OLnN0cmluZ2lmeShzKSxhLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLG8saSxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLG89YSYmSlNPTi5wYXJzZShhKSxkZWxldGUoaT1PYmplY3QuYXNzaWduKHt9LG8pKVt0XSxzPUpTT04uc3RyaW5naWZ5KGkpLG4ubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQsIi0iKS5jb25jYXQodCk6IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQpfX0se2tleToic2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLGo9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpTLnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sTj1mdW5jdGlvbigpewovKioKICAgICAgICAgKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSAuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0b3JlfSBzdG9yZSAtIFRoZSBzdG9yZSBvYmplY3QuCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGBgYAogICAgICAgICAqIGNvbnN0IF9zdG9yZTogU3RvcmUgPSBuZXcgRGF0YVN0b3JlKCk7CiAgICAgICAgICogY29uc3QgYXV0aCA9IG5ldyBBc2dhcmRlb0F1dGhDbGllbnQ8Q3VzdG9tQ2xpZW50Q29uZmlnPihfc3RvcmUpOwogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2NvbnN0cnVjdG9yCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovCmZ1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IE0oImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgSCh0aGlzLl9kYXRhTGF5ZXIscil9Ci8qKgogICAgICAgICAqCiAgICAgICAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFNESyB3aXRoIHRoZSBjb25maWcgZGF0YS4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7QXV0aENsaWVudENvbmZpZzxUPn0gY29uZmlnIC0gVGhlIGNvbmZpZyBvYmplY3QgdG8gaW5pdGlhbGl6ZSB3aXRoLgogICAgICAgICAqCiAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCiAgICAgICAgICogICAgIGJhc2VVcmw6ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAqIH0KICAgICAgICAgKgogICAgICAgICAqIGF3YWl0IGF1dGguaW5pdGlhbGl6ZShjb25maWcpOwogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2luaXRpYWxpemUKICAgICAgICAgKgogICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAqL3JldHVybiBzKGUsW3trZXk6ImluaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxqKSxlKSx7c2NvcGU6W10uY29uY2F0KGIobnVsbCE9PSh0PWouc2NvcGUpJiZ2b2lkIDAhPT10P3Q6W10pLGIobnVsbCE9PShuPW51bGw9PT0ocj1lLnNjb3BlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEobnVsbD09PSh0PW51bGw9PWo/dm9pZCAwOmouc2NvcGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluY2x1ZGVzKGUpKX0pKSkmJnZvaWQgMCE9PW4/bjpbXSkpfSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBEYXRhTGF5ZXJgIG9iamVjdCB0aGF0IGFsbG93cyB5b3UgdG8gYWNjZXNzIGF1dGhlbnRpY2F0aW9uIGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7RGF0YUxheWVyfSAtIFRoZSBgRGF0YUxheWVyYCBvYmplY3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGF0YSA9IGF1dGguZ2V0RGF0YUxheWVyKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGF0YUxheWVyCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXREYXRhTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMYXllcn0KLyoqCiAgICAgICAgICAgKiBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtHZXRBdXRoVVJMQ29uZmlnfSBjb25maWcgLSAoT3B0aW9uYWwpIEEgY29uZmlnIG9iamVjdCB0byBmb3JjZSBpbml0aWFsaXphdGlvbiBhbmQgcGFzcwogICAgICAgICAgICogY3VzdG9tIHBhdGggcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBmaWRwIHBhcmFtZXRlci4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGguZ2V0QXV0aG9yaXphdGlvblVSTCgpLnRoZW4oKHVybCk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh1cmwpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QXV0aG9yaXphdGlvblVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KG49T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBuLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChuLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgc2VuZHMgYSByZXF1ZXN0IHRvIG9idGFpbiB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZQogICAgICAgICAgICogdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yaXphdGlvbkNvZGUgLSBUaGUgYXV0aG9yaXphdGlvbiBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25TdGF0ZSAtIFRoZSBzZXNzaW9uIHN0YXRlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEFjY2Vzc1Rva2VuKGF1dGhDb2RlLCBzZXNzaW9uU3RhdGUpLnRoZW4oKHRva2VuKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHRva2VuKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgbz10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFhLnNlbnQpe2EubmV4dD02O2JyZWFrfWEudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKSxhLm5leHQ9NzticmVhaztjYXNlIDY6YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LHIsbil9KSk7Y2FzZSA3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIGF1dGhlbnRpY2F0aW9uIGRhdGEgYW5kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguc2lnbk91dCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NpZ25PdXQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgZG9lc24ndCBjbGVhciB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguZ2V0U2lnbk91dFVSTCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFNpZ25PdXRVUkwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIE9JREMgc2VydmljZSBlbmRwb2ludHMgdGhhdCBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBgLndlbGwta25vd25gIGVuZHBvaW50LgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8T0lEQ0VuZHBvaW50cz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCBhdXRoLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBwYXlsb2FkIG9mIHRoZSBJRCB0b2tlbiBhbmQgcmV0dXJucyBpdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RGVjb2RlZElEVG9rZW5QYXlsb2FkPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBkZWNvZGVkIElEIHRva2VuIHBheWxvYWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGVjb2RlZElkVG9rZW4gPSBhd2FpdCBhdXRoLmdldERlY29kZWRJRFRva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGVjb2RlZElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGlkVG9rZW4gPSBhd2FpdCBhdXRoLmdldElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRJRFRva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0SURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbiBvYnRhaW5lZCBmcm9tIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8QmFzaWNVc2VySW5mbz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCB1c2VySW5mbyA9IGF3YWl0IGF1dGguZ2V0QmFzaWNVc2VySW5mbygpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEJhc2ljVXNlckluZm8KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRCYXNpY1VzZXJJbmZvKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXR1cm5zIHRoZSByZXNwb25zZSBvZiB0aGUgcmV2b2tlLWFjY2Vzcy10b2tlbiByZXF1ZXN0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXZva2VBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmVmcmVzaGVzIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFjY2VzcwogICAgICAgICAgICogdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVmcmVzaEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKGUpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBhdXRoLmdldEFjY2Vzc1Rva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QWNjZXNzVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgY3VzdG9tLWdyYW50IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UKICAgICAgICAgICAqIGRlcGVuZGluZyBvbiB0aGUgY29uZmlnIHBhc3NlZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0N1c3RvbUdyYW50Q29uZmlnfSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgY29udGFpbmluZyB0aGUgY3VzdG9tIGdyYW50IGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2UgfCBGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkZXBlbmRpbmcKICAgICAgICAgICAqIG9uIHlvdXIgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICBhdHRhY2hUb2tlbjogZmFsc2UsCiAgICAgICAgICAgKiAgIGRhdGE6IHsKICAgICAgICAgICAqICAgICAgIGNsaWVudF9pZDogInt7Y2xpZW50SUR9fSIsCiAgICAgICAgICAgKiAgICAgICBncmFudF90eXBlOiAiYWNjb3VudF9zd2l0Y2giLAogICAgICAgICAgICogICAgICAgc2NvcGU6ICJ7e3Njb3BlfX0iLAogICAgICAgICAgICogICAgICAgdG9rZW46ICJ7e3Rva2VufX0iLAogICAgICAgICAgICogICB9LAogICAgICAgICAgICogICBpZDogImFjY291bnQtc3dpdGNoIiwKICAgICAgICAgICAqICAgcmV0dXJuUmVzcG9uc2U6IHRydWUsCiAgICAgICAgICAgKiAgIHJldHVybnNTZXNzaW9uOiB0cnVlLAogICAgICAgICAgICogICBzaWduSW5SZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEN1c3RvbUdyYW50KGNvbmZpZykudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEN1c3RvbUdyYW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSx0KX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRlZCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzQXV0aGVudGljYXRlZAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBQS0NFIGNvZGUgZ2VuZXJhdGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgcGtjZSA9IGF3YWl0IGdldFBLQ0VDb2RlKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0UEtDRUNvZGUKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZShlLHQpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBQS0NFIGNvZGUgdG8gdGhlIGRhdGEgc3RvcmUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBrY2UgLSBUaGUgUEtDRSBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIC0gVGhlIHN0YXRlIHBhcmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXdhaXQgYXV0aC5zZXRQS0NFQ29kZSgicGtjZV9jb2RlIikKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSx0LHIpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGlzIHN1Y2Nlc3NmdWwgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc1NpZ25PdXRTdWNjZXNzZnVsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOgovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yIHdoZW4gaW5zdGFudGlhdGluZyB0aGlzIGNsYXNzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7UGFydGlhbDxBdXRoQ2xpZW50Q29uZmlnPFQ+Pn0gY29uZmlnIC0gQSBjb25maWcgb2JqZWN0IHRvIHVwZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb25zIHdpdGguCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKICAgICAgICAgICAqICAgICBiYXNlVXJsOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKICAgICAgICAgICAqIH0KICAgICAgICAgICAqCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLnVwZGF0ZUNvbmZpZyhjb25maWcpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjdXBkYXRlQ29uZmlnCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovCmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0sW3trZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiYhbn0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSBzaWduLW91dCBoYXMgZmFpbGVkIG9yIG5vdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbk91dFJlZGlyZWN0VXJsIC0gVGhlIFVSTCB0byB3aGljaCB0aGUgdXNlciBoYXMgYmVlbiByZWRpcmVjdGVkIHRvIGFmdGVyIHNpZ25pbmctb3V0LgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhlIHNlcnZlciBhcHBlbmRzIHBhdGggcGFyYW1ldGVycyB0byB0aGUgYHNpZ25PdXRSZWRpcmVjdFVSTGAgYW5kIHRoZXNlIHBhdGggcGFyYW1ldGVycwogICAgICAgICAgICogIGFyZSByZXF1aXJlZCBmb3IgdGhpcyBtZXRob2QgdG8gZnVuY3Rpb24uKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiBzdWNjZXNzZnVsLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZGlkU2lnbk91dEZhaWwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmbn19XSksZX0oKSxxPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KFB8fChQPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShJfHwoST17fSkpO3ZhciBLPSJjdXN0b21fZ3JhbnRfY29uZmlnIixKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtvKHRoaXMsZSksdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQ9dCx0aGlzLl9kYXRhTGF5ZXI9dGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGF0YUxheWVyKCl9cmV0dXJuIHMoZSxbe2tleToicmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sYT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZighKHQ9ZS5zZW50KS5yZWZyZXNoX3Rva2VuKXtlLm5leHQ9OTticmVha31yZXR1cm4gcj1wYXJzZUludCh0LmV4cGlyZXNfaW4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gXyhhLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pLDFlMyoocjw9MTA/cjpyLTEwKSksZS5uZXh0PTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSxKU09OLnN0cmluZ2lmeShuKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclJlZnJlc2hUb2tlblRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSAyOmlmKCFlLnNlbnQpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLnQwPUpTT04sZS5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSA2OmUudDE9ZS5zZW50LHQ9ZS50MC5wYXJzZS5jYWxsKGUudDAsZS50MSksY2xlYXJUaW1lb3V0KHQpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiBzKGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpLEY9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiBXKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9ZnVuY3Rpb24geihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fXZhciBWPXtleHBvcnRzOnt9fSxZPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxuPTA7bjxyLmxlbmd0aDtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuYXBwbHkodCxyKX19LEc9WSxYPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gJChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBaKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIFEoZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PVguY2FsbChlKX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09cihlKX1mdW5jdGlvbiB0ZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PVguY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiByZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09WC5jYWxsKGUpfWZ1bmN0aW9uIG5lKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9PXIoZSkmJihlPVtlXSksJChlKSlmb3IodmFyIG49MCxhPWUubGVuZ3RoO248YTtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJnQuY2FsbChudWxsLGVbb10sbyxlKX12YXIgYWU9e2lzQXJyYXk6JCxpc0FycmF5QnVmZmVyOlEsaXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhWihlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFaKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09WC5jYWxsKGUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZRKGUuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OmVlLGlzUGxhaW5PYmplY3Q6dGUsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09WC5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09WC5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09WC5jYWxsKGUpfSxpc0Z1bmN0aW9uOnJlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBlZShlKSYmcmUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1YLmNhbGwoZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6bmUsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXt0ZSh0W25dKSYmdGUocik/dFtuXT1lKHRbbl0scik6dGUocik/dFtuXT1lKHt9LHIpOiQocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKW5lKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbmUodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0P0codCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sb2U9YWU7ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIHNlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKG9lLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107b2UuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihvZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sb2UuZm9yRWFjaChlLChmdW5jdGlvbihlKXtvZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6b2UuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaWUodCkrIj0iK2llKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgbz1lLmluZGV4T2YoIiMiKTstMSE9PW8mJihlPWUuc2xpY2UoMCxvKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sdWU9YWU7ZnVuY3Rpb24gY2UoKXt0aGlzLmhhbmRsZXJzPVtdfWNlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LGNlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sY2UucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7dWUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGZlPWNlLGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gaGUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBwZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGRlPWhlLHZlPXBlO2Z1bmN0aW9uIGdlKGUpe2lmKGRlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChkZT09PWhlfHwhZGUpJiZzZXRUaW1lb3V0KXJldHVybiBkZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGRlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBkZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gZGUuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgbGUuc2V0VGltZW91dCYmKGRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBsZS5jbGVhclRpbWVvdXQmJih2ZT1jbGVhclRpbWVvdXQpO3ZhciBtZSx5ZT1bXSxiZT0hMSx3ZT0tMTtmdW5jdGlvbiBrZSgpe2JlJiZtZSYmKGJlPSExLG1lLmxlbmd0aD95ZT1tZS5jb25jYXQoeWUpOndlPS0xLHllLmxlbmd0aCYmUmUoKSl9ZnVuY3Rpb24gUmUoKXtpZighYmUpe3ZhciBlPWdlKGtlKTtiZT0hMDtmb3IodmFyIHQ9eWUubGVuZ3RoO3Q7KXtmb3IobWU9eWUseWU9W107Kyt3ZTx0OyltZSYmbWVbd2VdLnJ1bigpO3dlPS0xLHQ9eWUubGVuZ3RofW1lPW51bGwsYmU9ITEsZnVuY3Rpb24oZSl7aWYodmU9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigodmU9PT1wZXx8IXZlKSYmY2xlYXJUaW1lb3V0KXJldHVybiB2ZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXt2ZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHZlLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gdmUuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBfZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fV9lLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiB4ZSgpe312YXIgU2U9eGUsRWU9eGUsVGU9eGUsQWU9eGUsQ2U9eGUsRGU9eGUsT2U9eGU7dmFyIFBlPWxlLnBlcmZvcm1hbmNlfHx7fSxJZT1QZS5ub3d8fFBlLm1vek5vd3x8UGUubXNOb3d8fFBlLm9Ob3d8fFBlLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIFVlPW5ldyBEYXRlO3ZhciBMZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTt5ZS5wdXNoKG5ldyBfZShlLHQpKSwxIT09eWUubGVuZ3RofHxiZXx8Z2UoUmUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOlNlLGFkZExpc3RlbmVyOkVlLG9uY2U6VGUsb2ZmOkFlLHJlbW92ZUxpc3RlbmVyOkNlLHJlbW92ZUFsbExpc3RlbmVyczpEZSxlbWl0Ok9lLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKkllLmNhbGwoUGUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLVVlKS8xZTN9fSxIZT1MZSxNZT1hZSxqZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sTmU9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LHFlPWplLEtlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIG89bmV3IEVycm9yKGUpO3JldHVybiBxZShvLHQscixuLGEpfSxKZT1LZSxCZT1hZSxGZT1CZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQscixuLGEsbyl7dmFyIGk9W107aS5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksQmUuaXNOdW1iZXIocikmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHIpLnRvR01UU3RyaW5nKCkpLEJlLmlzU3RyaW5nKG4pJiZpLnB1c2goInBhdGg9IituKSxCZS5pc1N0cmluZyhhKSYmaS5wdXNoKCJkb21haW49IithKSwhMD09PW8mJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319LFdlPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9LHplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9LFZlPWFlLFllPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sR2U9YWUsWGU9R2UuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBuKGUpe3ZhciBuPWU7cmV0dXJuIHQmJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksbj1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6Ii8iPT09ci5wYXRobmFtZS5jaGFyQXQoMCk/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIGU9bih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIHI9R2UuaXNTdHJpbmcodCk/bih0KTp0O3JldHVybiByLnByb3RvY29sPT09ZS5wcm90b2NvbCYmci5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiAkZShlKXt0aGlzLm1lc3NhZ2U9ZX0kZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sJGUucHJvdG90eXBlLl9fQ0FOQ0VMX189ITA7dmFyIFplPSRlLFFlPWFlLGV0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3QoSmUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0sdHQ9RmUscnQ9c2UsbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmIVdlKHQpP3plKGUsdCk6dH0sYXQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9e307cmV0dXJuIGU/KFZlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PVZlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPVZlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYoYVt0XSYmWWUuaW5kZXhPZih0KT49MClyZXR1cm47YVt0XT0ic2V0LWNvb2tpZSI9PT10PyhhW3RdP2FbdF06W10pLmNvbmNhdChbcl0pOmFbdF0/YVt0XSsiLCAiK3I6cn19KSksYSk6YX0sb3Q9WGUsaXQ9S2Usc3Q9TmUsdXQ9WmUsY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuLGE9ZS5kYXRhLG89ZS5oZWFkZXJzLGk9ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gcygpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKX1RZS5pc0Zvcm1EYXRhKGEpJiZkZWxldGUgb1siQ29udGVudC1UeXBlIl07dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGM9ZS5hdXRoLnVzZXJuYW1lfHwiIixmPWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7by5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYysiOiIrZil9dmFyIGw9bnQoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBoKCl7aWYodSl7dmFyIG49ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiB1P2F0KHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsYT17ZGF0YTppJiYidGV4dCIhPT1pJiYianNvbiIhPT1pP3UucmVzcG9uc2U6dS5yZXNwb25zZVRleHQsc3RhdHVzOnUuc3RhdHVzLHN0YXR1c1RleHQ6dS5zdGF0dXNUZXh0LGhlYWRlcnM6bixjb25maWc6ZSxyZXF1ZXN0OnV9O2V0KChmdW5jdGlvbihlKXt0KGUpLHMoKX0pLChmdW5jdGlvbihlKXtyKGUpLHMoKX0pLGEpLHU9bnVsbH19aWYodS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCkscnQobCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSx1LnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gdT91Lm9ubG9hZGVuZD1oOnUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSYmND09PXUucmVhZHlTdGF0ZSYmKDAhPT11LnN0YXR1c3x8dS5yZXNwb25zZVVSTCYmMD09PXUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LHUub25hYm9ydD1mdW5jdGlvbigpe3UmJihyKGl0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3IoaXQoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCx1KSksdT1udWxsfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixuPWUudHJhbnNpdGlvbmFsfHxzdDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihpdCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LFFlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8b3QobCkpJiZlLnhzcmZDb29raWVOYW1lP3R0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJlFlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxRZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyB1dCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGZ0PWFlLGx0PWZ1bmN0aW9uKGUsdCl7TWUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxodD1qZSxwdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGR0KGUsdCl7IWZ0LmlzVW5kZWZpbmVkKGUpJiZmdC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgdnQsZ3Q9e3RyYW5zaXRpb25hbDpOZSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09SGUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChIZSkpJiYodnQ9Y3QpLHZ0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiBsdCh0LCJBY2NlcHQiKSxsdCh0LCJDb250ZW50LVR5cGUiKSxmdC5pc0Zvcm1EYXRhKGUpfHxmdC5pc0FycmF5QnVmZmVyKGUpfHxmdC5pc0J1ZmZlcihlKXx8ZnQuaXNTdHJlYW0oZSl8fGZ0LmlzRmlsZShlKXx8ZnQuaXNCbG9iKGUpP2U6ZnQuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6ZnQuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGR0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpmdC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KGR0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYoZnQuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxmdC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8Z3QudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmZnQuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IGh0KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07ZnQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7Z3QuaGVhZGVyc1tlXT17fX0pKSxmdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2d0LmhlYWRlcnNbZV09ZnQubWVyZ2UocHQpfSkpO3ZhciBtdD1ndCx5dD1hZSxidD1tdCx3dD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sa3Q9YWUsUnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fGJ0O3JldHVybiB5dC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSxfdD13dCx4dD1tdCxTdD1aZTtmdW5jdGlvbiBFdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgU3QoImNhbmNlbGVkIil9dmFyIFR0PWFlLEF0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIFR0LmlzUGxhaW5PYmplY3QoZSkmJlR0LmlzUGxhaW5PYmplY3QodCk/VHQubWVyZ2UoZSx0KTpUdC5pc1BsYWluT2JqZWN0KHQpP1R0Lm1lcmdlKHt9LHQpOlR0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBvKGUpe2lmKCFUdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gaShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOm8sbWV0aG9kOm8sZGF0YTpvLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gVHQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtUdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LEN0PSIwLjI2LjEiLER0PUN0LE90PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtPdFtlXT1mdW5jdGlvbihuKXtyZXR1cm4gcihuKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgUHQ9e307T3QudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitEdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLG8pe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFQdFthXSYmKFB0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLG8pfX07dmFyIEl0PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9PXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxvPWEubGVuZ3RoO28tLSA+MDspe3ZhciBpPWFbb10scz10W2ldO2lmKHMpe3ZhciB1PWVbaV0sYz12b2lkIDA9PT11fHxzKHUsaSxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIraSsiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitpKX19LHZhbGlkYXRvcnM6T3R9LFV0PWFlLEx0PXNlLEh0PWZlLE10PWZ1bmN0aW9uKGUpe3JldHVybiBFdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9UnQuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9a3QubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxrdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fHh0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBFdChlKSx0LmRhdGE9UnQuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gX3QodCl8fChFdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPVJ0LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LGp0PUF0LE50PUl0LHF0PU50LnZhbGlkYXRvcnM7ZnVuY3Rpb24gS3QoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBIdCxyZXNwb25zZTpuZXcgSHR9fUt0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PWp0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmTnQuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIG8saT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtNdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQoaSksbz1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KW89by50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBvfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e289TXQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7aS5sZW5ndGg7KW89by50aGVuKGkuc2hpZnQoKSxpLnNoaWZ0KCkpO3JldHVybiBvfSxLdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPWp0KHRoaXMuZGVmYXVsdHMsZSksTHQoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sVXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoanQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxVdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChqdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgSnQ9S3QsQnQ9WmU7ZnVuY3Rpb24gRnQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEJ0KGUpLHQoci5yZWFzb24pKX0pKX1GdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxGdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxGdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LEZ0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IEZ0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgV3Q9RnQsenQ9YWUsVnQ9YWUsWXQ9WSxHdD1KdCxYdD1BdDt2YXIgJHQ9ZnVuY3Rpb24gZSh0KXt2YXIgcj1uZXcgR3QodCksbj1ZdChHdC5wcm90b3R5cGUucmVxdWVzdCxyKTtyZXR1cm4gVnQuZXh0ZW5kKG4sR3QucHJvdG90eXBlLHIpLFZ0LmV4dGVuZChuLHIpLG4uY3JlYXRlPWZ1bmN0aW9uKHIpe3JldHVybiBlKFh0KHQscikpfSxufShtdCk7JHQuQXhpb3M9R3QsJHQuQ2FuY2VsPVplLCR0LkNhbmNlbFRva2VuPVd0LCR0LmlzQ2FuY2VsPXd0LCR0LlZFUlNJT049Q3QsJHQuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sJHQuc3ByZWFkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sJHQuaXNBeGlvc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB6dC5pc09iamVjdChlKSYmITA9PT1lLmlzQXhpb3NFcnJvcn0sVi5leHBvcnRzPSR0LFYuZXhwb3J0cy5kZWZhdWx0PSR0O3ZhciBadCxRdD1WLmV4cG9ydHM7dmFyIGVyPVp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiBzKGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYocj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsbj1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5hcHBlbmQoZSxyW2VdKX0pKSxlLmRhdGE9biksWnQuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IFp0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBadC5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6WnQuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpadC5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO1p0LmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPVF0LmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IFp0KSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gXyhlLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9UXQuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9UXQuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtlci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxlcj1adD1mdW5jdGlvbihlLHQsbixhKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgscz1pPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpyKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKG89ZVt1XSkmJihzPShpPDM/byhzKTppPjM/byh0LG4scyk6byh0LG4pKXx8cyk7cmV0dXJuIGk+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixzKSxzfShbZnVuY3Rpb24oZSl7fV0sZXIpO3ZhciB0cj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiBzKGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixudWxsIT09KHI9bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PXI/cjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCkscnI9W10sbnI9W10sYXI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksb3I9ITE7ZnVuY3Rpb24gaXIoKXtvcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpcnJbdF09ZVt0XSxucltlLmNoYXJDb2RlQXQodCldPXQ7bnJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLG5yWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiBzcihlLHQscil7Zm9yKHZhciBuLGEsbz1bXSxpPXQ7aTxyO2krPTMpbj0oZVtpXTw8MTYpKyhlW2krMV08PDgpK2VbaSsyXSxvLnB1c2gocnJbKGE9bik+PjE4JjYzXStyclthPj4xMiY2M10rcnJbYT4+NiY2M10rcnJbNjMmYV0pO3JldHVybiBvLmpvaW4oIiIpfWZ1bmN0aW9uIHVyKGUpe3ZhciB0O29yfHxpcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLG89W10saT0xNjM4MyxzPTAsdT1yLW47czx1O3MrPWkpby5wdXNoKHNyKGUscyxzK2k+dT91OnMraSkpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9cnJbdD4+Ml0sYSs9cnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1yclt0Pj4xMF0sYSs9cnJbdD4+NCY2M10sYSs9cnJbdDw8MiY2M10sYSs9Ij0iKSxvLnB1c2goYSksby5qb2luKCIiKX1mdW5jdGlvbiBjcihlLHQscixuLGEpe3ZhciBvLGkscz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLG89cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7Zm9yKGk9byYoMTw8LWYpLTEsbz4+PS1mLGYrPW47Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PW8pbz0xLWM7ZWxzZXtpZihvPT09dSlyZXR1cm4gaT9OYU46MS8wKihwPy0xOjEpO2krPU1hdGgucG93KDIsbiksby09Y31yZXR1cm4ocD8tMToxKSppKk1hdGgucG93KDIsby1uKX1mdW5jdGlvbiBmcihlLHQscixuLGEsbyl7dmFyIGkscyx1LGM9OCpvLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6by0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxpPWYpOihpPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtaSkpPDEmJihpLS0sdSo9MiksKHQrPWkrbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihpKyssdS89MiksaStsPj1mPyhzPTAsaT1mKTppK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLGkrPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksaT0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKGk9aTw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmaSxwKz1kLGkvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIGxyPXt9LnRvU3RyaW5nLGhyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWxyLmNhbGwoZSl9O2dyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09bGUuVFlQRURfQVJSQVlfU1VQUE9SVHx8bGUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIgcHI9ZHIoKTtmdW5jdGlvbiBkcigpe3JldHVybiBnci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiB2cihlLHQpe2lmKGRyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPWdyLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBncih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBncihlLHQscil7aWYoIShnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgZ3IpKXJldHVybiBuZXcgZ3IoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gYnIodGhpcyxlKX1yZXR1cm4gbXIodGhpcyxlLHQscil9ZnVuY3Rpb24gbXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU6ZT13cihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFnci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8X3IodCxyKSxhPShlPXZyKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKFJyKHQpKXt2YXIgcj0wfGtyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPXZyKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj92cihlLDApOndyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJmhyKHQuZGF0YSkpcmV0dXJuIHdyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24geXIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBicihlLHQpe2lmKHlyKHQpLGU9dnIoZSx0PDA/MDowfGtyKHQpKSwhZ3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiB3cihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfGtyKHQubGVuZ3RoKTtlPXZyKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBrcihlKXtpZihlPj1kcigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitkcigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBScihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24gX3IoZSx0KXtpZihScihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gWHIoZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiAkcihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBYcihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiB4cihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTHIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBNcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ganIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVXIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gcXIodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gU3IoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBFcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9Z3IuZnJvbSh0LG4pKSxScih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlRyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOlRyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBUcihlLHQscixuLGEpe3ZhciBvLGk9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtpPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09aT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqaSl9aWYoYSl7dmFyIGY9LTE7Zm9yKG89cjtvPHM7bysrKWlmKGMoZSxvKT09PWModCwtMT09PWY/MDpvLWYpKXtpZigtMT09PWYmJihmPW8pLG8tZisxPT09dSlyZXR1cm4gZippfWVsc2UtMSE9PWYmJihvLT1vLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksbz1yO28+PTA7by0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLG8raCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gb31yZXR1cm4tMX1mdW5jdGlvbiBBcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIG89dC5sZW5ndGg7aWYobyUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+by8yJiYobj1vLzIpO2Zvcih2YXIgaT0wO2k8bjsrK2kpe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqaSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGk7ZVtyK2ldPXN9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IoZSx0LHIsbil7cmV0dXJuIFpyKFhyKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIERyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIE9yKGUsdCxyLG4pe3JldHVybiBEcihlLHQscixuKX1mdW5jdGlvbiBQcihlLHQscixuKXtyZXR1cm4gWnIoJHIodCksZSxyLG4pfWZ1bmN0aW9uIElyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsbz1bXSxpPTA7aTxlLmxlbmd0aCYmISgodC09Mik8MCk7KytpKW49KHI9ZS5jaGFyQ29kZUF0KGkpKT4+OCxhPXIlMjU2LG8ucHVzaChhKSxvLnB1c2gobik7cmV0dXJuIG99KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIFVyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD91cihlKTp1cihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIExyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIG8saSxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKG89ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZvKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzpvPWVbYSsxXSxpPWVbYSsyXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZpKSYmKHU9KDE1JmMpPDwxMnwoNjMmbyk8PDZ8NjMmaSk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6bz1lW2ErMV0saT1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmbyk8PDEyfCg2MyZpKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9SHIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPUhyKSk7cmV0dXJuIHJ9KG4pfWdyLnBvb2xTaXplPTgxOTIsZ3IuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPWdyLnByb3RvdHlwZSxlfSxnci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbXIobnVsbCxlLHQscil9LGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihnci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLGdyLl9fcHJvdG9fXz1VaW50OEFycmF5KSxnci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB5cih0KSx0PD0wP3ZyKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/dnIoZSx0KS5maWxsKHIsbik6dnIoZSx0KS5maWxsKHIpOnZyKGUsdCl9KG51bGwsZSx0LHIpfSxnci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gYnIobnVsbCxlKX0sZ3IuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBicihudWxsLGUpfSxnci5pc0J1ZmZlcj1Rcixnci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIVJyKGUpfHwhUnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxvPU1hdGgubWluKHIsbik7YTxvOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LGdyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGdyLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFocihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBnci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPWdyLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgbz1lW3JdO2lmKCFScihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7by5jb3B5KG4sYSksYSs9by5sZW5ndGh9cmV0dXJuIG59LGdyLmJ5dGVMZW5ndGg9X3IsZ3IucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxnci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKVNyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxnci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KVNyKHRoaXMsdCx0KzMpLFNyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpU3IodGhpcyx0LHQrNyksU3IodGhpcyx0KzEsdCs2KSxTcih0aGlzLHQrMix0KzUpLFNyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0xyKHRoaXMsMCxlKTp4ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGdyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1nci5jb21wYXJlKHRoaXMsZSl9LGdyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LGdyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBvPShhPj4+PTApLShuPj4+PTApLGk9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihvLGkpLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtvPXVbZl0saT1jW2ZdO2JyZWFrfXJldHVybiBvPGk/LTE6aTxvPzE6MH0sZ3IucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LGdyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIodGhpcyxlLHQsciwhMCl9LGdyLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKHRoaXMsZSx0LHIsITEpfSxnci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgbz0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIEFyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIENyKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBEcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBPcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIFByKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gSXIodGhpcyxlLHQscik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sZ3IucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEhyPTQwOTY7ZnVuY3Rpb24gTXIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBqcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gTnIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixvPXQ7bzxyOysrbylhKz1HcihlW29dKTtyZXR1cm4gYX1mdW5jdGlvbiBxcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBhfWZ1bmN0aW9uIEtyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBKcihlLHQscixuLGEsbyl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBCcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8bzsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gRnIoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8bzsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24gV3IoZSx0LHIsbixhLG8pe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB6cihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw0KSxmcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBWcihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw4KSxmcihlLHQscixuLDUyLDgpLHIrOH1nci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgZ3IoYSx2b2lkIDApO2Zvcih2YXIgbz0wO288YTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LGdyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxnci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LGdyLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGdyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxnci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxnci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsbz10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylvKz10aGlzW2UrLS1uXSphO3JldHVybiBvPj0oYSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sZ3IucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LGdyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sZ3IucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxnci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITAsMjMsNCl9LGdyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSwyMyw0KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMCw1Miw4KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSw1Miw4KX0sZ3IucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8SnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLG89MDtmb3IodGhpc1t0XT0yNTUmZTsrK288ciYmKGEqPTI1Nik7KXRoaXNbdCtvXT1lL2EmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fEpyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLG89MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKG8qPTI1Nik7KXRoaXNbdCthXT1lL28mMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDEsMjU1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpCcih0aGlzLGUsdCwhMCksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz0wLGk9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihpKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9pPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz1yLTEsaT0xLHM9MDtmb3IodGhpc1t0K29dPTI1NSZlOy0tbz49MCYmKGkqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QrbysxXSYmKHM9MSksdGhpc1t0K29dPShlL2k+PjApLXMmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMSwxMjcsLTEyOCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sZ3IucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkJyKHRoaXMsZSx0LCEwKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4genIodGhpcyxlLHQsITAscil9LGdyLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB6cih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMCxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9by0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihvPDFlM3x8IWdyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPG87KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK28pLHQpO3JldHVybiBvfSxnci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhZ3IuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobz10O288cjsrK28pdGhpc1tvXT1lO2Vsc2V7dmFyIGk9UnIoZSk/ZTpYcihuZXcgZ3IoZSxuKS50b1N0cmluZygpKSxzPWkubGVuZ3RoO2ZvcihvPTA7bzxyLXQ7KytvKXRoaXNbbyt0XT1pW28lc119cmV0dXJuIHRoaXN9O3ZhciBZcj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBHcihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gWHIoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLG89W10saT0wO2k8bjsrK2kpe2lmKChyPWUuY2hhckNvZGVBdChpKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoaSsxPT09bil7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztvLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBvfWZ1bmN0aW9uICRyKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxvLGk7b3J8fGlyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7bz0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLGk9bmV3IGFyKDMqcy80LW8pLG49bz4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPW5yW2UuY2hhckNvZGVBdCh0KV08PDE4fG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8bnJbZS5jaGFyQ29kZUF0KHQrMildPDw2fG5yW2UuY2hhckNvZGVBdCh0KzMpXSxpW3UrK109YT4+MTYmMjU1LGlbdSsrXT1hPj44JjI1NSxpW3UrK109MjU1JmE7cmV0dXJuIDI9PT1vPyhhPW5yW2UuY2hhckNvZGVBdCh0KV08PDJ8bnJbZS5jaGFyQ29kZUF0KHQrMSldPj40LGlbdSsrXT0yNTUmYSk6MT09PW8mJihhPW5yW2UuY2hhckNvZGVBdCh0KV08PDEwfG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxucltlLmNoYXJDb2RlQXQodCsyKV0+PjIsaVt1KytdPWE+PjgmMjU1LGlbdSsrXT0yNTUmYSksaX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShZciwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gWnIoZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHxlbihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZlbihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gZW4oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgdG49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOmdyLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLGdyLmFsbG9jKCtlKX0saXNCdWZmZXI6UXIsa01heExlbmd0aDpwcn0pLHJuPXtleHBvcnRzOnt9fSxubj17fSxhbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYW4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGFuLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixvPXQrYSxpPWdyLmFsbG9jKG8pO2ZvcihpLndyaXRlKGUpO2EtLTspaS53cml0ZSgiPSIsbisrKTtyZXR1cm4gaS50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvbj1hbjtmdW5jdGlvbiBzbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLGdyLmlzQnVmZmVyKGUpP2NuKGUudG9TdHJpbmcoImJhc2U2NCIpKTpjbihnci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiB1bihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksb24uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gY24oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBmbixsbj1zbjtsbi5lbmNvZGU9c24sbG4uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksZ3IuZnJvbSh1bihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGxuLnRvQmFzZTY0PXVuLGxuLmZyb21CYXNlNjQ9Y24sbG4udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20odW4oZSksImJhc2U2NCIpfSxubi5kZWZhdWx0PWxuLChmbj1ybikuZXhwb3J0cz1ubi5kZWZhdWx0LGZuLmV4cG9ydHMuZGVmYXVsdD1mbi5leHBvcnRzO3ZhciBobj1ybi5leHBvcnRzLHBuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxvKXtmb3IodmFyIGkscyx1LGMsZixsLGgscCxkLHYsZyxtLHk7bz49NjQ7KXtmb3IoaT1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspbT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAseT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPShtK2Vbdi03XXwwKSsoeStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspbT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAseT0oKGk+Pj4yfGk8PDMwKV4oaT4+PjEzfGk8PDE5KV4oaT4+PjIyfGk8PDEwKSkrKGkmc15pJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9YyttfDAsYz11LHU9cyxzPWksaT1tK3l8MDtyWzBdKz1pLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsby09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsbz10PDwzLGk9dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxpLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbaS04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW2ktN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltpLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltpLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltpLTRdPW8+Pj4yNCYyNTUsdGhpcy5idWZmZXJbaS0zXT1vPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2ktMl09bz4+PjgmMjU1LHRoaXMuYnVmZmVyW2ktMV09bz4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxpKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBvKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gaShlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9byxlLmRlZmF1bHQ9byxlLmhtYWM9aTt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBvPW5ldyBVaW50OEFycmF5KFsxXSksYz1pKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixvKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLG8uZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBvPW5ldyBhKGUpLGk9by5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KGkpLGM9bmV3IFVpbnQ4QXJyYXkoaSksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCppPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxvLnJlc2V0KCksby51cGRhdGUodCksby51cGRhdGUocyksby5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxpO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7by5yZXNldCgpLG8udXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPGk7ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPGkmJmwqaStwPG47cCsrKWZbbCppK3BdPXVbcF19Zm9yKGw9MDtsPGk7bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIG8uY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIG8gaW4gbilhW29dPW5bb107ZS5leHBvcnRzPWF9KCl9KHBuKTt2YXIgZG49Vyhwbi5leHBvcnRzKSx2bj1jcnlwdG8sZ249ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDcnlwdG9LZXl9LG1uPW5ldyBUZXh0RW5jb2Rlcix5bj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gYm4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksbz0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsbyksbys9ZS5sZW5ndGh9KSksYX12YXIgd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9eW4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LGtuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcix2KG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KGQoRXJyb3IpKSxSbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShrbiksX249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KGtuKSx4bj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KGtuKSxTbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oa24pLEVuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oa24pLFRuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oa24pLEFuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShrbiksQ249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShrbiksRG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oa24pLE9uPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShrbik7ZnVuY3Rpb24gUG4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBJbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09SGUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gVW4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBMbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIEhuKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIE1uKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gam4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgTm49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLG49YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShuPjE/bi0xOjApLG89MTtvPG47bysrKWFbby0xXT1hcmd1bWVudHNbb107aWYoYS5sZW5ndGg+Mil7dmFyIGk9YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChpLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09cihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gZ24oZSl9LEtuPVsiQ3J5cHRvS2V5Il0sSm49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBvLGk9UihhKTt0cnl7Zm9yKGkucygpOyEobz1pLm4oKSkuZG9uZTspe3ZhciBzPW8udmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uIEJuKGUpe2lmKCJvYmplY3QiIT09cih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIG49ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pOyluPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bn12YXIgRm49ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIFduKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgU24oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UoUG4oKXx8SW4oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBJbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgem49ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIpe3ZhciBuLGEsbyxpLHMsdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGk9V24ocikscz1pLmFsZ29yaXRobSx1PWkua2V5VXNhZ2VzLGM9W3MsbnVsbCE9PShhPXIuZXh0KSYmdm9pZCAwIT09YSYmYSxudWxsIT09KG89ci5rZXlfb3BzKSYmdm9pZCAwIT09bz9vOnVdLCJQQktERjIiIT09cy5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGY9dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoZixbInJhdyIsd24oci5rKV0uY29uY2F0KGMpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUobD10KHt9LHIpKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKG49dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobixbImp3ayIsbF0uY29uY2F0KGMpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFZuKGUsdCxyKXtyZXR1cm4gWW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFluKCl7cmV0dXJuKFluPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihufHwobj1yLmFsZyksInN0cmluZyI9PXR5cGVvZiBuJiZuKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPXIua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLmsmJnIuayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9YXx8KGE9ITAhPT1yLmV4dCksIWEpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsem4odCh0KHt9LHIpLHt9LHthbGc6bixleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHduKHIuaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09ci5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgU24oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHpuKHQodCh7fSxyKSx7fSx7YWxnOm59KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgR249ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFxbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoS24pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighcW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEtuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiBYbihlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBvO289dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIGkscz1SKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgdT1pLnZhbHVlO2lmKCFvLmhhcyh1KSl0aHJvdyBuZXcgU24oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoby5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgJG49ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIFpuKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKFBuKCl8fEluKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgU24oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gUW4oZSx0LHIpe2lmKGduKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBVbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBVbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBVbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihIbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgVW4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBVbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBVbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgSW4oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBQbigpJiYiRWREU0EiOmlmKCFMbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBVbigiRUNEU0EiKTt2YXIgbz1Nbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09byl0aHJvdyBVbihvLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShpPjI/aS0yOjApLHU9Mjt1PGk7dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07am4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEtuKSkpKTtyZXR1cm4gdm4uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihLbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIGVhPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LHIsbixhKXt2YXIgbyxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLFFuKHQsciwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxGbih0LG8pLGk9Wm4odCxvLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsdm4uc3VidGxlLnZlcmlmeShpLG8sbixhKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHRhKGUsdCxyKXtyZXR1cm4gcmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJhKCl7cmV0dXJuIHJhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBvLGkscyx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1yLnByb3RlY3RlZHx8dm9pZCAwIT09ci5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBFbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PXIucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIHIucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PXIucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRW4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09ci5oZWFkZXJ8fEJuKHIuaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYoaT17fSwhci5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha31zPXduKHIucHJvdGVjdGVkKSxlLnByZXY9MTUsaT1KU09OLnBhcnNlKHluLmRlY29kZShzKSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IEVuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihKbihpLHIuaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYodT10KHQoe30saSksci5oZWFkZXIpLGM9WG4oRW4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWE/dm9pZCAwOmEuY3JpdCxpLHUpLGY9ITAsIWMuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGY9aS5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEVuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihsPXUuYWxnKSYmbCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBFbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKGg9YSYmJG4oImFsZ29yaXRobXMiLGEuYWxnb3JpdGhtcykpfHxoLmhhcyhsKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyB4bignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWYpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWR8fHIucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYocD0hMSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsbihpLHIpO2Nhc2UgNDg6bj1lLnNlbnQscD0hMDtjYXNlIDUwOnJldHVybiBHbihsLG4sInZlcmlmeSIpLGQ9Ym4obW4uZW5jb2RlKG51bGwhPT0obz1yLnByb3RlY3RlZCkmJnZvaWQgMCE9PW8/bzoiIiksbW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/bW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkKSx2PXduKHIuc2lnbmF0dXJlKSxlLm5leHQ9NTUsZWEobCxuLHYsZCk7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgT247Y2FzZSA1ODppZihnPWY/d24oci5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD9tbi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQsbT17cGF5bG9hZDpnfSx2b2lkIDAhPT1yLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPWkpLHZvaWQgMCE9PXIuaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1yLmhlYWRlciksIXApe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6bn0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuYShlLHQscil7cmV0dXJuIGFhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhYSgpe3JldHVybihhYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdSxjLGY7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyIGluc3RhbmNlb2YgVWludDhBcnJheSYmKHI9eW4uZGVjb2RlKHIpKSwic3RyaW5nIj09dHlwZW9mIHIpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBFbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKG89ci5zcGxpdCgiLiIpLGk9b1swXSxzPW9bMV0sdT1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IEVuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCx0YSh7cGF5bG9hZDpzLHByb3RlY3RlZDppLHNpZ25hdHVyZTp1fSxuLGEpO2Nhc2UgODppZihjPWUuc2VudCxmPXtwYXlsb2FkOmMucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Yy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxmKSx7fSx7a2V5OmMua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGYpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgb2E9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0saWE9ODY0MDAsc2E9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksdWE9ZnVuY3Rpb24oZSl7dmFyIHQ9c2EuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqaWEpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LGNhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sZmE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0sbGE9ZnVuY3Rpb24oZSx0KXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxvPWEudHlwO2lmKG8mJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxjYShlLnR5cCkhPT1jYShvKSkpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7bj1KU09OLnBhcnNlKHluLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCFCbihuKSl0aHJvdyBuZXcgVG4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgaT1hLmlzc3VlcjtpZihpJiYhKEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmluY2x1ZGVzKG4uaXNzKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmbi5zdWIhPT1zKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhZmEobi5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gocihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9dWEoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1vYShmfHxuZXcgRGF0ZSk7aWYoKHZvaWQgMCE9PW4uaWF0fHxhLm1heFRva2VuQWdlKSYmIm51bWJlciIhPXR5cGVvZiBuLmlhdCl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwIT09bi5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5uYmYpdGhyb3cgbmV3IFJuKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKG4ubmJmPmwrdSl0aHJvdyBuZXcgUm4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1uLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiBuLmV4cCl0aHJvdyBuZXcgUm4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYobi5leHA8PWwtdSl0aHJvdyBuZXcgX24oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLW4uaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6dWEoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IF9uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBSbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiBufTtmdW5jdGlvbiBoYSgpe3JldHVybihoYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixuYShyLG4sYSk7Y2FzZSAyOmlmKGk9ZS5zZW50LCEobnVsbD09PShvPWkucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09aS5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVG4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHM9bGEoaS5wcm90ZWN0ZWRIZWFkZXIsaS5wYXlsb2FkLGEpLHU9e3BheWxvYWQ6cyxwcm90ZWN0ZWRIZWFkZXI6aS5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LHUpLHt9LHtrZXk6aS5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1KTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcGEoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIGRhKGUpe3JldHVybiBCbihlKX12YXIgdmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PXIoZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KGRhKX0odCkpdGhyb3cgbmV3IEFuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciBuO3RoaXMuX2p3a3M9KG49dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShuKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4pKSl9dmFyIG47cmV0dXJuIHMoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZToobj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsbyxpLHMsdSxjLGYsbCxoO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYT10KHQoe30sciksbi5oZWFkZXIpLG89YS5hbGcsaT1hLmtpZCxzPXBhKG8pLHU9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9cz09PWUua3R5O2lmKHQmJiJzdHJpbmciPT10eXBlb2YgaSYmKHQ9aT09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1vPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PW8mJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKG8pe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksYz11WzBdLDAhPT0oZj11Lmxlbmd0aCkpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBDbjtjYXNlIDg6aWYoMT09PWYpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRG47Y2FzZSAxMDppZih2b2lkIDAhPT0obD10aGlzLl9jYWNoZWQuZ2V0KGMpfHx0aGlzLl9jYWNoZWQuc2V0KGMse30pLmdldChjKSlbb10pe2UubmV4dD0xODticmVha31yZXR1cm4gZS5uZXh0PTE0LFZuKHQodCh7fSxjKSx7fSx7ZXh0OiEwfSksbyk7Y2FzZSAxNDppZighKChoPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09aC50eXBlKSl7ZS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBBbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE3Omxbb109aDtjYXNlIDE4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixsW29dKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBnYT17ZXhwb3J0czp7fX0sbWE9e2V4cG9ydHM6e319LHlhPXoodG4pOwovKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi8KIWZ1bmN0aW9uKGUsdCl7dmFyIHI9eWEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9byksby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLG8pLG8uZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxvLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0sby5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxvLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fShtYSxtYS5leHBvcnRzKTt2YXIgYmE9NjU1MzYsd2E9NDI5NDk2NzI5NTt2YXIga2E9bWEuZXhwb3J0cy5CdWZmZXIsUmE9Ri5jcnlwdG98fEYubXNDcnlwdG87UmEmJlJhLmdldFJhbmRvbVZhbHVlcz9nYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT53YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPWthLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmJhKWZvcih2YXIgbj0wO248ZTtuKz1iYSlSYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rYmEpKTtlbHNlIFJhLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gSGUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTpnYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgX2EseGE9Z2EuZXhwb3J0cyxTYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20oZG4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geGEoZSl9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSwocz17a2V5czpbdF19LHZhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgdmEocykpKSx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6YSxzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpO3ZhciBzfX1dKSxlfSgpLEVhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsVCxBLEMsTyxQLEksVSxMLEgsTTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyB0cixuPW5ldyBTYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihvPW5ldyBKKGEpLGk9YS5nZXREYXRhTGF5ZXIoKSxzPWVyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITEsYz0wLHIudDA9W10sci50MT1iLHIubmV4dD02LGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTEwO2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDEwOmlmKCFyLnQzKXtyLm5leHQ9MTQ7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTE1O2JyZWFrO2Nhc2UgMTQ6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE1OmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0xOTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAxOTppZighci50Mil7ci5uZXh0PTIzO2JyZWFrfXIudDc9YSxyLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpyLnQ3PVtdO2Nhc2UgMjQ6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZj1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAyODppZighKGM8Zi5sZW5ndGgpKXtyLm5leHQ9MzY7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aChsKSkpe3IubmV4dD0zMzticmVha31yZXR1cm4gdT0hMCxyLmFicnVwdCgiYnJlYWsiLDM2KTtjYXNlIDMzOmMrKyxyLm5leHQ9Mjg7YnJlYWs7Y2FzZSAzNjppZighdSl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtyLm5leHQ9MTI7YnJlYWt9cmV0dXJuIHIucHJldj0xLHIubmV4dD00LFMoKTtjYXNlIDQ6aT1yLnNlbnQsci5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyByLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUi1TRTAxIixudWxsIT09KGE9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWE/YToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obz1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bz9vOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxMDppZighaSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDEyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBEKCJTUEEtV09SS0VSX0NPUkUtSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLHUsYyxmLGwsaCxwLGQsdixnO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dT0hMCxjPVIodCksci5wcmV2PTIsYy5zKCk7Y2FzZSA0OmlmKChmPWMubigpKS5kb25lKXtyLm5leHQ9NDc7YnJlYWt9cmV0dXJuIGw9Zi52YWx1ZSxoPSExLHA9MCxyLnQwPVtdLHIudDE9YixyLm5leHQ9MTIsaS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTE2O2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDE2OmlmKCFyLnQzKXtyLm5leHQ9MjA7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTIxO2JyZWFrO2Nhc2UgMjA6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDIxOmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0yNTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAyNTppZighci50Mil7ci5uZXh0PTI5O2JyZWFrfXIudDc9YSxyLm5leHQ9MzA7YnJlYWs7Y2FzZSAyOTpyLnQ3PVtdO2Nhc2UgMzA6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZD1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAzNDppZighKHA8ZC5sZW5ndGgpKXtyLm5leHQ9NDI7YnJlYWt9aWYoISh2PWRbcF0pfHwhKG51bGw9PT0obz1sLnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aCh2KSkpe3IubmV4dD0zOTticmVha31yZXR1cm4gaD0hMCxyLmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OnArKyxyLm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihoKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHU9ITEsci5hYnJ1cHQoImJyZWFrIiw0Nyk7Y2FzZSA0NTpyLm5leHQ9NDticmVhaztjYXNlIDQ3OnIubmV4dD01MjticmVhaztjYXNlIDQ5OnIucHJldj00OSxyLnQxMT1yLmNhdGNoKDIpLGMuZShyLnQxMSk7Y2FzZSA1MjpyZXR1cm4gci5wcmV2PTUyLGMuZigpLHIuZmluaXNoKDUyKTtjYXNlIDU1OmlmKGc9W10sIXUpe3IubmV4dD02MTticmVha31yZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtnLnB1c2gocy5yZXF1ZXN0KGUpKX0pKSxyLmFicnVwdCgicmV0dXJuIiwobnVsbD09cz92b2lkIDA6cy5hbGwpJiZzLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQucHJldj0xLHQubmV4dD00LFMoKTtjYXNlIDQ6bz10LnNlbnQsdC5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyB0LnByZXY9Nyx0LnQwPXQuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUkEtU0UwMSIsbnVsbCE9PShuPW51bGw9PT10LnQwfHx2b2lkIDA9PT10LnQwP3ZvaWQgMDp0LnQwLm5hbWUpJiZ2b2lkIDAhPT1uP246IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KGE9bnVsbD09PXQudDB8fHZvaWQgMD09PXQudDA/dm9pZCAwOnQudDAubWVzc2FnZSkmJnZvaWQgMCE9PWE/YToiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIW8pe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5hbGwmJnMuYWxsKGcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRCgiU1BBLVdPUktFUl9DT1JFLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNjI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1syLDQ5LDUyLDU1XV0pfSkpKX0sZD1mdW5jdGlvbigpe3MuZW5hYmxlSGFuZGxlciYmcy5lbmFibGVIYW5kbGVyKCl9LHY9ZnVuY3Rpb24oKXtzLmRpc2FibGVIYW5kbGVyJiZzLmRpc2FibGVIYW5kbGVyKCl9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPW5ldyBVUkwoZSksbz1udWxsIT09KHI9bi5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09cj9yOiIiLHQubmV4dD00LGEuZ2V0UEtDRUNvZGUobyk7Y2FzZSA0OnJldHVybiBpPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6aX0pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG09ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocyl7Zm9yKDs7KXN3aXRjaChzLnByZXY9cy5uZXh0KXtjYXNlIDA6cmV0dXJuIHMubmV4dD0yLGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjppZih1PXMuc2VudCwhcnx8IXUuZW5hYmxlUEtDRSl7cy5uZXh0PTY7YnJlYWt9cmV0dXJuIHMubmV4dD02LGEuc2V0UEtDRUNvZGUocixudWxsIT1uP246IiIpO2Nhc2UgNjppZighZSl7cy5uZXh0PTg7YnJlYWt9cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLGEucmVxdWVzdEFjY2Vzc1Rva2VuKGUsbnVsbCE9dD90OiIiLG51bGwhPW4/bjoiJyIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGEuZ2V0QmFzaWNVc2VySW5mbygpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgODpyZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxhLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixzLHUsYyxmLGwsaDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHU9ITAsYz0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD0zOTticmVha31yZXR1cm4gdT0hMSxmPTAsdC50MD1bXSx0LnQxPWIsdC5uZXh0PTksaS5nZXRDb25maWdEYXRhKCk7Y2FzZSA5OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTM7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTM6aWYoIXQudDMpe3QubmV4dD0xNzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMTg6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTIyO2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDIyOmlmKCF0LnQyKXt0Lm5leHQ9MjY7YnJlYWt9dC50Nz1uLHQubmV4dD0yNzticmVhaztjYXNlIDI2OnQudDc9W107Y2FzZSAyNzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bZS5iYXNlVXJsXSxsPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoZjxsLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZighKGg9bFtmXSl8fCEobnVsbD09PShzPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhcnRzV2l0aChoKSkpe3QubmV4dD0zNjticmVha31yZXR1cm4gYz0hMCx0LmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDM2OmYrKyx0Lm5leHQ9MzE7YnJlYWs7Y2FzZSAzOTppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmaS5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEssSlNPTi5zdHJpbmdpZnkoZSkpLCF1JiYhYyl7dC5uZXh0PTQ0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9MyxhLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsTSgpO2Nhc2UgNTppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUubmV4dD05LHgodCk7Y2FzZSA5OnJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTNdXSl9KSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIGEucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sVD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWNjZXNzVG9rZW4oKX0sST1mdW5jdGlvbigpe3JldHVybiBhLmlzQXV0aGVudGljYXRlZCgpfSxVPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsaS5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxMPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsYS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxIPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixpLmdldENvbmZpZ0RhdGEoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixpLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoSyk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHQuYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6dixlbmFibGVIdHRwSGFuZGxlcjpkLGdldEFjY2Vzc1Rva2VuOlAsZ2V0QXV0aG9yaXphdGlvblVSTDpnLGdldEJhc2ljVXNlckluZm86VCxnZXRDb25maWdEYXRhOkgsZ2V0RGVjb2RlZElEVG9rZW46QSxnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6TyxnZXRTaWduT3V0VVJMOmssaHR0cFJlcXVlc3Q6aCxodHRwUmVxdWVzdEFsbDpwLGlzQXV0aGVudGljYXRlZDpJLHJlZnJlc2hBY2Nlc3NUb2tlbjpTLHJlcXVlc3RBY2Nlc3NUb2tlbjp5LHJlcXVlc3RDdXN0b21HcmFudDp4LHJldm9rZUFjY2Vzc1Rva2VuOkUsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpjLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmYsc2V0U2Vzc2lvblN0YXRlOlUsc2lnbk91dDp3LHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjptLHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sVGE9c2VsZjtUYS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLHI9ZS5wb3J0cztyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLGEsbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9clswXSx0LnR5cGU9PT1xfHxfYSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09cT83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsRWEodSk7Y2FzZSAxMTooX2E9ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKERhKSxfYS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soQWEpLF9hLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKENhKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODplLnByZXY9MTgsZS50MT1lLmNhdGNoKDcpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gX2EuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI0OnJldHVybiBfYS5yZXF1ZXN0QWNjZXNzVG9rZW4obnVsbD09PShuPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY29kZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zZXNzaW9uU3RhdGUsbnVsbD09PShvPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW8/dm9pZCAwOm8ucGtjZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMzA6cmV0dXJuIGUucHJldj0zMCxlLnQyPXMsZS50Mz1CLGUubmV4dD0zNSxfYS5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiBfYS5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gX2EucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0ODpyZXR1cm4gZS5wcmV2PTQ4LGUudDc9cyxlLnQ4PUIsZS5uZXh0PTUzLF9hLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9QixlLm5leHQ9NjcsX2EuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ZS50MTQ9ZS5zZW50LGUudDE1PWUudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxMyxlLnQxNCksZS50MTIucG9zdE1lc3NhZ2UuY2FsbChlLnQxMixlLnQxNSksZS5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ZS5wcmV2PTcyLGUudDE2PWUuY2F0Y2goNjIpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PUIsZS5uZXh0PTgxLF9hLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjEpKTtjYXNlIDg5OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA5MDpyZXR1cm4gZS5wcmV2PTkwLGUudDIyPXMsZS50MjM9QixlLm5leHQ9OTUsX2EuZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gX2EuZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIF9hLmRpc2FibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PUIsZS5uZXh0PTExNSxfYS5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDMxKSk7Y2FzZSAxMjM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEyNDpyZXR1cm4gZS5wcmV2PTEyNCxlLnQzMj1zLGUudDMzPUIsZS5uZXh0PTEyOSxfYS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1CLGUubmV4dD0xNDMsX2EucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAxNDM6ZS50Mzk9ZS5zZW50LGUudDQwPWUudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzOCxlLnQzOSksZS50MzcucG9zdE1lc3NhZ2UuY2FsbChlLnQzNyxlLnQ0MCksZS5uZXh0PTE1MTticmVhaztjYXNlIDE0ODplLnByZXY9MTQ4LGUudDQxPWUuY2F0Y2goMTM4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKF9hLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTQ6cmV0dXJuIGUucHJldj0xNTQsZS50NDI9cyxlLnQ0Mz1CLGUubmV4dD0xNTksX2Euc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1CLGUubmV4dD0xNzMsX2EudXBkYXRlQ29uZmlnKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNzM6ZS50NDk9ZS5zZW50LGUudDUwPWUudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0OCxlLnQ0OSksZS50NDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ0NyxlLnQ1MCksZS5uZXh0PTE4MTticmVhaztjYXNlIDE3ODplLnByZXY9MTc4LGUudDUxPWUuY2F0Y2goMTY4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1CLGUubmV4dD0xODcsX2EuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTYpKTtjYXNlIDE5NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTk2Om51bGw9PXN8fHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIEFhPWZ1bmN0aW9uKCl7VGEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LENhPWZ1bmN0aW9uKGUpe1RhLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxEYT1mdW5jdGlvbigpe1RhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",YQ=null,JQ=!1,function(e){return KQ=KQ||RQ(SQ,YQ,JQ),new Worker(KQ,e)}),NQ=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,a,l,u,d,s,m,Z,h,b,p,I,g,y,X,G,f,V,W,C,v,R,S,Y,J,K,L,N,H,x,k;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=null!==(n=null==e?void 0:e.requestTimeout)&&void 0!==n?n:6e4,c=!0,o=!1,t.next=5,OT((function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:"sign-out"},e.prev=1,e.next=4,u(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",ET.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),e.storage,(function(e){return p(e)}));case 5:return a=t.sent,l=new LQ,u=function(e){var t=new MessageChannel;return l.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new yT("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+i/1e3+" since dispatching the request"))}),i);return t.port1.onmessage=function(t){var i=t.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},d=function(e){return u({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(o=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},s=function(e){return u({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!c){t.next=5;break}if("function"!=typeof r.requestErrorCallback){t.next=4;break}return t.next=4,r.requestErrorCallback(e);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},m=function(e){return u({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!c){t.next=5;break}if("function"!=typeof r.requestErrorCallback){t.next=4;break}return t.next=4,r.requestErrorCallback(e);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},Z=function(){return u({type:"enable_http_handler"}).then((function(){return c=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},h=function(){return u({type:"disable_http_handler"}).then((function(){return c=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},b=function(){return r||(r={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),l.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==r?void 0:r.requestFinishCallback)&&(null==r||r.requestFinishCallback());break;case"request-start":(null==r?void 0:r.requestStartCallback)&&(null==r||r.requestStartCallback());break;case"request-success":(null==r?void 0:r.requestSuccessCallback)&&(null==r||r.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},u({data:e,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(e){return u({data:e,type:"set_session_state"})},I=function(){return u({type:"start_auto_refresh_token"})},g=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return i=e.sent,e.next=5,v();case 5:c=e.sent,a.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,X(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},y=function(){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,o,l,d,s,m,Z;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:if(r=e.sent,!ET.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,a.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById("rpIFrame"),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),o={data:{prompt:"none",state:"sign-in-silently"},type:"get_auth_url"},e.prev=10,e.next=13,u(o);case 13:l=e.sent,d=XT.extractPKCEKeyFromStateParam(null!==(n=new URL(l.authorizationURL).searchParams.get(IT))&&void 0!==n?n:""),l.pkce&&r.enablePKCE&&ET.setPKCE(d,l.pkce),s=l.authorizationURL,(m=new URL(s)).searchParams.set("response_mode","query"),Z=m.toString(),c.src=Z,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(d=i.data)?void 0:d.type)&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),"check_session_signed_in"==(null==d?void 0:d.type)&&(null===(o=null==d?void 0:d.data)||void 0===o?void 0:o.code)&&G(null===(a=null==d?void 0:d.data)||void 0===a?void 0:a.code,null===(l=null==d?void 0:d.data)||void 0===l?void 0:l.sessionState,null===(u=null==d?void 0:d.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},X=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:return n=t.sent,r={data:e,type:"get_auth_url"},t.abrupt("return",u(r).then((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=XT.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(IT))&&void 0!==r?r:""),ET.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},G=function(e,t,n){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,v();case 2:return i=r.sent,c=XT.extractPKCEKeyFromStateParam(n),o={data:{code:e,pkce:i.enablePKCE?ET.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&ET.removePKCE(c),r.abrupt("return",u(o).then((function(e){return u({type:"get_sign_out_url"}).then((function(t){return ET.setSignOutURL(t),i.enableOIDCSessionManagement&&g(),I(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},f=function(e,t,n,r){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,o,l,u,d,s,m,Z,h,b;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,v();case 2:return u=i.sent,i.next=5,a.receivePromptNoneResponse((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",p(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(d=new URL(window.location.href).searchParams.get("error"),s=new URL(window.location.href).searchParams.get("error_description"),!d){i.next=16;break}throw(m=new URL(window.location.href)).searchParams.delete("error"),m.searchParams.delete("error_description"),history.pushState(null,document.title,m.toString()),new yT("SPA-WEB_WORKER_CLIENT-SI-SE01",d,null!=s?s:"");case 16:return i.next=18,J();case 18:if(!i.sent){i.next=23;break}return i.next=21,I();case 21:return u.enableOIDCSessionManagement&&g(),i.abrupt("return",R());case 23:if((null==u?void 0:u.responseMode)===DF.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(c=new URL(window.location.href).searchParams.get(ZT))&&void 0!==c?c:"",h=null!==(o=new URL(window.location.href).searchParams.get(hT))&&void 0!==o?o:"",b=null!==(l=new URL(window.location.href).searchParams.get(IT))&&void 0!==l?l:"",ET.removeAuthorizationCode()),!Z||!b){i.next=26;break}return i.abrupt("return",G(Z,h,b));case 26:return i.abrupt("return",X(e).then((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,ET.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return i.stop()}}),i)})))},V=function(){return J().then((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||o){t.next=5;break}return n={type:"sign-out"},t.abrupt("return",u(n).then((function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,ET.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=ET.getSignOutURL(),t.next=8,ET.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},W=function(){return u({type:"revoke-access-token"}).then((function(e){return a.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},C=function(){return u({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},v=function(){return u({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return u({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return u({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return u({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return u({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return u({type:"refresh_access-token"})},L=function(e){e&&"function"==typeof e&&(r.requestSuccessCallback=e)},N=function(e){e&&"function"==typeof e&&(r.requestErrorCallback=e)},H=function(e){e&&"function"==typeof e&&(r.requestStartCallback=e)},x=function(e){e&&"function"==typeof e&&(r.requestFinishCallback=e)},k=function(e){return qF(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,u(c);case 8:i.enableOIDCSessionManagement&&r&&(a.reset(),g());case 9:case"end":return t.stop()}}),t)})))},t.abrupt("return",{disableHttpHandler:h,enableHttpHandler:Z,getBasicUserInfo:R,getDecodedIDToken:S,getIDToken:Y,getOIDCServiceEndpoints:C,httpRequest:s,httpRequestAll:m,initialize:b,isAuthenticated:J,refreshAccessToken:K,requestCustomGrant:d,revokeAccessToken:W,setHttpRequestErrorCallback:N,setHttpRequestFinishCallback:x,setHttpRequestStartCallback:H,setHttpRequestSuccessCallback:L,signIn:f,signOut:V,trySignInSilently:y,updateConfig:k});case 36:case"end":return t.stop()}}),t)})))},HQ={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:GT.SessionStorage},xQ=function(){function e(t){l(this,e),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=t}return d(e,[{key:"_isInitialized",value:function(){return qF(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return qF(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}
|
|
451
|
+
!function(e,t){var n=vQ,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(CQ,CQ.exports);var RQ=CQ.exports.Buffer,SQ=e.crypto||e.msCrypto;SQ&&SQ.getRandomValues?WQ.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var n=RQ.allocUnsafe(e);if(e>0)if(e>65536)for(var r=0;r<e;r+=65536)SQ.getRandomValues(n.slice(r,r+65536));else SQ.getRandomValues(n);if("function"==typeof t)return MB.nextTick((function(){t(null,n)}));return n}:WQ.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var YQ=WQ.exports,JQ=function(){function e(){l(this,e)}return d(e,[{key:"base64URLEncode",value:function(e){return fM.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return fM.decode(e).toString()}},{key:"hashSha256",value:function(e){return Rj.from(VM((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return YQ(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,a){return function(e,t,n){return XQ.apply(this,arguments)}(e,(o={keys:[t]},VQ.prototype.getKey.bind(new VQ(o))),{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),e}(),KQ=function(e){switch(e){case RT.LocalStorage:return new dj;case RT.SessionStorage:return new mj;case RT.BrowserMemory:return new sj;default:return new mj}},NQ=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,l,u,d,s,m,Z,h,b,p,I,g,y,X,f,V,W,v,R,S,Y,J,K,N,L,H,x,U,k,A,w,F,T;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=KQ(e.storage),i=new JQ,c=new HT(r,i),t.next=5,c.initialize(e);case 5:return a=new $T(c),o=c.getDataLayer(),t.next=9,tB((function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(n=e.storage)&&void 0!==n?n:RT.SessionStorage,(function(e){return o.setSessionDataParameter(XT,null!=e?e:"")}));case 9:if(l=t.sent,u=!1,d=uj.getInstance(),s=!0,h=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,c.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},t.t0=null==d?void 0:d.init,!t.t0){t.next=18;break}return t.next=18,d.init(!0,h);case 18:return b=function(e){(null==d?void 0:d.setHttpRequestStartCallback)&&d.setHttpRequestStartCallback(e)},p=function(e){(null==d?void 0:d.setHttpRequestSuccessCallback)&&d.setHttpRequestSuccessCallback(e)},I=function(e){(null==d?void 0:d.setHttpRequestFinishCallback)&&d.setHttpRequestFinishCallback(e),Z=e},g=function(e){m=e},y=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,o.getConfigData();case 3:return c=t.sent,a=0,t.t0=[],t.t1=G,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[c.baseUrl],l=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(a<l.length)){t.next=30;break}if(!(u=l[a])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:a++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",d.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,J();case 4:a=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!s){n.next=14;break}if("function"!=typeof m){n.next=13;break}return n.next=13,m(Object.assign(Object.assign({},t),{code:"Access token is invalid"}));case 13:"function"==typeof Z&&Z();case 14:throw new CT("SPA-MAIN_THREAD_CLIENT-HR-SE01",null!==(i=null===n.t0||void 0===n.t0?void 0:n.t0.name)&&void 0!==i?i:"Refresh token request failed.",null!==(c=null===n.t0||void 0===n.t0?void 0:n.t0.message)&&void 0!==c?c:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!a){n.next=31;break}return n.prev=16,n.next=19,d.request(e);case 19:return o=n.sent,n.abrupt("return",Promise.resolve(o));case 23:if(n.prev=23,n.t1=n.catch(16),!s){n.next=30;break}if("function"!=typeof m){n.next=29;break}return n.next=29,m(n.t1);case 29:"function"==typeof Z&&Z();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!s){n.next=36;break}if("function"!=typeof m){n.next=35;break}return n.next=35,m(t);case 35:"function"==typeof Z&&Z();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:throw new CT("SPA-MAIN_THREAD_CLIENT-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 35:case"end":return t.stop()}}),t)})))},X=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,a,l,u,h,b,p,I,g,y,X;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=!0,t.next=3,o.getConfigData();case 3:l=t.sent,u=C(e),t.prev=5,u.s();case 7:if((h=u.n()).done){t.next=50;break}return b=h.value,p=!1,I=0,t.t0=[],t.t1=G,t.next=15,l;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[l.baseUrl],g=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(I<g.length)){t.next=45;break}if(!(y=g[I])||!(null===(i=b.url)||void 0===i?void 0:i.startsWith(y))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:I++,t.next=37;break;case 45:if(p){t.next=48;break}return a=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(X=[],!a){t.next=64;break}return e.forEach((function(e){X.push(d.request(e))})),t.abrupt("return",(null==d?void 0:d.all)&&d.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,c.refreshAccessToken();case 4:a=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!s){t.next=14;break}if("function"!=typeof m){t.next=13;break}return t.next=13,m(Object.assign(Object.assign({},e),{code:"Access token is invalid"}));case 13:"function"==typeof Z&&Z();case 14:throw new CT("SPA-MAIN_THREAD_CLIENT-HRA-SE01",null!==(r=null===t.t0||void 0===t.t0?void 0:t.t0.name)&&void 0!==r?r:"Refresh token request failed.",null!==(i=null===t.t0||void 0===t.t0?void 0:t.t0.message)&&void 0!==i?i:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!a){t.next=17;break}return t.abrupt("return",d.all&&d.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!s){t.next=5;break}if("function"!=typeof m){t.next=4;break}return t.next=4,m(e);case 4:"function"==typeof Z&&Z();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!s){t.next=22;break}if("function"!=typeof m){t.next=21;break}return t.next=21,m(e);case 21:"function"==typeof Z&&Z();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:throw new CT("SPA-MAIN_THREAD_CLIENT-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return t.stop()}}),t,null,[[5,52,55,58]])})))},f=function(){return d},V=function(){return(null==d?void 0:d.enableHandler)&&d.enableHandler(),s=!0,!0},W=function(){return(null==d?void 0:d.disableHandler)&&d.disableHandler(),s=!1,!0},v=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,o.getConfigData();case 5:a=e.sent,l.initialize(a.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=a.checkSessionInterval)&&void 0!==n?n:3,null!==(r=a.sessionRefreshInterval)&&void 0!==r?r:300,a.signInRedirectURL,(function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",c.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},R=function(e,t,n,r){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var u,d,s,m,Z,h,b,p,I,g;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,o.getConfigData();case 2:return m=i.sent,i.next=5,l.receivePromptNoneResponse((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.setSessionDataParameter(XT,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return i.next=10,c.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),m.enableOIDCSessionManagement&&v(),i.t0=Promise,i.next=17,c.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if((null==m?void 0:m.responseMode)===nT.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(u=new URL(window.location.href).searchParams.get(yT))&&void 0!==u?u:"",h=null!==(d=new URL(window.location.href).searchParams.get(XT))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(VT))&&void 0!==s?s:"",eB.removeAuthorizationCode()),!Z||!b){i.next=22;break}return i.abrupt("return",N(Z,h,b));case 22:if(p=new URL(window.location.href).searchParams.get("error"),I=new URL(window.location.href).searchParams.get("error_description"),!p){i.next=30;break}throw(g=new URL(window.location.href)).searchParams.delete("error"),g.searchParams.delete("error_description"),history.pushState(null,document.title,g.toString()),new CT("SPA-MAIN_THREAD_CLIENT-SI-SE01",p,null!=I?I:"");case 30:return i.abrupt("return",c.getAuthorizationURL(e).then((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(m.storage!==RT.BrowserMemory||!m.enablePKCE){t.next=8;break}return n=vT.extractPKCEKeyFromStateParam(b),t.t0=eB,t.t1=n,t.next=6,c.getPKCECode(b);case 6:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 8:return location.href=e,t.next=11,eB.waitTillPageRedirect();case 11:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return t.stop()}}),t)})))})));case 31:case"end":return i.stop()}}),i)})))},S=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!u;case 5:if(!e.t0){e.next=11;break}return e.next=8,c.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=eB.getSignOutURL(),e.next=14,o.removeOIDCProviderMetaData();case 14:return e.next=16,o.removeTemporaryData();case 16:return e.next=18,o.removeSessionData();case 18:return a.clearRefreshTokenTimeout(),e.next=21,eB.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},Y=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,l,d,s,m,Z;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l=!0,d=!1,!(null==e?void 0:e.tokenEndpoint)){t.next=39;break}return l=!1,s=0,t.t0=[],t.t1=G,t.next=9,o.getConfigData();case 9:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=13;break}t.t3=void 0===n;case 13:if(!t.t3){t.next=17;break}t.t5=void 0,t.next=18;break;case 17:t.t5=n.resourceServerURLs;case 18:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=22;break}t.t2=void 0!==r;case 22:if(!t.t2){t.next=26;break}t.t7=r,t.next=27;break;case 26:t.t7=[];case 27:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[e.baseUrl],m=t.t0.concat.call(t.t0,t.t9,t.t10);case 31:if(!(s<m.length)){t.next=39;break}if(!(Z=m[s])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(Z))){t.next=36;break}return d=!0,t.abrupt("break",39);case 36:s++,t.next=31;break;case 39:if(e.shouldReplayAfterRefresh&&o.setTemporaryDataParameter("custom_grant_config",JSON.stringify(e)),!l&&!d){t.next=44;break}return t.abrupt("return",c.requestCustomGrant(e).then((function(t){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(u=!0),!e.returnsSession){n.next=6;break}return a.refreshAccessTokenAutomatically(),n.abrupt("return",c.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 44:return t.abrupt("return",Promise.reject(new CT("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return t.stop()}}),t)})))},J=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.refreshAccessToken();case 3:return e.next=5,T();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,Y(t);case 9:return a.refreshAccessTokenAutomatically(),e.abrupt("return",c.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,null,[[0,13]])})))},K=function(){return c.revokeAccessToken().then((function(){return l.reset(),a.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},N=function(e,t,n){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,l;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,o.getConfigData();case 2:if((i=r.sent).storage!==RT.BrowserMemory||!i.enablePKCE){r.next=7;break}return l=eB.getPKCE(vT.extractPKCEKeyFromStateParam(n)),r.next=7,c.setPKCECode(vT.extractPKCEKeyFromStateParam(n),l);case 7:return r.abrupt("return",c.requestAccessToken(e,t,n).then((function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=eB,e.next=3,c.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),a.clearRefreshTokenTimeout(),a.refreshAccessTokenAutomatically(),i.enableOIDCSessionManagement&&v(),e.abrupt("return",c.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return r.stop()}}),r)})))},L=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,a,u,d,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getConfigData();case 2:if(n=e.sent,!eB.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return r=document.getElementById("rpIFrame"),i=null===(t=null==r?void 0:r.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),e.prev=9,e.next=12,c.getAuthorizationURL({prompt:"none",state:"sign-in-silently"});case 12:if(a=e.sent,(u=new URL(a)).searchParams.set("response_mode","query"),d=u.toString(),n.storage!==RT.BrowserMemory||!n.enablePKCE){e.next=24;break}return s=u.searchParams.get(VT),e.t0=eB,e.t1=vT.extractPKCEKeyFromStateParam(null!=s?s:""),e.next=22,c.getPKCECode(null!=s?s:"");case 22:e.t2=e.sent,e.t0.setPKCE.call(e.t0,e.t1,e.t2);case 24:i.src=d,e.next=30;break;case 27:return e.prev=27,e.t3=e.catch(9),e.abrupt("return",Promise.reject(e.t3));case 30:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(u=i.data)?void 0:u.type)&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),"check_session_signed_in"==(null==u?void 0:u.type)&&(null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.code)&&N(u.data.code,null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return e.stop()}}),e,null,[[9,27]])})))},H=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},x=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},U=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getIDToken());case 1:case"end":return e.stop()}}),e)})))},k=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},A=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},w=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},F=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,c.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(l.reset(),v());case 8:case"end":return t.stop()}}),t)})))},T=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.getTemporaryDataParameter("custom_grant_config");case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},t.abrupt("return",{disableHttpHandler:W,enableHttpHandler:V,getAccessToken:A,getBasicUserInfo:H,getDecodedIDToken:x,getHttpClient:f,getIDToken:U,getOIDCServiceEndpoints:k,httpRequest:y,httpRequestAll:X,isAuthenticated:w,refreshAccessToken:J,requestCustomGrant:Y,revokeAccessToken:K,setHttpRequestErrorCallback:g,setHttpRequestFinishCallback:I,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:p,signIn:R,signOut:S,trySignInSilently:L,updateConfig:F});case 44:case"end":return t.stop()}}),t)})))};function LQ(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(e,void 0!==n&&n),c=i.indexOf("\n",10)+1,a=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var HQ,xQ,UQ,kQ,AQ=(HQ="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLG8saSl7dHJ5e3ZhciBzPWVbb10oaSksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24oaSxhLG8scyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24oaSxhLG8scyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZpKGUucHJvdG90eXBlLHQpLHImJmkoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxvPVtdLGk9ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEoaT0obj1yLm5leHQoKSkuZG9uZSkmJihvLnB1c2gobi52YWx1ZSksIXR8fG8ubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gb30oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gaT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtpfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGkscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxvKXtmdW5jdGlvbiBpKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBULEE9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFR8fChUPXt9KSk7dmFyIEQ9cygoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMiksbj10WzBdLGE9dFsxXSxvPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3Jbb109YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7Ty5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBQLEksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1yfXJldHVybiBzKGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JbdF09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihyPWUuc2VudCxuPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIG4uaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChyLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKHI9ZS5zZW50LG49ci5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiByLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxhPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQobikuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2lufSk7Y2FzZSAxMTphPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBEKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1hLnN0YXR1cyYmYS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoYS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixhLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGEuanNvbigpO2Nhc2UgMjk6cmV0dXJuIGk9dC5zZW50LHM9aS5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0scyk7Y2FzZSAzMzpyZXR1cm4gdT10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9dSx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG89dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksaT1PLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChvKSxzPW51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPW8uZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1vLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1vLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjppLHVzZXJuYW1lOnN9LE8uZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKG8pKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0ib3BlbmlkIixuLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89bi5zZW50LG4ubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIGk9bi5zZW50LG4uYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksYT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLGkuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKGkuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGEpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShyPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09cj9yOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtyLm5leHQ9NzticmVha31yZXR1cm4gci50MD1ELHIudDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksci5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IHIudDI9ci5zZW50LG5ldyByLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsci50MSxyLnQyKTtjYXNlIDc6cmV0dXJuIHIubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4obj1yLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksci5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD0xNTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4geChvLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDI6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGE9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDE4OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksbz1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBvPXIudmFsdWU7aWYobi5raWQ9PT1vLmtpZClyZXR1cm4gb319Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEQoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLG8pe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsbykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBEKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBEKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxIPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXIsdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBMKHIpLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBVKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiBzKGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbygpe3ZhciBpLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSxiLHcsayxfLHgsUyxFLFQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBpPW8uc2VudCxvLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1vLnNlbnQsaSYmMCE9PWkudHJpbSgpLmxlbmd0aCl7by5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiB1PW5ldyBVUkwoaSksKGM9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGMuc2V0KCJjbGllbnRfaWQiLHMuY2xpZW50SUQpLGY9Im9wZW5pZCIscy5zY29wZSYmcy5zY29wZS5sZW5ndGg+MCYmKHMuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxzLnNjb3BlLnB1c2goIm9wZW5pZCIpLGY9cy5zY29wZS5qb2luKCIgIikpLGMuc2V0KCJzY29wZSIsZiksYy5zZXQoInJlZGlyZWN0X3VyaSIscy5zaWduSW5SZWRpcmVjdFVSTCkscy5yZXNwb25zZU1vZGUmJmMuc2V0KCJyZXNwb25zZV9tb2RlIixzLnJlc3BvbnNlTW9kZSksby5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGw9by5zZW50LCFzLmVuYWJsZVBLQ0Upe28ubmV4dD0yMTticmVha31yZXR1cm4gaD1udWxsPT09KHI9dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRDb2RlVmVyaWZpZXIoKSxwPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVDaGFsbGVuZ2UoaCksby5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGwsaCx0KTtjYXNlIDE5OmMuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksYy5zZXQoImNvZGVfY2hhbGxlbmdlIixwKTtjYXNlIDIxOmlmKHMucHJvbXB0JiZjLnNldCgicHJvbXB0IixzLnByb21wdCksZD1lKWZvcih2PTAsZz1PYmplY3QuZW50cmllcyhkKTt2PGcubGVuZ3RoO3YrKyltPXkoZ1t2XSwyKSxiPW1bMF0sdz1tWzFdLCIiIT1iJiYiIiE9dyYmInN0YXRlIiE9PWImJihrPWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGMuc2V0KGssdy50b1N0cmluZygpKSk7Yy5zZXQoInN0YXRlIixPLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihsLGQ/bnVsbD09PShhPWQuc3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvU3RyaW5nKCk6IiIpKSxfPVIoYy5lbnRyaWVzKCkpO3RyeXtmb3IoXy5zKCk7ISh4PV8ubigpKS5kb25lOylTPXkoeC52YWx1ZSwyKSxFPVNbMF0sVD1TWzFdLHUuc2VhcmNoUGFyYW1zLmFwcGVuZChFLFQpfWNhdGNoKGUpe18uZShlKX1maW5hbGx5e18uZigpfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix1LnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLHUsYztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1hLnNlbnQudG9rZW5fZW5kcG9pbnQsYS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9YS5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe2EubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihhLnQwPXQsIWEudDApe2EubmV4dD0xMjticmVha31yZXR1cm4gYS5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxuKTtjYXNlIDEyOmlmKChzPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoaS5jbGllbnRJRCkpLGkuY2xpZW50U2VjcmV0JiZpLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnMucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChpLmNsaWVudFNlY3JldCkpLHU9ZSxzLnB1c2goImNvZGU9Ii5jb25jYXQodSkpLHMucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSxzLnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChpLnNpZ25JblJlZGlyZWN0VVJMKSksYS50MT1pLmVuYWJsZVBLQ0UsIWEudDEpe2EubmV4dD0yOTticmVha31yZXR1cm4gYS50Mj1zLGEudDM9ImNvZGVfdmVyaWZpZXI9IixhLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTy5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHIpLG4pO2Nhc2UgMjQ6cmV0dXJuIGEudDQ9YS5zZW50LGEudDU9YS50My5jb25jYXQuY2FsbChhLnQzLGEudDQpLGEudDIucHVzaC5jYWxsKGEudDIsYS50NSksYS5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI5OnJldHVybiBhLnByZXY9MjksYS5uZXh0PTMyLGZldGNoKG8se2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpjPWEuc2VudCxhLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyBhLnByZXY9MzUsYS50Nj1hLmNhdGNoKDI5KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9YS50Nj9hLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoYy5vayl7YS5uZXh0PTQ1O2JyZWFrfXJldHVybiBhLnQ3PUQsYS50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoYy5zdGF0dXNUZXh0KSxhLm5leHQ9NDMsYy5qc29uKCk7Y2FzZSA0Mzp0aHJvdyBhLnQ5PWEuc2VudCxuZXcgYS50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsYS50OCxhLnQ5KTtjYXNlIDQ1OnJldHVybiBhLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShjLG4pO2Nhc2UgNDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBuPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChhPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYociYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoYS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxuLmNsaWVudFNlY3JldCYmbi5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQobi5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKHIse2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODppPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYoaS5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUQsdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoaS5zdGF0dXNUZXh0KSx0Lm5leHQ9MjksaS5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGksZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLHQudDA9YSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksYS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChyLHtib2R5OmEuam9pbigiJiIpLGNyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEQoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUQsdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyxpLHMsdSxjLGY9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9ci5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDpuLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHIubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9eShlLDIpLG49clswXSxhPXJbMV07cmV0dXJuIHgoZix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGEsdCk7Y2FzZSAyOnJldHVybiByPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobiwiPSIpLmNvbmNhdChyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYoaT1yLnNlbnQscz1PYmplY3QuYXNzaWduKHt9LE8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxyLnQwPWUuYXR0YWNoVG9rZW4sIXIudDApe3IubmV4dD0yMzticmVha31yZXR1cm4gci50MT1PYmplY3Qsci50Mj1PYmplY3QuYXNzaWduKHt9LHMpLHIudDM9IkJlYXJlciAiLHIubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpyLnQ0PXIuc2VudC5hY2Nlc3NfdG9rZW4sci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Nj17QXV0aG9yaXphdGlvbjpyLnQ1fSxzPXIudDEuYXNzaWduLmNhbGwoci50MSxyLnQyLHIudDYpO2Nhc2UgMjM6cmV0dXJuIHU9e2JvZHk6aS5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHMpLG1ldGhvZDoiUE9TVCJ9LHIucHJldj0yNCxyLm5leHQ9MjcsZmV0Y2gobyx1KTtjYXNlIDI3OmM9ci5zZW50LHIubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IHIucHJldj0zMCxyLnQ3PXIuY2F0Y2goMjQpLG5ldyBEKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9ci50Nz9yLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWMuc3RhdHVzJiZjLm9rKXtyLm5leHQ9NDA7YnJlYWt9cmV0dXJuIHIudDg9RCxyLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoYy5zdGF0dXNUZXh0LCIpIiksci5uZXh0PTM4LGMuanNvbigpO2Nhc2UgMzg6dGhyb3cgci50MTA9ci5zZW50LG5ldyByLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLHIudDksci50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD00NDticmVha31yLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGMsdCksci5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIHIudDEyPVByb21pc2Usci5uZXh0PTQ3LGMuanNvbigpO2Nhc2UgNDc6ci50MTM9ci5zZW50LHIudDExPXIudDEyLnJlc29sdmUuY2FsbChyLnQxMixyLnQxMyk7Y2FzZSA0OTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsbj10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09cj92b2lkIDA6ci5pZF90b2tlbiksYT17YWxsb3dlZFNjb3BlczpyLnNjb3BlLHNlc3Npb25TdGF0ZTpyLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1uW2VdJiYiIiE9PW5bZV0mJm51bGwhPT1uW2VdfHxkZWxldGUgbltlXX0pKSxhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSxuKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2NvbmZpZygpO2Nhc2UgMjppZihyPXQuc2VudCx0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5uZXh0PTcsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDc6dC50MD10LnNlbnQ7Y2FzZSA4OmlmKCF0LnQwKXt0Lm5leHQ9MTA7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDEwOmlmKCEobj1yLndlbGxLbm93bkVuZHBvaW50KSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiB0LnByZXY9MTIsdC5uZXh0PTE1LGZldGNoKG4pO2Nhc2UgMTU6aWYoMjAwPT09KGE9dC5zZW50KS5zdGF0dXMmJmEub2spe3QubmV4dD0xODticmVha310aHJvdyBuZXcgRXJyb3I7Y2FzZSAxODp0Lm5leHQ9MjM7YnJlYWs7Y2FzZSAyMDp0aHJvdyB0LnByZXY9MjAsdC50MT10LmNhdGNoKDEyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUhFMDEiLCJJbnZhbGlkIHdlbGwta25vd24gcmVzcG9uc2UiLCJUaGUgd2VsbCBrbm93biBlbmRwb2ludCByZXNwb25zZSBoYXMgYmVlbiBmYWlsZWQgd2l0aCBhbiBlcnJvci4iKTtjYXNlIDIzOnJldHVybiB0LnQyPXRoaXMuX2RhdGFMYXllcix0LnQzPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHQubmV4dD0yNyxhLmpzb24oKTtjYXNlIDI3OnJldHVybiB0LnQ0PXQuc2VudCx0Lm5leHQ9MzAsdC50My5yZXNvbHZlRW5kcG9pbnRzLmNhbGwodC50Myx0LnQ0KTtjYXNlIDMwOnJldHVybiB0LnQ1PXQuc2VudCx0Lm5leHQ9MzMsdC50Mi5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDIsdC50NSk7Y2FzZSAzMzpyZXR1cm4gdC5uZXh0PTM1LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAzNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMzY6aWYoIXIuYmFzZVVybCl7dC5uZXh0PTUyO2JyZWFrfXJldHVybiB0LnByZXY9MzcsdC50Nj10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTQxLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwoKTtjYXNlIDQxOnJldHVybiB0LnQ3PXQuc2VudCx0Lm5leHQ9NDQsdC50Ni5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDYsdC50Nyk7Y2FzZSA0NDp0Lm5leHQ9NDk7YnJlYWs7Y2FzZSA0Njp0aHJvdyB0LnByZXY9NDYsdC50OD10LmNhdGNoKDM3KSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDIiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDg/dC50ODoiUmVzb2x2aW5nIGVuZHBvaW50cyBieSBiYXNlIHVybCBmYWlsZWQuIik7Y2FzZSA0OTpyZXR1cm4gdC5uZXh0PTUxLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA1MTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNTI6cmV0dXJuIHQucHJldj01Mix0LnQ5PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NTYsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkoKTtjYXNlIDU2OnJldHVybiB0LnQxMD10LnNlbnQsdC5uZXh0PTU5LHQudDkuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQ5LHQudDEwKTtjYXNlIDU5OnQubmV4dD02NDticmVhaztjYXNlIDYxOnRocm93IHQucHJldj02MSx0LnQxMT10LmNhdGNoKDUyKSxuZXcgRCgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDMiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDExP3QudDExOiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGV4cGxpY2l0bHkgZmFpbGVkLiIpO2Nhc2UgNjQ6cmV0dXJuIHQubmV4dD02Nix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgNjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDY3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTIsMjBdLFszNyw0Nl0sWzUyLDYxXV0pfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQscixuLGEsbyxpLHMsdSxjO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZigpe3ZhciBsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZil7Zm9yKDs7KXN3aXRjaChmLnByZXY9Zi5uZXh0KXtjYXNlIDA6cmV0dXJuIGYubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBsPWYuc2VudCxmLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50Om51bGwhPT0oZT1sLmF1dGhvcml6YXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1lP2U6IiIsY2hlY2tTZXNzaW9uSWZyYW1lOm51bGwhPT0odD1sLmNoZWNrX3Nlc3Npb25faWZyYW1lKSYmdm9pZCAwIT09dD90OiIiLGVuZFNlc3Npb25FbmRwb2ludDpudWxsIT09KHI9bC5lbmRfc2Vzc2lvbl9lbmRwb2ludCkmJnZvaWQgMCE9PXI/cjoiIixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6bnVsbCE9PShuPWwuaW50cm9zcGVjdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PW4/bjoiIixpc3N1ZXI6bnVsbCE9PShhPWwuaXNzdWVyKSYmdm9pZCAwIT09YT9hOiIiLGp3a3NVcmk6bnVsbCE9PShvPWwuandrc191cmkpJiZ2b2lkIDAhPT1vP286IiIscmVnaXN0cmF0aW9uRW5kcG9pbnQ6bnVsbCE9PShpPWwucmVnaXN0cmF0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09aT9pOiIiLHJldm9jYXRpb25FbmRwb2ludDpudWxsIT09KHM9bC5yZXZvY2F0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cz9zOiIiLHRva2VuRW5kcG9pbnQ6bnVsbCE9PSh1PWwudG9rZW5fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdXNlcmluZm9FbmRwb2ludDpudWxsIT09KGM9bC51c2VyaW5mb19lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGYuc3RvcCgpfX0pLGYsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKGEudDE9dD1hLnNlbnQsYS50MD1udWxsPT09YS50MSxhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj12b2lkIDAsYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89YS50MixhLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihpPWEuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXthLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDEiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gYS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKGEudDQ9cj1hLnNlbnQsYS50Mz1udWxsPT09YS50NCxhLnQzKXthLm5leHQ9MjM7YnJlYWt9YS50Mz12b2lkIDA9PT1yO2Nhc2UgMjM6aWYoIWEudDMpe2EubmV4dD0yNzticmVha31hLnQ1PXZvaWQgMCxhLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzphLnQ1PXIuaWRfdG9rZW47Y2FzZSAyODppZigocz1hLnQ1KSYmMCE9PXMudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAyIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKHU9bnVsbCE9PShuPW51bGw9PWk/dm9pZCAwOmkuc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09bj9uOm51bGw9PWk/dm9pZCAwOmkuc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09dS50cmltKCkubGVuZ3RoKXthLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDMiLCJObyBzaWduLW91dCByZWRpcmVjdCBVUkwgZm91bmQuIiwiVGhlIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBjYW5ub3QgYmUgZm91bmQgb3IgdGhlIFVSTCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4gTm8gc2lnbi1pbiByZWRpcmVjdCBVUkwgaGFzIGJlZW4gZm91bmQgZWl0aGVyLiAiKTtjYXNlIDM0OnJldHVybiBhLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobywiP2lkX3Rva2VuX2hpbnQ9IikuY29uY2F0KHMsIiZwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9IikuY29uY2F0KHUsIiZzdGF0ZT1zaWduX291dF9zdWNjZXNzIikpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTChlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjppZihyLnQxPXQ9ci5zZW50LHIudDA9bnVsbD09PXIudDEsci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDA9PT10O2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9dm9pZCAwLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9dC5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUJvb2xlYW4sdC5uZXh0PTMsdGhpcy5nZXRBY2Nlc3NUb2tlbihlKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCgwLHQudDApKHQudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShlKSx0KTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSxlLHIpO2Nhc2UgMjpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCEwKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGkscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixvPWEmJkpTT04ucGFyc2UoYSksaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbyksdCkscz1KU09OLnN0cmluZ2lmeShpKSxuLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG8saSxzLGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoYS50MT1uPWEuc2VudCxhLnQwPW51bGwhPT1hLnQxLCFhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj1uLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9bnVsbDtjYXNlIDExOnJldHVybiBvPWEudDIsaT1vJiZKU09OLnBhcnNlKG8pLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHUoe30sdCxyKSksYz1KU09OLnN0cmluZ2lmeShzKSxhLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLG8saSxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLG89YSYmSlNPTi5wYXJzZShhKSxkZWxldGUoaT1PYmplY3QuYXNzaWduKHt9LG8pKVt0XSxzPUpTT04uc3RyaW5naWZ5KGkpLG4ubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQsIi0iKS5jb25jYXQodCk6IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQpfX0se2tleToic2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLGo9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpTLnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sTj1mdW5jdGlvbigpewovKioKICAgICAgICAgKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSAuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0b3JlfSBzdG9yZSAtIFRoZSBzdG9yZSBvYmplY3QuCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGBgYAogICAgICAgICAqIGNvbnN0IF9zdG9yZTogU3RvcmUgPSBuZXcgRGF0YVN0b3JlKCk7CiAgICAgICAgICogY29uc3QgYXV0aCA9IG5ldyBBc2dhcmRlb0F1dGhDbGllbnQ8Q3VzdG9tQ2xpZW50Q29uZmlnPihfc3RvcmUpOwogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2NvbnN0cnVjdG9yCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovCmZ1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IE0oImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgSCh0aGlzLl9kYXRhTGF5ZXIsciksZS5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBIKHRoaXMuX2RhdGFMYXllcixyKX0KLyoqCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCBpbml0aWFsaXplcyB0aGUgU0RLIHdpdGggdGhlIGNvbmZpZyBkYXRhLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtBdXRoQ2xpZW50Q29uZmlnPFQ+fSBjb25maWcgLSBUaGUgY29uZmlnIG9iamVjdCB0byBpbml0aWFsaXplIHdpdGguCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCiAgICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKICAgICAgICAgKiAgICAgYmFzZVVybDogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICogfQogICAgICAgICAqCiAgICAgICAgICogYXdhaXQgYXV0aC5pbml0aWFsaXplKGNvbmZpZyk7CiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaW5pdGlhbGl6ZQogICAgICAgICAqCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovcmV0dXJuIHMoZSxbe2tleToiaW5pdGlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGopLGUpLHtzY29wZTpbXS5jb25jYXQoYihudWxsIT09KHQ9ai5zY29wZSkmJnZvaWQgMCE9PXQ/dDpbXSksYihudWxsIT09KG49bnVsbD09PShyPWUuc2NvcGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIShudWxsPT09KHQ9bnVsbD09aj92b2lkIDA6ai5zY29wZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZSkpfSkpKSYmdm9pZCAwIT09bj9uOltdKSl9KSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYERhdGFMYXllcmAgb2JqZWN0IHRoYXQgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYXV0aGVudGljYXRpb24gZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtEYXRhTGF5ZXJ9IC0gVGhlIGBEYXRhTGF5ZXJgIG9iamVjdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkYXRhID0gYXV0aC5nZXREYXRhTGF5ZXIoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREYXRhTGF5ZXIKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0dldEF1dGhVUkxDb25maWd9IGNvbmZpZyAtIChPcHRpb25hbCkgQSBjb25maWcgb2JqZWN0IHRvIGZvcmNlIGluaXRpYWxpemF0aW9uIGFuZCBwYXNzCiAgICAgICAgICAgKiBjdXN0b20gcGF0aCBwYXJhbWV0ZXJzIHN1Y2ggYXMgdGhlIGZpZHAgcGFyYW1ldGVyLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5nZXRBdXRob3JpemF0aW9uVVJMKCkudGhlbigodXJsKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHVybCk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBdXRob3JpemF0aW9uVVJMCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBudWxsPT0obj1PYmplY3QuYXNzaWduKHt9LGUpKXx8ZGVsZXRlIG4uZm9yY2VJbml0LHIubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OmlmKCFyLnNlbnQpe3IubmV4dD04O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwobix0KSxyLm5leHQ9OTticmVhaztjYXNlIDg6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEobnVsbD09ZT92b2lkIDA6ZS5mb3JjZUluaXQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGEuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCl9KSk7Y2FzZSA5OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCBzZW5kcyBhIHJlcXVlc3QgdG8gb2J0YWluIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlCiAgICAgICAgICAgKiB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JpemF0aW9uQ29kZSAtIFRoZSBhdXRob3JpemF0aW9uIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvblN0YXRlIC0gVGhlIHNlc3Npb24gc3RhdGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXF1ZXN0QWNjZXNzVG9rZW4oYXV0aENvZGUsIHNlc3Npb25TdGF0ZSkudGhlbigodG9rZW4pPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codG9rZW4pOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDI6aWYoIWEuc2VudCl7YS5uZXh0PTY7YnJlYWt9YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxyLG4pLGEubmV4dD03O2JyZWFrO2Nhc2UgNjphLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gby5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKX0pKTtjYXNlIDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEudDApO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYXV0aGVudGljYXRpb24gZGF0YSBhbmQgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5zaWduT3V0KCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjc2lnbk91dAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNpZ25PdXQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBkb2Vzbid0IGNsZWFyIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5nZXRTaWduT3V0VVJMKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0U2lnbk91dFVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFNpZ25PdXRVUkwoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cyB0aGF0IGFyZSBmZXRjaGVkIGZyb20gdGhlIGAud2VsbC1rbm93bmAgZW5kcG9pbnQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxPSURDRW5kcG9pbnRzPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBPSURDIHNlcnZpY2UgZW5kcG9pbnRzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGVuZHBvaW50cyA9IGF3YWl0IGF1dGguZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRPSURDU2VydmljZUVuZHBvaW50cwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGRlY29kZXMgdGhlIHBheWxvYWQgb2YgdGhlIElEIHRva2VuIGFuZCByZXR1cm5zIGl0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxEZWNvZGVkSURUb2tlblBheWxvYWQ+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlY29kZWQgSUQgdG9rZW4gcGF5bG9hZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkZWNvZGVkSWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0RGVjb2RlZElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREZWNvZGVkSURUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXREZWNvZGVkSURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgaWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0SURUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uIG9idGFpbmVkIGZyb20gdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxCYXNpY1VzZXJJbmZvPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgYXV0aC5nZXRCYXNpY1VzZXJJbmZvKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QmFzaWNVc2VySW5mbwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldm9rZXMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBtZXRob2QgYWxzbyBjbGVhcnMgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIG9mIHRoZSByZXZva2UtYWNjZXNzLXRva2VuIHJlcXVlc3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3Jldm9rZUFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbihlKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZWZyZXNoZXMgdGhlIGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYWNjZXNzCiAgICAgICAgICAgKiB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZWZyZXNoQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZWZyZXNoQWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGF1dGguZ2V0QWNjZXNzVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBjdXN0b20tZ3JhbnQgcmVxdWVzdCBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZQogICAgICAgICAgICogZGVwZW5kaW5nIG9uIHRoZSBjb25maWcgcGFzc2VkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7Q3VzdG9tR3JhbnRDb25maWd9IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCBjb250YWluaW5nIHRoZSBjdXN0b20gZ3JhbnQgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZSB8IEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRlcGVuZGluZwogICAgICAgICAgICogb24geW91ciBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgIGF0dGFjaFRva2VuOiBmYWxzZSwKICAgICAgICAgICAqICAgZGF0YTogewogICAgICAgICAgICogICAgICAgY2xpZW50X2lkOiAie3tjbGllbnRJRH19IiwKICAgICAgICAgICAqICAgICAgIGdyYW50X3R5cGU6ICJhY2NvdW50X3N3aXRjaCIsCiAgICAgICAgICAgKiAgICAgICBzY29wZTogInt7c2NvcGV9fSIsCiAgICAgICAgICAgKiAgICAgICB0b2tlbjogInt7dG9rZW59fSIsCiAgICAgICAgICAgKiAgIH0sCiAgICAgICAgICAgKiAgIGlkOiAiYWNjb3VudC1zd2l0Y2giLAogICAgICAgICAgICogICByZXR1cm5SZXNwb25zZTogdHJ1ZSwKICAgICAgICAgICAqICAgcmV0dXJuc1Nlc3Npb246IHRydWUsCiAgICAgICAgICAgKiAgIHNpZ25JblJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXV0aC5yZXF1ZXN0Q3VzdG9tR3JhbnQoY29uZmlnKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXF1ZXN0Q3VzdG9tR3JhbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlLHQpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF3YWl0IGF1dGguaXNBdXRoZW50aWNhdGVkKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNBdXRoZW50aWNhdGVkCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5pc0F1dGhlbnRpY2F0ZWQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIFBLQ0UgY29kZSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgdGhhdCB3YXMgcGFzc2VkIGluIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIFBLQ0UgY29kZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBwa2NlID0gYXdhaXQgZ2V0UEtDRUNvZGUoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFBLQ0VDb2RlKGUsdCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIFBLQ0UgY29kZSB0byB0aGUgZGF0YSBzdG9yZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGtjZSAtIFRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLnNldFBLQ0VDb2RlKCJwa2NlX2NvZGUiKQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NldFBLQ0VDb2RlCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlLHQscik7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaXMgc3VjY2Vzc2Z1bCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzU2lnbk91dFN1Y2Nlc3NmdWwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3Igd2hlbiBpbnN0YW50aWF0aW5nIHRoaXMgY2xhc3MuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtQYXJ0aWFsPEF1dGhDbGllbnRDb25maWc8VD4+fSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgdG8gdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlvbnMgd2l0aC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCiAgICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAgICogICAgIGJhc2VVcmw6ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF3YWl0IGF1dGgudXBkYXRlQ29uZmlnKGNvbmZpZyk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciN1cGRhdGVDb25maWcKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi8KZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGhhcyBmYWlsZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNkaWRTaWduT3V0RmFpbAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiZufX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxxPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KFB8fChQPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShJfHwoST17fSkpO3ZhciBLPSJjdXN0b21fZ3JhbnRfY29uZmlnIixKPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtvKHRoaXMsZSksdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQ9dCx0aGlzLl9kYXRhTGF5ZXI9dGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGF0YUxheWVyKCl9cmV0dXJuIHMoZSxbe2tleToicmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sYT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZighKHQ9ZS5zZW50KS5yZWZyZXNoX3Rva2VuKXtlLm5leHQ9OTticmVha31yZXR1cm4gcj1wYXJzZUludCh0LmV4cGlyZXNfaW4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gXyhhLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pLDFlMyoocjw9MTA/cjpyLTEwKSksZS5uZXh0PTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSxKU09OLnN0cmluZ2lmeShuKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclJlZnJlc2hUb2tlblRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSAyOmlmKCFlLnNlbnQpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLnQwPUpTT04sZS5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoQSk7Y2FzZSA2OmUudDE9ZS5zZW50LHQ9ZS50MC5wYXJzZS5jYWxsKGUudDAsZS50MSksY2xlYXJUaW1lb3V0KHQpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpLEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiBzKGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpLEY9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fTtmdW5jdGlvbiBXKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9ZnVuY3Rpb24geihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fXZhciBWPXtleHBvcnRzOnt9fSxZPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxuPTA7bjxyLmxlbmd0aDtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuYXBwbHkodCxyKX19LEc9WSxYPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gJChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBaKGUpe3JldHVybiB2b2lkIDA9PT1lfWZ1bmN0aW9uIFEoZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PVguY2FsbChlKX1mdW5jdGlvbiBlZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09cihlKX1mdW5jdGlvbiB0ZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PVguY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiByZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09WC5jYWxsKGUpfWZ1bmN0aW9uIG5lKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9PXIoZSkmJihlPVtlXSksJChlKSlmb3IodmFyIG49MCxhPWUubGVuZ3RoO248YTtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBvIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJnQuY2FsbChudWxsLGVbb10sbyxlKX12YXIgYWU9e2lzQXJyYXk6JCxpc0FycmF5QnVmZmVyOlEsaXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhWihlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFaKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09WC5jYWxsKGUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZRKGUuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OmVlLGlzUGxhaW5PYmplY3Q6dGUsaXNVbmRlZmluZWQ6Wixpc0RhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09WC5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09WC5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09WC5jYWxsKGUpfSxpc0Z1bmN0aW9uOnJlLGlzU3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiBlZShlKSYmcmUoZS5waXBlKX0saXNVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSI9PT1YLmNhbGwoZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6bmUsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXt0ZSh0W25dKSYmdGUocik/dFtuXT1lKHRbbl0scik6dGUocik/dFtuXT1lKHt9LHIpOiQocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKW5lKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbmUodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0P0codCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX0sb2U9YWU7ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIHNlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKG9lLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107b2UuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihvZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sb2UuZm9yRWFjaChlLChmdW5jdGlvbihlKXtvZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6b2UuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaWUodCkrIj0iK2llKGUpKX0pKSl9KSksbj1hLmpvaW4oIiYiKX1pZihuKXt2YXIgbz1lLmluZGV4T2YoIiMiKTstMSE9PW8mJihlPWUuc2xpY2UoMCxvKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX0sdWU9YWU7ZnVuY3Rpb24gY2UoKXt0aGlzLmhhbmRsZXJzPVtdfWNlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LGNlLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sY2UucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7dWUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIGZlPWNlLGxlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e307ZnVuY3Rpb24gaGUoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBwZSgpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGRlPWhlLHZlPXBlO2Z1bmN0aW9uIGdlKGUpe2lmKGRlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChkZT09PWhlfHwhZGUpJiZzZXRUaW1lb3V0KXJldHVybiBkZT1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGRlKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBkZS5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gZGUuY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgbGUuc2V0VGltZW91dCYmKGRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBsZS5jbGVhclRpbWVvdXQmJih2ZT1jbGVhclRpbWVvdXQpO3ZhciBtZSx5ZT1bXSxiZT0hMSx3ZT0tMTtmdW5jdGlvbiBrZSgpe2JlJiZtZSYmKGJlPSExLG1lLmxlbmd0aD95ZT1tZS5jb25jYXQoeWUpOndlPS0xLHllLmxlbmd0aCYmUmUoKSl9ZnVuY3Rpb24gUmUoKXtpZighYmUpe3ZhciBlPWdlKGtlKTtiZT0hMDtmb3IodmFyIHQ9eWUubGVuZ3RoO3Q7KXtmb3IobWU9eWUseWU9W107Kyt3ZTx0OyltZSYmbWVbd2VdLnJ1bigpO3dlPS0xLHQ9eWUubGVuZ3RofW1lPW51bGwsYmU9ITEsZnVuY3Rpb24oZSl7aWYodmU9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigodmU9PT1wZXx8IXZlKSYmY2xlYXJUaW1lb3V0KXJldHVybiB2ZT1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXt2ZShlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHZlLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gdmUuY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBfZShlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fV9lLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTtmdW5jdGlvbiB4ZSgpe312YXIgU2U9eGUsRWU9eGUsVGU9eGUsQWU9eGUsQ2U9eGUsRGU9eGUsT2U9eGU7dmFyIFBlPWxlLnBlcmZvcm1hbmNlfHx7fSxJZT1QZS5ub3d8fFBlLm1vek5vd3x8UGUubXNOb3d8fFBlLm9Ob3d8fFBlLndlYmtpdE5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX07dmFyIFVlPW5ldyBEYXRlO3ZhciBMZT17bmV4dFRpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTFdPWFyZ3VtZW50c1tyXTt5ZS5wdXNoKG5ldyBfZShlLHQpKSwxIT09eWUubGVuZ3RofHxiZXx8Z2UoUmUpfSx0aXRsZToiYnJvd3NlciIsYnJvd3NlcjohMCxlbnY6e30sYXJndjpbXSx2ZXJzaW9uOiIiLHZlcnNpb25zOnt9LG9uOlNlLGFkZExpc3RlbmVyOkVlLG9uY2U6VGUsb2ZmOkFlLHJlbW92ZUxpc3RlbmVyOkNlLHJlbW92ZUFsbExpc3RlbmVyczpEZSxlbWl0Ok9lLGJpbmRpbmc6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxjd2Q6ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGNoZGlyOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LHVtYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LGhydGltZTpmdW5jdGlvbihlKXt2YXIgdD0uMDAxKkllLmNhbGwoUGUpLHI9TWF0aC5mbG9vcih0KSxuPU1hdGguZmxvb3IodCUxKjFlOSk7cmV0dXJuIGUmJihyLT1lWzBdLChuLT1lWzFdKTwwJiYoci0tLG4rPTFlOSkpLFtyLG5dfSxwbGF0Zm9ybToiYnJvd3NlciIscmVsZWFzZTp7fSxjb25maWc6e30sdXB0aW1lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlLVVlKS8xZTN9fSxIZT1MZSxNZT1hZSxqZT1mdW5jdGlvbihlLHQscixuLGEpe3JldHVybiBlLmNvbmZpZz10LHImJihlLmNvZGU9ciksZS5yZXF1ZXN0PW4sZS5yZXNwb25zZT1hLGUuaXNBeGlvc0Vycm9yPSEwLGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21lc3NhZ2U6dGhpcy5tZXNzYWdlLG5hbWU6dGhpcy5uYW1lLGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb24sbnVtYmVyOnRoaXMubnVtYmVyLGZpbGVOYW1lOnRoaXMuZmlsZU5hbWUsbGluZU51bWJlcjp0aGlzLmxpbmVOdW1iZXIsY29sdW1uTnVtYmVyOnRoaXMuY29sdW1uTnVtYmVyLHN0YWNrOnRoaXMuc3RhY2ssY29uZmlnOnRoaXMuY29uZmlnLGNvZGU6dGhpcy5jb2RlLHN0YXR1czp0aGlzLnJlc3BvbnNlJiZ0aGlzLnJlc3BvbnNlLnN0YXR1cz90aGlzLnJlc3BvbnNlLnN0YXR1czpudWxsfX0sZX0sTmU9e3NpbGVudEpTT05QYXJzaW5nOiEwLGZvcmNlZEpTT05QYXJzaW5nOiEwLGNsYXJpZnlUaW1lb3V0RXJyb3I6ITF9LHFlPWplLEtlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7dmFyIG89bmV3IEVycm9yKGUpO3JldHVybiBxZShvLHQscixuLGEpfSxKZT1LZSxCZT1hZSxGZT1CZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP3t3cml0ZTpmdW5jdGlvbihlLHQscixuLGEsbyl7dmFyIGk9W107aS5wdXNoKGUrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0KSksQmUuaXNOdW1iZXIocikmJmkucHVzaCgiZXhwaXJlcz0iK25ldyBEYXRlKHIpLnRvR01UU3RyaW5nKCkpLEJlLmlzU3RyaW5nKG4pJiZpLnB1c2goInBhdGg9IituKSxCZS5pc1N0cmluZyhhKSYmaS5wdXNoKCJkb21haW49IithKSwhMD09PW8mJmkucHVzaCgic2VjdXJlIiksZG9jdW1lbnQuY29va2llPWkuam9pbigiOyAiKX0scmVhZDpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58O1xccyopKCIrZSsiKT0oW147XSopIikpO3JldHVybiB0P2RlY29kZVVSSUNvbXBvbmVudCh0WzNdKTpudWxsfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dGhpcy53cml0ZShlLCIiLERhdGUubm93KCktODY0ZTUpfX06e3dyaXRlOmZ1bmN0aW9uKCl7fSxyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHJlbW92ZTpmdW5jdGlvbigpe319LFdlPWZ1bmN0aW9uKGUpe3JldHVybi9eKFthLXpdW2EtelxkK1wtLl0qOik/XC9cLy9pLnRlc3QoZSl9LHplPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/ZS5yZXBsYWNlKC9cLyskLywiIikrIi8iK3QucmVwbGFjZSgvXlwvKy8sIiIpOmV9LFZlPWFlLFllPVsiYWdlIiwiYXV0aG9yaXphdGlvbiIsImNvbnRlbnQtbGVuZ3RoIiwiY29udGVudC10eXBlIiwiZXRhZyIsImV4cGlyZXMiLCJmcm9tIiwiaG9zdCIsImlmLW1vZGlmaWVkLXNpbmNlIiwiaWYtdW5tb2RpZmllZC1zaW5jZSIsImxhc3QtbW9kaWZpZWQiLCJsb2NhdGlvbiIsIm1heC1mb3J3YXJkcyIsInByb3h5LWF1dGhvcml6YXRpb24iLCJyZWZlcmVyIiwicmV0cnktYWZ0ZXIiLCJ1c2VyLWFnZW50Il0sR2U9YWUsWGU9R2UuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT9mdW5jdGlvbigpe3ZhciBlLHQ9Lyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBuKGUpe3ZhciBuPWU7cmV0dXJuIHQmJihyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksbj1yLmhyZWYpLHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSx7aHJlZjpyLmhyZWYscHJvdG9jb2w6ci5wcm90b2NvbD9yLnByb3RvY29sLnJlcGxhY2UoLzokLywiIik6IiIsaG9zdDpyLmhvc3Qsc2VhcmNoOnIuc2VhcmNoP3Iuc2VhcmNoLnJlcGxhY2UoL15cPy8sIiIpOiIiLGhhc2g6ci5oYXNoP3IuaGFzaC5yZXBsYWNlKC9eIy8sIiIpOiIiLGhvc3RuYW1lOnIuaG9zdG5hbWUscG9ydDpyLnBvcnQscGF0aG5hbWU6Ii8iPT09ci5wYXRobmFtZS5jaGFyQXQoMCk/ci5wYXRobmFtZToiLyIrci5wYXRobmFtZX19cmV0dXJuIGU9bih3aW5kb3cubG9jYXRpb24uaHJlZiksZnVuY3Rpb24odCl7dmFyIHI9R2UuaXNTdHJpbmcodCk/bih0KTp0O3JldHVybiByLnByb3RvY29sPT09ZS5wcm90b2NvbCYmci5ob3N0PT09ZS5ob3N0fX0oKTpmdW5jdGlvbigpe3JldHVybiEwfTtmdW5jdGlvbiAkZShlKXt0aGlzLm1lc3NhZ2U9ZX0kZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ2FuY2VsIisodGhpcy5tZXNzYWdlPyI6ICIrdGhpcy5tZXNzYWdlOiIiKX0sJGUucHJvdG90eXBlLl9fQ0FOQ0VMX189ITA7dmFyIFplPSRlLFFlPWFlLGV0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3QoSmUoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0sdHQ9RmUscnQ9c2UsbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmIVdlKHQpP3plKGUsdCk6dH0sYXQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGE9e307cmV0dXJuIGU/KFZlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PVZlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPVZlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYoYVt0XSYmWWUuaW5kZXhPZih0KT49MClyZXR1cm47YVt0XT0ic2V0LWNvb2tpZSI9PT10PyhhW3RdP2FbdF06W10pLmNvbmNhdChbcl0pOmFbdF0/YVt0XSsiLCAiK3I6cn19KSksYSk6YX0sb3Q9WGUsaXQ9S2Usc3Q9TmUsdXQ9WmUsY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuLGE9ZS5kYXRhLG89ZS5oZWFkZXJzLGk9ZS5yZXNwb25zZVR5cGU7ZnVuY3Rpb24gcygpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUobiksZS5zaWduYWwmJmUuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixuKX1RZS5pc0Zvcm1EYXRhKGEpJiZkZWxldGUgb1siQ29udGVudC1UeXBlIl07dmFyIHU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIGM9ZS5hdXRoLnVzZXJuYW1lfHwiIixmPWUuYXV0aC5wYXNzd29yZD91bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZS5hdXRoLnBhc3N3b3JkKSk6IiI7by5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EoYysiOiIrZil9dmFyIGw9bnQoZS5iYXNlVVJMLGUudXJsKTtmdW5jdGlvbiBoKCl7aWYodSl7dmFyIG49ImdldEFsbFJlc3BvbnNlSGVhZGVycyJpbiB1P2F0KHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsYT17ZGF0YTppJiYidGV4dCIhPT1pJiYianNvbiIhPT1pP3UucmVzcG9uc2U6dS5yZXNwb25zZVRleHQsc3RhdHVzOnUuc3RhdHVzLHN0YXR1c1RleHQ6dS5zdGF0dXNUZXh0LGhlYWRlcnM6bixjb25maWc6ZSxyZXF1ZXN0OnV9O2V0KChmdW5jdGlvbihlKXt0KGUpLHMoKX0pLChmdW5jdGlvbihlKXtyKGUpLHMoKX0pLGEpLHU9bnVsbH19aWYodS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCkscnQobCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSx1LnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gdT91Lm9ubG9hZGVuZD1oOnUub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dSYmND09PXUucmVhZHlTdGF0ZSYmKDAhPT11LnN0YXR1c3x8dS5yZXNwb25zZVVSTCYmMD09PXUucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQoaCl9LHUub25hYm9ydD1mdW5jdGlvbigpe3UmJihyKGl0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbCl9LHUub25lcnJvcj1mdW5jdGlvbigpe3IoaXQoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCx1KSksdT1udWxsfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PWUudGltZW91dD8idGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiOiJ0aW1lb3V0IGV4Y2VlZGVkIixuPWUudHJhbnNpdGlvbmFsfHxzdDtlLnRpbWVvdXRFcnJvck1lc3NhZ2UmJih0PWUudGltZW91dEVycm9yTWVzc2FnZSkscihpdCh0LGUsbi5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGx9LFFlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8b3QobCkpJiZlLnhzcmZDb29raWVOYW1lP3R0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIHUmJlFlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1hJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTp1LnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxRZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fCh1LndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYodS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmdS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJnUudXBsb2FkJiZ1LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSwoZS5jYW5jZWxUb2tlbnx8ZS5zaWduYWwpJiYobj1mdW5jdGlvbihlKXt1JiYocighZXx8ZSYmZS50eXBlP25ldyB1dCgiY2FuY2VsZWQiKTplKSx1LmFib3J0KCksdT1udWxsKX0sZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi5zdWJzY3JpYmUobiksZS5zaWduYWwmJihlLnNpZ25hbC5hYm9ydGVkP24oKTplLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbikpKSxhfHwoYT1udWxsKSx1LnNlbmQoYSl9KSl9LGZ0PWFlLGx0PWZ1bmN0aW9uKGUsdCl7TWUuZm9yRWFjaChlLChmdW5jdGlvbihyLG4pe24hPT10JiZuLnRvVXBwZXJDYXNlKCk9PT10LnRvVXBwZXJDYXNlKCkmJihlW3RdPXIsZGVsZXRlIGVbbl0pfSkpfSxodD1qZSxwdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIGR0KGUsdCl7IWZ0LmlzVW5kZWZpbmVkKGUpJiZmdC5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgdnQsZ3Q9e3RyYW5zaXRpb25hbDpOZSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09SGUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChIZSkpJiYodnQ9Y3QpLHZ0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiBsdCh0LCJBY2NlcHQiKSxsdCh0LCJDb250ZW50LVR5cGUiKSxmdC5pc0Zvcm1EYXRhKGUpfHxmdC5pc0FycmF5QnVmZmVyKGUpfHxmdC5pc0J1ZmZlcihlKXx8ZnQuaXNTdHJlYW0oZSl8fGZ0LmlzRmlsZShlKXx8ZnQuaXNCbG9iKGUpP2U6ZnQuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6ZnQuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGR0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpmdC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KGR0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYoZnQuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxmdC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8Z3QudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmZnQuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IGh0KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07ZnQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7Z3QuaGVhZGVyc1tlXT17fX0pKSxmdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe2d0LmhlYWRlcnNbZV09ZnQubWVyZ2UocHQpfSkpO3ZhciBtdD1ndCx5dD1hZSxidD1tdCx3dD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sa3Q9YWUsUnQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fGJ0O3JldHVybiB5dC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSxfdD13dCx4dD1tdCxTdD1aZTtmdW5jdGlvbiBFdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgU3QoImNhbmNlbGVkIil9dmFyIFR0PWFlLEF0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIFR0LmlzUGxhaW5PYmplY3QoZSkmJlR0LmlzUGxhaW5PYmplY3QodCk/VHQubWVyZ2UoZSx0KTpUdC5pc1BsYWluT2JqZWN0KHQpP1R0Lm1lcmdlKHt9LHQpOlR0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBvKGUpe2lmKCFUdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gaShyKXtyZXR1cm4gVHQuaXNVbmRlZmluZWQodFtyXSk/VHQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOm8sbWV0aG9kOm8sZGF0YTpvLGJhc2VVUkw6aSx0cmFuc2Zvcm1SZXF1ZXN0OmksdHJhbnNmb3JtUmVzcG9uc2U6aSxwYXJhbXNTZXJpYWxpemVyOmksdGltZW91dDppLHRpbWVvdXRNZXNzYWdlOmksd2l0aENyZWRlbnRpYWxzOmksYWRhcHRlcjppLHJlc3BvbnNlVHlwZTppLHhzcmZDb29raWVOYW1lOmkseHNyZkhlYWRlck5hbWU6aSxvblVwbG9hZFByb2dyZXNzOmksb25Eb3dubG9hZFByb2dyZXNzOmksZGVjb21wcmVzczppLG1heENvbnRlbnRMZW5ndGg6aSxtYXhCb2R5TGVuZ3RoOmksdHJhbnNwb3J0OmksaHR0cEFnZW50OmksaHR0cHNBZ2VudDppLGNhbmNlbFRva2VuOmksc29ja2V0UGF0aDppLHJlc3BvbnNlRW5jb2Rpbmc6aSx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gVHQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtUdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LEN0PSIwLjI2LjEiLER0PUN0LE90PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtPdFtlXT1mdW5jdGlvbihuKXtyZXR1cm4gcihuKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgUHQ9e307T3QudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitEdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLG8pe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFQdFthXSYmKFB0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLG8pfX07dmFyIEl0PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9PXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxvPWEubGVuZ3RoO28tLSA+MDspe3ZhciBpPWFbb10scz10W2ldO2lmKHMpe3ZhciB1PWVbaV0sYz12b2lkIDA9PT11fHxzKHUsaSxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIraSsiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitpKX19LHZhbGlkYXRvcnM6T3R9LFV0PWFlLEx0PXNlLEh0PWZlLE10PWZ1bmN0aW9uKGUpe3JldHVybiBFdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9UnQuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9a3QubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxrdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fHh0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBFdChlKSx0LmRhdGE9UnQuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4gX3QodCl8fChFdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPVJ0LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LGp0PUF0LE50PUl0LHF0PU50LnZhbGlkYXRvcnM7ZnVuY3Rpb24gS3QoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBIdCxyZXNwb25zZTpuZXcgSHR9fUt0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PWp0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmTnQuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIG8saT1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtNdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQoaSksbz1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KW89by50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBvfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e289TXQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7aS5sZW5ndGg7KW89by50aGVuKGkuc2hpZnQoKSxpLnNoaWZ0KCkpO3JldHVybiBvfSxLdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPWp0KHRoaXMuZGVmYXVsdHMsZSksTHQoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sVXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QoanQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxVdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe0t0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChqdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgSnQ9S3QsQnQ9WmU7ZnVuY3Rpb24gRnQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEJ0KGUpLHQoci5yZWFzb24pKX0pKX1GdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxGdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxGdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LEZ0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IEZ0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgV3Q9RnQsenQ9YWUsVnQ9YWUsWXQ9WSxHdD1KdCxYdD1BdDt2YXIgJHQ9ZnVuY3Rpb24gZSh0KXt2YXIgcj1uZXcgR3QodCksbj1ZdChHdC5wcm90b3R5cGUucmVxdWVzdCxyKTtyZXR1cm4gVnQuZXh0ZW5kKG4sR3QucHJvdG90eXBlLHIpLFZ0LmV4dGVuZChuLHIpLG4uY3JlYXRlPWZ1bmN0aW9uKHIpe3JldHVybiBlKFh0KHQscikpfSxufShtdCk7JHQuQXhpb3M9R3QsJHQuQ2FuY2VsPVplLCR0LkNhbmNlbFRva2VuPVd0LCR0LmlzQ2FuY2VsPXd0LCR0LlZFUlNJT049Q3QsJHQuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sJHQuc3ByZWFkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sJHQuaXNBeGlvc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB6dC5pc09iamVjdChlKSYmITA9PT1lLmlzQXhpb3NFcnJvcn0sVi5leHBvcnRzPSR0LFYuZXhwb3J0cy5kZWZhdWx0PSR0O3ZhciBadCxRdD1WLmV4cG9ydHM7dmFyIGVyPVp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiBzKGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYocj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsbj1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5hcHBlbmQoZSxyW2VdKX0pKSxlLmRhdGE9biksWnQuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IFp0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBadC5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6WnQuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpadC5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO1p0LmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPVF0LmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IFp0KSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gXyhlLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9UXQuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9UXQuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtlci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxlcj1adD1mdW5jdGlvbihlLHQsbixhKXt2YXIgbyxpPWFyZ3VtZW50cy5sZW5ndGgscz1pPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpyKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKG89ZVt1XSkmJihzPShpPDM/byhzKTppPjM/byh0LG4scyk6byh0LG4pKXx8cyk7cmV0dXJuIGk+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixzKSxzfShbZnVuY3Rpb24oZSl7fV0sZXIpO3ZhciB0cj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiBzKGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLmFicnVwdCgicmV0dXJuIixudWxsIT09KHI9bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PXI/cjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCkscnI9W10sbnI9W10sYXI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksb3I9ITE7ZnVuY3Rpb24gaXIoKXtvcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpcnJbdF09ZVt0XSxucltlLmNoYXJDb2RlQXQodCldPXQ7bnJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLG5yWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiBzcihlLHQscil7Zm9yKHZhciBuLGEsbz1bXSxpPXQ7aTxyO2krPTMpbj0oZVtpXTw8MTYpKyhlW2krMV08PDgpK2VbaSsyXSxvLnB1c2gocnJbKGE9bik+PjE4JjYzXStyclthPj4xMiY2M10rcnJbYT4+NiY2M10rcnJbNjMmYV0pO3JldHVybiBvLmpvaW4oIiIpfWZ1bmN0aW9uIHVyKGUpe3ZhciB0O29yfHxpcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLG89W10saT0xNjM4MyxzPTAsdT1yLW47czx1O3MrPWkpby5wdXNoKHNyKGUscyxzK2k+dT91OnMraSkpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9cnJbdD4+Ml0sYSs9cnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1yclt0Pj4xMF0sYSs9cnJbdD4+NCY2M10sYSs9cnJbdDw8MiY2M10sYSs9Ij0iKSxvLnB1c2goYSksby5qb2luKCIiKX1mdW5jdGlvbiBjcihlLHQscixuLGEpe3ZhciBvLGkscz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLG89cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7Zm9yKGk9byYoMTw8LWYpLTEsbz4+PS1mLGYrPW47Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PW8pbz0xLWM7ZWxzZXtpZihvPT09dSlyZXR1cm4gaT9OYU46MS8wKihwPy0xOjEpO2krPU1hdGgucG93KDIsbiksby09Y31yZXR1cm4ocD8tMToxKSppKk1hdGgucG93KDIsby1uKX1mdW5jdGlvbiBmcihlLHQscixuLGEsbyl7dmFyIGkscyx1LGM9OCpvLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6by0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxpPWYpOihpPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtaSkpPDEmJihpLS0sdSo9MiksKHQrPWkrbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihpKyssdS89MiksaStsPj1mPyhzPTAsaT1mKTppK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLGkrPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksaT0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKGk9aTw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmaSxwKz1kLGkvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIGxyPXt9LnRvU3RyaW5nLGhyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PWxyLmNhbGwoZSl9O2dyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09bGUuVFlQRURfQVJSQVlfU1VQUE9SVHx8bGUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIgcHI9ZHIoKTtmdW5jdGlvbiBkcigpe3JldHVybiBnci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiB2cihlLHQpe2lmKGRyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPWdyLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBncih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBncihlLHQscil7aWYoIShnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgZ3IpKXJldHVybiBuZXcgZ3IoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gYnIodGhpcyxlKX1yZXR1cm4gbXIodGhpcyxlLHQscil9ZnVuY3Rpb24gbXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU6ZT13cihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFnci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8X3IodCxyKSxhPShlPXZyKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKFJyKHQpKXt2YXIgcj0wfGtyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPXZyKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj92cihlLDApOndyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJmhyKHQuZGF0YSkpcmV0dXJuIHdyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24geXIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBicihlLHQpe2lmKHlyKHQpLGU9dnIoZSx0PDA/MDowfGtyKHQpKSwhZ3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiB3cihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfGtyKHQubGVuZ3RoKTtlPXZyKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBrcihlKXtpZihlPj1kcigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitkcigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBScihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24gX3IoZSx0KXtpZihScihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gWHIoZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiAkcihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBYcihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiB4cihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTHIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBNcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4ganIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVXIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gcXIodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gU3IoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBFcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9Z3IuZnJvbSh0LG4pKSxScih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlRyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOlRyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBUcihlLHQscixuLGEpe3ZhciBvLGk9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtpPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09aT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqaSl9aWYoYSl7dmFyIGY9LTE7Zm9yKG89cjtvPHM7bysrKWlmKGMoZSxvKT09PWModCwtMT09PWY/MDpvLWYpKXtpZigtMT09PWYmJihmPW8pLG8tZisxPT09dSlyZXR1cm4gZippfWVsc2UtMSE9PWYmJihvLT1vLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksbz1yO28+PTA7by0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLG8raCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gb31yZXR1cm4tMX1mdW5jdGlvbiBBcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIG89dC5sZW5ndGg7aWYobyUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+by8yJiYobj1vLzIpO2Zvcih2YXIgaT0wO2k8bjsrK2kpe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqaSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGk7ZVtyK2ldPXN9cmV0dXJuIGl9ZnVuY3Rpb24gQ3IoZSx0LHIsbil7cmV0dXJuIFpyKFhyKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIERyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIE9yKGUsdCxyLG4pe3JldHVybiBEcihlLHQscixuKX1mdW5jdGlvbiBQcihlLHQscixuKXtyZXR1cm4gWnIoJHIodCksZSxyLG4pfWZ1bmN0aW9uIElyKGUsdCxyLG4pe3JldHVybiBacihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsbz1bXSxpPTA7aTxlLmxlbmd0aCYmISgodC09Mik8MCk7KytpKW49KHI9ZS5jaGFyQ29kZUF0KGkpKT4+OCxhPXIlMjU2LG8ucHVzaChhKSxvLnB1c2gobik7cmV0dXJuIG99KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIFVyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD91cihlKTp1cihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIExyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIG8saSxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKG89ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZvKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzpvPWVbYSsxXSxpPWVbYSsyXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZpKSYmKHU9KDE1JmMpPDwxMnwoNjMmbyk8PDZ8NjMmaSk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6bz1lW2ErMV0saT1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmbyk8PDEyfCg2MyZpKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9SHIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPUhyKSk7cmV0dXJuIHJ9KG4pfWdyLnBvb2xTaXplPTgxOTIsZ3IuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPWdyLnByb3RvdHlwZSxlfSxnci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gbXIobnVsbCxlLHQscil9LGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihnci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLGdyLl9fcHJvdG9fXz1VaW50OEFycmF5KSxnci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB5cih0KSx0PD0wP3ZyKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/dnIoZSx0KS5maWxsKHIsbik6dnIoZSx0KS5maWxsKHIpOnZyKGUsdCl9KG51bGwsZSx0LHIpfSxnci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gYnIobnVsbCxlKX0sZ3IuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBicihudWxsLGUpfSxnci5pc0J1ZmZlcj1Rcixnci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIVJyKGUpfHwhUnIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxvPU1hdGgubWluKHIsbik7YTxvOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LGdyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGdyLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFocihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBnci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPWdyLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgbz1lW3JdO2lmKCFScihvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7by5jb3B5KG4sYSksYSs9by5sZW5ndGh9cmV0dXJuIG59LGdyLmJ5dGVMZW5ndGg9X3IsZ3IucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxnci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKVNyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxnci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KVNyKHRoaXMsdCx0KzMpLFNyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpU3IodGhpcyx0LHQrNyksU3IodGhpcyx0KzEsdCs2KSxTcih0aGlzLHQrMix0KzUpLFNyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0xyKHRoaXMsMCxlKTp4ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGdyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1nci5jb21wYXJlKHRoaXMsZSl9LGdyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LGdyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBvPShhPj4+PTApLShuPj4+PTApLGk9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihvLGkpLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtvPXVbZl0saT1jW2ZdO2JyZWFrfXJldHVybiBvPGk/LTE6aTxvPzE6MH0sZ3IucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LGdyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIodGhpcyxlLHQsciwhMCl9LGdyLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKHRoaXMsZSx0LHIsITEpfSxnci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgbz0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIEFyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIENyKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBEcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBPcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIFByKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gSXIodGhpcyxlLHQscik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sZ3IucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEhyPTQwOTY7ZnVuY3Rpb24gTXIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBqcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gTnIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixvPXQ7bzxyOysrbylhKz1HcihlW29dKTtyZXR1cm4gYX1mdW5jdGlvbiBxcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBhfWZ1bmN0aW9uIEtyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBKcihlLHQscixuLGEsbyl7aWYoIVJyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBCcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8bzsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gRnIoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8bzsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24gV3IoZSx0LHIsbixhLG8pe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB6cihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw0KSxmcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBWcihlLHQscixuLGEpe3JldHVybiBhfHxXcihlLDAsciw4KSxmcihlLHQscixuLDUyLDgpLHIrOH1nci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgZ3IoYSx2b2lkIDApO2Zvcih2YXIgbz0wO288YTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LGdyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LGdyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxnci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LGdyLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGdyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxnci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsbz0wOysrbzx0JiYoYSo9MjU2KTspbis9dGhpc1tlK29dKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxnci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8S3IoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsbz10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylvKz10aGlzW2UrLS1uXSphO3JldHVybiBvPj0oYSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sZ3IucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LGdyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fEtyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LGdyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sZ3IucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxnci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITAsMjMsNCl9LGdyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSwyMyw0KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMCw1Miw4KX0sZ3IucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDgsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMSw1Miw4KX0sZ3IucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8SnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLG89MDtmb3IodGhpc1t0XT0yNTUmZTsrK288ciYmKGEqPTI1Nik7KXRoaXNbdCtvXT1lL2EmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fEpyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLG89MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKG8qPTI1Nik7KXRoaXNbdCthXT1lL28mMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDEsMjU1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpCcih0aGlzLGUsdCwhMCksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDY1NTM1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz0wLGk9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihpKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9pPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO0pyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgbz1yLTEsaT0xLHM9MDtmb3IodGhpc1t0K29dPTI1NSZlOy0tbz49MCYmKGkqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QrbysxXSYmKHM9MSksdGhpc1t0K29dPShlL2k+PjApLXMmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMSwxMjcsLTEyOCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sZ3IucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkJyKHRoaXMsZSx0LCEwKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpCcih0aGlzLGUsdCwhMSksdCsyfSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpGcih0aGlzLGUsdCwhMCksdCs0fSxnci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGcih0aGlzLGUsdCwhMSksdCs0fSxnci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4genIodGhpcyxlLHQsITAscil9LGdyLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB6cih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMCxyKX0sZ3IucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBWcih0aGlzLGUsdCwhMSxyKX0sZ3IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9by0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihvPDFlM3x8IWdyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPG87KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK28pLHQpO3JldHVybiBvfSxnci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhZ3IuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobz10O288cjsrK28pdGhpc1tvXT1lO2Vsc2V7dmFyIGk9UnIoZSk/ZTpYcihuZXcgZ3IoZSxuKS50b1N0cmluZygpKSxzPWkubGVuZ3RoO2ZvcihvPTA7bzxyLXQ7KytvKXRoaXNbbyt0XT1pW28lc119cmV0dXJuIHRoaXN9O3ZhciBZcj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBHcihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gWHIoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLG89W10saT0wO2k8bjsrK2kpe2lmKChyPWUuY2hhckNvZGVBdChpKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoaSsxPT09bil7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztvLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBvfWZ1bmN0aW9uICRyKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxvLGk7b3J8fGlyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7bz0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLGk9bmV3IGFyKDMqcy80LW8pLG49bz4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPW5yW2UuY2hhckNvZGVBdCh0KV08PDE4fG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8bnJbZS5jaGFyQ29kZUF0KHQrMildPDw2fG5yW2UuY2hhckNvZGVBdCh0KzMpXSxpW3UrK109YT4+MTYmMjU1LGlbdSsrXT1hPj44JjI1NSxpW3UrK109MjU1JmE7cmV0dXJuIDI9PT1vPyhhPW5yW2UuY2hhckNvZGVBdCh0KV08PDJ8bnJbZS5jaGFyQ29kZUF0KHQrMSldPj40LGlbdSsrXT0yNTUmYSk6MT09PW8mJihhPW5yW2UuY2hhckNvZGVBdCh0KV08PDEwfG5yW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxucltlLmNoYXJDb2RlQXQodCsyKV0+PjIsaVt1KytdPWE+PjgmMjU1LGlbdSsrXT0yNTUmYSksaX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShZciwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gWnIoZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHxlbihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZlbihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gZW4oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgdG49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOmdyLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLGdyLmFsbG9jKCtlKX0saXNCdWZmZXI6UXIsa01heExlbmd0aDpwcn0pLHJuPXtleHBvcnRzOnt9fSxubj17fSxhbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYW4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGFuLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixvPXQrYSxpPWdyLmFsbG9jKG8pO2ZvcihpLndyaXRlKGUpO2EtLTspaS53cml0ZSgiPSIsbisrKTtyZXR1cm4gaS50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvbj1hbjtmdW5jdGlvbiBzbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLGdyLmlzQnVmZmVyKGUpP2NuKGUudG9TdHJpbmcoImJhc2U2NCIpKTpjbihnci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiB1bihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksb24uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gY24oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBmbixsbj1zbjtsbi5lbmNvZGU9c24sbG4uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksZ3IuZnJvbSh1bihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGxuLnRvQmFzZTY0PXVuLGxuLmZyb21CYXNlNjQ9Y24sbG4udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20odW4oZSksImJhc2U2NCIpfSxubi5kZWZhdWx0PWxuLChmbj1ybikuZXhwb3J0cz1ubi5kZWZhdWx0LGZuLmV4cG9ydHMuZGVmYXVsdD1mbi5leHBvcnRzO3ZhciBobj1ybi5leHBvcnRzLHBuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxvKXtmb3IodmFyIGkscyx1LGMsZixsLGgscCxkLHYsZyxtLHk7bz49NjQ7KXtmb3IoaT1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspbT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAseT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPShtK2Vbdi03XXwwKSsoeStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspbT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAseT0oKGk+Pj4yfGk8PDMwKV4oaT4+PjEzfGk8PDE5KV4oaT4+PjIyfGk8PDEwKSkrKGkmc15pJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9YyttfDAsYz11LHU9cyxzPWksaT1tK3l8MDtyWzBdKz1pLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsby09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsbz10PDwzLGk9dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxpLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbaS04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW2ktN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltpLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltpLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltpLTRdPW8+Pj4yNCYyNTUsdGhpcy5idWZmZXJbaS0zXT1vPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2ktMl09bz4+PjgmMjU1LHRoaXMuYnVmZmVyW2ktMV09bz4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxpKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBvKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gaShlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9byxlLmRlZmF1bHQ9byxlLmhtYWM9aTt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBvPW5ldyBVaW50OEFycmF5KFsxXSksYz1pKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixvKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLG8uZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBvPW5ldyBhKGUpLGk9by5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KGkpLGM9bmV3IFVpbnQ4QXJyYXkoaSksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCppPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxvLnJlc2V0KCksby51cGRhdGUodCksby51cGRhdGUocyksby5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxpO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7by5yZXNldCgpLG8udXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPGk7ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPGkmJmwqaStwPG47cCsrKWZbbCppK3BdPXVbcF19Zm9yKGw9MDtsPGk7bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIG8uY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIG8gaW4gbilhW29dPW5bb107ZS5leHBvcnRzPWF9KCl9KHBuKTt2YXIgZG49Vyhwbi5leHBvcnRzKSx2bj1jcnlwdG8sZ249ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDcnlwdG9LZXl9LG1uPW5ldyBUZXh0RW5jb2Rlcix5bj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gYm4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksbz0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsbyksbys9ZS5sZW5ndGh9KSksYX12YXIgd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9eW4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LGtuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcix2KG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KGQoRXJyb3IpKSxSbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShrbiksX249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KGtuKSx4bj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KGtuKSxTbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oa24pLEVuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oa24pLFRuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oa24pLEFuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShrbiksQ249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShrbiksRG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oa24pLE9uPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShrbik7ZnVuY3Rpb24gUG4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBJbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09SGUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gVW4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBMbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIEhuKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIE1uKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gam4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgTm49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLG49YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShuPjE/bi0xOjApLG89MTtvPG47bysrKWFbby0xXT1hcmd1bWVudHNbb107aWYoYS5sZW5ndGg+Mil7dmFyIGk9YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChpLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09cihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxxbj1mdW5jdGlvbihlKXtyZXR1cm4gZ24oZSl9LEtuPVsiQ3J5cHRvS2V5Il0sSm49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBvLGk9UihhKTt0cnl7Zm9yKGkucygpOyEobz1pLm4oKSkuZG9uZTspe3ZhciBzPW8udmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uIEJuKGUpe2lmKCJvYmplY3QiIT09cih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIG49ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pOyluPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bn12YXIgRm49ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIFduKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgU24oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UoUG4oKXx8SW4oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBJbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgem49ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIpe3ZhciBuLGEsbyxpLHMsdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGk9V24ocikscz1pLmFsZ29yaXRobSx1PWkua2V5VXNhZ2VzLGM9W3MsbnVsbCE9PShhPXIuZXh0KSYmdm9pZCAwIT09YSYmYSxudWxsIT09KG89ci5rZXlfb3BzKSYmdm9pZCAwIT09bz9vOnVdLCJQQktERjIiIT09cy5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGY9dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoZixbInJhdyIsd24oci5rKV0uY29uY2F0KGMpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUobD10KHt9LHIpKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKG49dm4uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobixbImp3ayIsbF0uY29uY2F0KGMpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFZuKGUsdCxyKXtyZXR1cm4gWW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFluKCl7cmV0dXJuKFluPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihufHwobj1yLmFsZyksInN0cmluZyI9PXR5cGVvZiBuJiZuKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPXIua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLmsmJnIuayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9YXx8KGE9ITAhPT1yLmV4dCksIWEpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsem4odCh0KHt9LHIpLHt9LHthbGc6bixleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHduKHIuaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09ci5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgU24oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHpuKHQodCh7fSxyKSx7fSx7YWxnOm59KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgR249ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFxbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoS24pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighcW4oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEtuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChLbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiBYbihlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBvO289dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIGkscz1SKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKGk9cy5uKCkpLmRvbmU7KXt2YXIgdT1pLnZhbHVlO2lmKCFvLmhhcyh1KSl0aHJvdyBuZXcgU24oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoby5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgJG49ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIFpuKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKFBuKCl8fEluKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgU24oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gUW4oZSx0LHIpe2lmKGduKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBVbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBVbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBVbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihIbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgVW4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBVbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBVbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgSW4oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBQbigpJiYiRWREU0EiOmlmKCFMbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgVW4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBVbigiRUNEU0EiKTt2YXIgbz1Nbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09byl0aHJvdyBVbihvLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShpPjI/aS0yOjApLHU9Mjt1PGk7dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07am4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEtuKSkpKTtyZXR1cm4gdm4uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihLbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIGVhPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LHIsbixhKXt2YXIgbyxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLFFuKHQsciwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxGbih0LG8pLGk9Wm4odCxvLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsdm4uc3VidGxlLnZlcmlmeShpLG8sbixhKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHRhKGUsdCxyKXtyZXR1cm4gcmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJhKCl7cmV0dXJuIHJhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBvLGkscyx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoQm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBFbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1yLnByb3RlY3RlZHx8dm9pZCAwIT09ci5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBFbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PXIucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIHIucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PXIucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRW4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09ci5oZWFkZXJ8fEJuKHIuaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYoaT17fSwhci5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha31zPXduKHIucHJvdGVjdGVkKSxlLnByZXY9MTUsaT1KU09OLnBhcnNlKHluLmRlY29kZShzKSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IEVuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihKbihpLHIuaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYodT10KHQoe30saSksci5oZWFkZXIpLGM9WG4oRW4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWE/dm9pZCAwOmEuY3JpdCxpLHUpLGY9ITAsIWMuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGY9aS5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEVuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihsPXUuYWxnKSYmbCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBFbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKGg9YSYmJG4oImFsZ29yaXRobXMiLGEuYWxnb3JpdGhtcykpfHxoLmhhcyhsKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyB4bignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWYpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWR8fHIucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYocD0hMSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsbihpLHIpO2Nhc2UgNDg6bj1lLnNlbnQscD0hMDtjYXNlIDUwOnJldHVybiBHbihsLG4sInZlcmlmeSIpLGQ9Ym4obW4uZW5jb2RlKG51bGwhPT0obz1yLnByb3RlY3RlZCkmJnZvaWQgMCE9PW8/bzoiIiksbW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/bW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkKSx2PXduKHIuc2lnbmF0dXJlKSxlLm5leHQ9NTUsZWEobCxuLHYsZCk7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgT247Y2FzZSA1ODppZihnPWY/d24oci5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD9tbi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQsbT17cGF5bG9hZDpnfSx2b2lkIDAhPT1yLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPWkpLHZvaWQgMCE9PXIuaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1yLmhlYWRlciksIXApe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6bn0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLHJhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuYShlLHQscil7cmV0dXJuIGFhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhYSgpe3JldHVybihhYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdSxjLGY7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyIGluc3RhbmNlb2YgVWludDhBcnJheSYmKHI9eW4uZGVjb2RlKHIpKSwic3RyaW5nIj09dHlwZW9mIHIpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBFbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKG89ci5zcGxpdCgiLiIpLGk9b1swXSxzPW9bMV0sdT1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IEVuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCx0YSh7cGF5bG9hZDpzLHByb3RlY3RlZDppLHNpZ25hdHVyZTp1fSxuLGEpO2Nhc2UgODppZihjPWUuc2VudCxmPXtwYXlsb2FkOmMucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Yy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxmKSx7fSx7a2V5OmMua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGYpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgb2E9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0saWE9ODY0MDAsc2E9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksdWE9ZnVuY3Rpb24oZSl7dmFyIHQ9c2EuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqaWEpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LGNhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sZmE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0sbGE9ZnVuY3Rpb24oZSx0KXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxvPWEudHlwO2lmKG8mJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxjYShlLnR5cCkhPT1jYShvKSkpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7bj1KU09OLnBhcnNlKHluLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCFCbihuKSl0aHJvdyBuZXcgVG4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgaT1hLmlzc3VlcjtpZihpJiYhKEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmluY2x1ZGVzKG4uaXNzKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmbi5zdWIhPT1zKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhZmEobi5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gocihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9dWEoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1vYShmfHxuZXcgRGF0ZSk7aWYoKHZvaWQgMCE9PW4uaWF0fHxhLm1heFRva2VuQWdlKSYmIm51bWJlciIhPXR5cGVvZiBuLmlhdCl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwIT09bi5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5uYmYpdGhyb3cgbmV3IFJuKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKG4ubmJmPmwrdSl0aHJvdyBuZXcgUm4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1uLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiBuLmV4cCl0aHJvdyBuZXcgUm4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYobi5leHA8PWwtdSl0aHJvdyBuZXcgX24oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLW4uaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6dWEoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IF9uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBSbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiBufTtmdW5jdGlvbiBoYSgpe3JldHVybihoYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixuYShyLG4sYSk7Y2FzZSAyOmlmKGk9ZS5zZW50LCEobnVsbD09PShvPWkucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09aS5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVG4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHM9bGEoaS5wcm90ZWN0ZWRIZWFkZXIsaS5wYXlsb2FkLGEpLHU9e3BheWxvYWQ6cyxwcm90ZWN0ZWRIZWFkZXI6aS5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LHUpLHt9LHtrZXk6aS5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1KTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcGEoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IFNuKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIGRhKGUpe3JldHVybiBCbihlKX12YXIgdmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PXIoZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KGRhKX0odCkpdGhyb3cgbmV3IEFuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciBuO3RoaXMuX2p3a3M9KG49dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShuKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4pKSl9dmFyIG47cmV0dXJuIHMoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZToobj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsbyxpLHMsdSxjLGYsbCxoO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYT10KHQoe30sciksbi5oZWFkZXIpLG89YS5hbGcsaT1hLmtpZCxzPXBhKG8pLHU9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9cz09PWUua3R5O2lmKHQmJiJzdHJpbmciPT10eXBlb2YgaSYmKHQ9aT09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1vPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PW8mJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKG8pe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksYz11WzBdLDAhPT0oZj11Lmxlbmd0aCkpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBDbjtjYXNlIDg6aWYoMT09PWYpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgRG47Y2FzZSAxMDppZih2b2lkIDAhPT0obD10aGlzLl9jYWNoZWQuZ2V0KGMpfHx0aGlzLl9jYWNoZWQuc2V0KGMse30pLmdldChjKSlbb10pe2UubmV4dD0xODticmVha31yZXR1cm4gZS5uZXh0PTE0LFZuKHQodCh7fSxjKSx7fSx7ZXh0OiEwfSksbyk7Y2FzZSAxNDppZighKChoPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09aC50eXBlKSl7ZS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBBbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE3Omxbb109aDtjYXNlIDE4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixsW29dKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBnYT17ZXhwb3J0czp7fX0sbWE9e2V4cG9ydHM6e319LHlhPXoodG4pOwovKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi8KIWZ1bmN0aW9uKGUsdCl7dmFyIHI9eWEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9byksby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLG8pLG8uZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxvLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0sby5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxvLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fShtYSxtYS5leHBvcnRzKTt2YXIgYmE9NjU1MzYsd2E9NDI5NDk2NzI5NTt2YXIga2E9bWEuZXhwb3J0cy5CdWZmZXIsUmE9Ri5jcnlwdG98fEYubXNDcnlwdG87UmEmJlJhLmdldFJhbmRvbVZhbHVlcz9nYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT53YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPWthLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmJhKWZvcih2YXIgbj0wO248ZTtuKz1iYSlSYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rYmEpKTtlbHNlIFJhLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gSGUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTpnYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgX2EseGE9Z2EuZXhwb3J0cyxTYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20oZG4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geGEoZSl9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSwocz17a2V5czpbdF19LHZhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgdmEocykpKSx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6YSxzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpO3ZhciBzfX1dKSxlfSgpLEVhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsVCxBLEMsTyxQLEksVSxMLEgsTTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyB0cixuPW5ldyBTYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihvPW5ldyBKKGEpLGk9YS5nZXREYXRhTGF5ZXIoKSxzPWVyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITEsYz0wLHIudDA9W10sci50MT1iLHIubmV4dD02LGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTEwO2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDEwOmlmKCFyLnQzKXtyLm5leHQ9MTQ7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTE1O2JyZWFrO2Nhc2UgMTQ6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE1OmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0xOTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAxOTppZighci50Mil7ci5uZXh0PTIzO2JyZWFrfXIudDc9YSxyLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpyLnQ3PVtdO2Nhc2UgMjQ6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZj1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAyODppZighKGM8Zi5sZW5ndGgpKXtyLm5leHQ9MzY7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aChsKSkpe3IubmV4dD0zMzticmVha31yZXR1cm4gdT0hMCxyLmFicnVwdCgiYnJlYWsiLDM2KTtjYXNlIDMzOmMrKyxyLm5leHQ9Mjg7YnJlYWs7Y2FzZSAzNjppZighdSl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtyLm5leHQ9MTI7YnJlYWt9cmV0dXJuIHIucHJldj0xLHIubmV4dD00LFMoKTtjYXNlIDQ6aT1yLnNlbnQsci5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyByLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUi1TRTAxIixudWxsIT09KGE9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWE/YToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obz1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bz9vOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxMDppZighaSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDEyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBEKCJTUEEtV09SS0VSX0NPUkUtSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLHUsYyxmLGwsaCxwLGQsdixnO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dT0hMCxjPVIodCksci5wcmV2PTIsYy5zKCk7Y2FzZSA0OmlmKChmPWMubigpKS5kb25lKXtyLm5leHQ9NDc7YnJlYWt9cmV0dXJuIGw9Zi52YWx1ZSxoPSExLHA9MCxyLnQwPVtdLHIudDE9YixyLm5leHQ9MTIsaS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTE2O2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDE2OmlmKCFyLnQzKXtyLm5leHQ9MjA7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTIxO2JyZWFrO2Nhc2UgMjA6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDIxOmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0yNTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAyNTppZighci50Mil7ci5uZXh0PTI5O2JyZWFrfXIudDc9YSxyLm5leHQ9MzA7YnJlYWs7Y2FzZSAyOTpyLnQ3PVtdO2Nhc2UgMzA6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZD1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAzNDppZighKHA8ZC5sZW5ndGgpKXtyLm5leHQ9NDI7YnJlYWt9aWYoISh2PWRbcF0pfHwhKG51bGw9PT0obz1sLnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aCh2KSkpe3IubmV4dD0zOTticmVha31yZXR1cm4gaD0hMCxyLmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OnArKyxyLm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihoKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHU9ITEsci5hYnJ1cHQoImJyZWFrIiw0Nyk7Y2FzZSA0NTpyLm5leHQ9NDticmVhaztjYXNlIDQ3OnIubmV4dD01MjticmVhaztjYXNlIDQ5OnIucHJldj00OSxyLnQxMT1yLmNhdGNoKDIpLGMuZShyLnQxMSk7Y2FzZSA1MjpyZXR1cm4gci5wcmV2PTUyLGMuZigpLHIuZmluaXNoKDUyKTtjYXNlIDU1OmlmKGc9W10sIXUpe3IubmV4dD02MTticmVha31yZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtnLnB1c2gocy5yZXF1ZXN0KGUpKX0pKSxyLmFicnVwdCgicmV0dXJuIiwobnVsbD09cz92b2lkIDA6cy5hbGwpJiZzLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQucHJldj0xLHQubmV4dD00LFMoKTtjYXNlIDQ6bz10LnNlbnQsdC5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyB0LnByZXY9Nyx0LnQwPXQuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUkEtU0UwMSIsbnVsbCE9PShuPW51bGw9PT10LnQwfHx2b2lkIDA9PT10LnQwP3ZvaWQgMDp0LnQwLm5hbWUpJiZ2b2lkIDAhPT1uP246IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KGE9bnVsbD09PXQudDB8fHZvaWQgMD09PXQudDA/dm9pZCAwOnQudDAubWVzc2FnZSkmJnZvaWQgMCE9PWE/YToiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIW8pe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5hbGwmJnMuYWxsKGcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRCgiU1BBLVdPUktFUl9DT1JFLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNjI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1syLDQ5LDUyLDU1XV0pfSkpKX0sZD1mdW5jdGlvbigpe3MuZW5hYmxlSGFuZGxlciYmcy5lbmFibGVIYW5kbGVyKCl9LHY9ZnVuY3Rpb24oKXtzLmRpc2FibGVIYW5kbGVyJiZzLmRpc2FibGVIYW5kbGVyKCl9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPW5ldyBVUkwoZSksbz1udWxsIT09KHI9bi5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09cj9yOiIiLHQubmV4dD00LGEuZ2V0UEtDRUNvZGUobyk7Y2FzZSA0OnJldHVybiBpPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6aX0pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG09ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocyl7Zm9yKDs7KXN3aXRjaChzLnByZXY9cy5uZXh0KXtjYXNlIDA6cmV0dXJuIHMubmV4dD0yLGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjppZih1PXMuc2VudCwhcnx8IXUuZW5hYmxlUEtDRSl7cy5uZXh0PTY7YnJlYWt9cmV0dXJuIHMubmV4dD02LGEuc2V0UEtDRUNvZGUocixudWxsIT1uP246IiIpO2Nhc2UgNjppZighZSl7cy5uZXh0PTg7YnJlYWt9cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLGEucmVxdWVzdEFjY2Vzc1Rva2VuKGUsbnVsbCE9dD90OiIiLG51bGwhPW4/bjoiJyIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGEuZ2V0QmFzaWNVc2VySW5mbygpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgODpyZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxhLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixzLHUsYyxmLGwsaDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHU9ITAsYz0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD0zOTticmVha31yZXR1cm4gdT0hMSxmPTAsdC50MD1bXSx0LnQxPWIsdC5uZXh0PTksaS5nZXRDb25maWdEYXRhKCk7Y2FzZSA5OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTM7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTM6aWYoIXQudDMpe3QubmV4dD0xNzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMTg6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTIyO2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDIyOmlmKCF0LnQyKXt0Lm5leHQ9MjY7YnJlYWt9dC50Nz1uLHQubmV4dD0yNzticmVhaztjYXNlIDI2OnQudDc9W107Y2FzZSAyNzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bZS5iYXNlVXJsXSxsPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoZjxsLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZighKGg9bFtmXSl8fCEobnVsbD09PShzPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhcnRzV2l0aChoKSkpe3QubmV4dD0zNjticmVha31yZXR1cm4gYz0hMCx0LmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDM2OmYrKyx0Lm5leHQ9MzE7YnJlYWs7Y2FzZSAzOTppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmaS5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEssSlNPTi5zdHJpbmdpZnkoZSkpLCF1JiYhYyl7dC5uZXh0PTQ0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9MyxhLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsTSgpO2Nhc2UgNTppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUubmV4dD05LHgodCk7Y2FzZSA5OnJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTNdXSl9KSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIGEucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sVD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWNjZXNzVG9rZW4oKX0sST1mdW5jdGlvbigpe3JldHVybiBhLmlzQXV0aGVudGljYXRlZCgpfSxVPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsaS5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxMPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsYS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxIPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixpLmdldENvbmZpZ0RhdGEoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixpLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoSyk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHQuYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6dixlbmFibGVIdHRwSGFuZGxlcjpkLGdldEFjY2Vzc1Rva2VuOlAsZ2V0QXV0aG9yaXphdGlvblVSTDpnLGdldEJhc2ljVXNlckluZm86VCxnZXRDb25maWdEYXRhOkgsZ2V0RGVjb2RlZElEVG9rZW46QSxnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6TyxnZXRTaWduT3V0VVJMOmssaHR0cFJlcXVlc3Q6aCxodHRwUmVxdWVzdEFsbDpwLGlzQXV0aGVudGljYXRlZDpJLHJlZnJlc2hBY2Nlc3NUb2tlbjpTLHJlcXVlc3RBY2Nlc3NUb2tlbjp5LHJlcXVlc3RDdXN0b21HcmFudDp4LHJldm9rZUFjY2Vzc1Rva2VuOkUsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpjLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmYsc2V0U2Vzc2lvblN0YXRlOlUsc2lnbk91dDp3LHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjptLHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sVGE9c2VsZjtUYS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLHI9ZS5wb3J0cztyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLGEsbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9clswXSx0LnR5cGU9PT1xfHxfYSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09cT83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsRWEodSk7Y2FzZSAxMTooX2E9ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKERhKSxfYS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soQWEpLF9hLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKENhKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODplLnByZXY9MTgsZS50MT1lLmNhdGNoKDcpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gX2EuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI0OnJldHVybiBfYS5yZXF1ZXN0QWNjZXNzVG9rZW4obnVsbD09PShuPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY29kZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zZXNzaW9uU3RhdGUsbnVsbD09PShvPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW8/dm9pZCAwOm8ucGtjZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMzA6cmV0dXJuIGUucHJldj0zMCxlLnQyPXMsZS50Mz1CLGUubmV4dD0zNSxfYS5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiBfYS5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gX2EucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0ODpyZXR1cm4gZS5wcmV2PTQ4LGUudDc9cyxlLnQ4PUIsZS5uZXh0PTUzLF9hLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9QixlLm5leHQ9NjcsX2EuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ZS50MTQ9ZS5zZW50LGUudDE1PWUudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxMyxlLnQxNCksZS50MTIucG9zdE1lc3NhZ2UuY2FsbChlLnQxMixlLnQxNSksZS5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ZS5wcmV2PTcyLGUudDE2PWUuY2F0Y2goNjIpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PUIsZS5uZXh0PTgxLF9hLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjEpKTtjYXNlIDg5OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA5MDpyZXR1cm4gZS5wcmV2PTkwLGUudDIyPXMsZS50MjM9QixlLm5leHQ9OTUsX2EuZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gX2EuZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIF9hLmRpc2FibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PUIsZS5uZXh0PTExNSxfYS5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDMxKSk7Y2FzZSAxMjM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEyNDpyZXR1cm4gZS5wcmV2PTEyNCxlLnQzMj1zLGUudDMzPUIsZS5uZXh0PTEyOSxfYS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1CLGUubmV4dD0xNDMsX2EucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAxNDM6ZS50Mzk9ZS5zZW50LGUudDQwPWUudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzOCxlLnQzOSksZS50MzcucG9zdE1lc3NhZ2UuY2FsbChlLnQzNyxlLnQ0MCksZS5uZXh0PTE1MTticmVhaztjYXNlIDE0ODplLnByZXY9MTQ4LGUudDQxPWUuY2F0Y2goMTM4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKF9hLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTQ6cmV0dXJuIGUucHJldj0xNTQsZS50NDI9cyxlLnQ0Mz1CLGUubmV4dD0xNTksX2Euc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1CLGUubmV4dD0xNzMsX2EudXBkYXRlQ29uZmlnKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNzM6ZS50NDk9ZS5zZW50LGUudDUwPWUudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0OCxlLnQ0OSksZS50NDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ0NyxlLnQ1MCksZS5uZXh0PTE4MTticmVhaztjYXNlIDE3ODplLnByZXY9MTc4LGUudDUxPWUuY2F0Y2goMTY4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1CLGUubmV4dD0xODcsX2EuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTYpKTtjYXNlIDE5NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTk2Om51bGw9PXN8fHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIEFhPWZ1bmN0aW9uKCl7VGEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LENhPWZ1bmN0aW9uKGUpe1RhLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxEYT1mdW5jdGlvbigpe1RhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",xQ=null,UQ=!1,function(e){return kQ=kQ||LQ(HQ,xQ,UQ),new Worker(kQ,e)}),wQ=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,l,u,d,s,m,Z,h,b,p,I,g,y,X,f,G,V,W,C,v,R,S,Y,J,K,N,L,H,x,U;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=null!==(n=null==e?void 0:e.requestTimeout)&&void 0!==n?n:6e4,c=!0,a=!1,t.next=5,tB((function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:"sign-out"},e.prev=1,e.next=4,u(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",eB.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),e.storage,(function(e){return p(e)}));case 5:return o=t.sent,l=new AQ,u=function(e){var t=new MessageChannel;return l.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new CT("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+i/1e3+" since dispatching the request"))}),i);return t.port1.onmessage=function(t){var i=t.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},d=function(e){return u({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(a=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},s=function(e){return u({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!c){t.next=5;break}if("function"!=typeof r.requestErrorCallback){t.next=4;break}return t.next=4,r.requestErrorCallback(e);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},m=function(e){return u({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!c){t.next=5;break}if("function"!=typeof r.requestErrorCallback){t.next=4;break}return t.next=4,r.requestErrorCallback(e);case 4:"function"==typeof r.requestFinishCallback&&r.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},Z=function(){return u({type:"enable_http_handler"}).then((function(){return c=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},h=function(){return u({type:"disable_http_handler"}).then((function(){return c=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},b=function(){return r||(r={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),l.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==r?void 0:r.requestFinishCallback)&&(null==r||r.requestFinishCallback());break;case"request-start":(null==r?void 0:r.requestStartCallback)&&(null==r||r.requestStartCallback());break;case"request-success":(null==r?void 0:r.requestSuccessCallback)&&(null==r||r.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},u({data:e,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(e){return u({data:e,type:"set_session_state"})},I=function(){return u({type:"start_auto_refresh_token"})},g=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return i=e.sent,e.next=5,v();case 5:c=e.sent,o.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,X(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},y=function(){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,a,l,d,s,m,Z;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v();case 2:if(r=e.sent,!eB.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,o.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById("rpIFrame"),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame"),a={data:{prompt:"none",state:"sign-in-silently"},type:"get_auth_url"},e.prev=10,e.next=13,u(a);case 13:l=e.sent,d=vT.extractPKCEKeyFromStateParam(null!==(n=new URL(l.authorizationURL).searchParams.get(VT))&&void 0!==n?n:""),l.pkce&&r.enablePKCE&&eB.setPKCE(d,l.pkce),s=l.authorizationURL,(m=new URL(s)).searchParams.set("response_mode","query"),Z=m.toString(),c.src=Z,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,d;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(d=i.data)?void 0:d.type)&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),"check_session_signed_in"==(null==d?void 0:d.type)&&(null===(a=null==d?void 0:d.data)||void 0===a?void 0:a.code)&&f(null===(o=null==d?void 0:d.data)||void 0===o?void 0:o.code,null===(l=null==d?void 0:d.data)||void 0===l?void 0:l.sessionState,null===(u=null==d?void 0:d.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},X=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:return n=t.sent,r={data:e,type:"get_auth_url"},t.abrupt("return",u(r).then((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=vT.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(VT))&&void 0!==r?r:""),eB.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},f=function(e,t,n){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,v();case 2:return i=r.sent,c=vT.extractPKCEKeyFromStateParam(n),a={data:{code:e,pkce:i.enablePKCE?eB.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&eB.removePKCE(c),r.abrupt("return",u(a).then((function(e){return u({type:"get_sign_out_url"}).then((function(t){return eB.setSignOutURL(t),i.enableOIDCSessionManagement&&g(),I(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},G=function(e,t,n,r){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,l,u,d,s,m,Z,h,b;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,v();case 2:return u=i.sent,i.next=5,o.receivePromptNoneResponse((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",p(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(d=new URL(window.location.href).searchParams.get("error"),s=new URL(window.location.href).searchParams.get("error_description"),!d){i.next=16;break}throw(m=new URL(window.location.href)).searchParams.delete("error"),m.searchParams.delete("error_description"),history.pushState(null,document.title,m.toString()),new CT("SPA-WEB_WORKER_CLIENT-SI-SE01",d,null!=s?s:"");case 16:return i.next=18,J();case 18:if(!i.sent){i.next=23;break}return i.next=21,I();case 21:return u.enableOIDCSessionManagement&&g(),i.abrupt("return",R());case 23:if((null==u?void 0:u.responseMode)===nT.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(c=new URL(window.location.href).searchParams.get(yT))&&void 0!==c?c:"",h=null!==(a=new URL(window.location.href).searchParams.get(XT))&&void 0!==a?a:"",b=null!==(l=new URL(window.location.href).searchParams.get(VT))&&void 0!==l?l:"",eB.removeAuthorizationCode()),!Z||!b){i.next=26;break}return i.abrupt("return",f(Z,h,b));case 26:return i.abrupt("return",X(e).then((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,eB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return i.stop()}}),i)})))},V=function(){return J().then((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||a){t.next=5;break}return n={type:"sign-out"},t.abrupt("return",u(n).then((function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,eB.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=eB.getSignOutURL(),t.next=8,eB.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},W=function(){return u({type:"revoke-access-token"}).then((function(e){return o.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},C=function(){return u({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},v=function(){return u({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return u({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return u({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return u({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return u({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return u({type:"refresh_access-token"})},N=function(e){e&&"function"==typeof e&&(r.requestSuccessCallback=e)},L=function(e){e&&"function"==typeof e&&(r.requestErrorCallback=e)},H=function(e){e&&"function"==typeof e&&(r.requestStartCallback=e)},x=function(e){e&&"function"==typeof e&&(r.requestFinishCallback=e)},U=function(e){return iT(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,v();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,u(c);case 8:i.enableOIDCSessionManagement&&r&&(o.reset(),g());case 9:case"end":return t.stop()}}),t)})))},t.abrupt("return",{disableHttpHandler:h,enableHttpHandler:Z,getBasicUserInfo:R,getDecodedIDToken:S,getIDToken:Y,getOIDCServiceEndpoints:C,httpRequest:s,httpRequestAll:m,initialize:b,isAuthenticated:J,refreshAccessToken:K,requestCustomGrant:d,revokeAccessToken:W,setHttpRequestErrorCallback:L,setHttpRequestFinishCallback:x,setHttpRequestStartCallback:H,setHttpRequestSuccessCallback:N,signIn:G,signOut:V,trySignInSilently:y,updateConfig:U});case 36:case"end":return t.stop()}}),t)})))},FQ={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:RT.SessionStorage},TQ=function(){function e(t){l(this,e),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=t}return d(e,[{key:"_isInitialized",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}
|
|
452
452
|
/**
|
|
453
453
|
* This method returns the instance of the singleton class.
|
|
454
454
|
*
|
|
@@ -487,7 +487,7 @@ function(e){return $F(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
|
|
|
487
487
|
*
|
|
488
488
|
* @preserve
|
|
489
489
|
*/
|
|
490
|
-
function(e){var t;return
|
|
490
|
+
function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this._storage=null!==(t=e.storage)&&void 0!==t?t:RT.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===RT.WebWorker){n.next=15;break}if(this._client){n.next=10;break}return r=e,i=Object.assign({},FQ),n.next=9,NQ(Object.assign(Object.assign({},i),r));case 9:this._client=n.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),n.abrupt("return",Promise.resolve(!0));case 15:if(this._client){n.next=21;break}return c=e,n.next=19,wQ(Object.assign(Object.assign({},FQ),c));case 19:return this._client=n.sent,n.abrupt("return",this._client.initialize().then((function(){return a._onInitialize&&a._onInitialize(!0),a._initialized=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)})));case 21:return n.abrupt("return",Promise.resolve(!0));case 22:case"end":return n.stop()}}),n,this)})))}
|
|
491
491
|
/**
|
|
492
492
|
* This method returns a Promise that resolves with the basic user information obtained from the ID token.
|
|
493
493
|
*
|
|
@@ -507,7 +507,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
507
507
|
* @memberof AsgardeoSPAClient
|
|
508
508
|
*
|
|
509
509
|
* @preserve
|
|
510
|
-
*/},{key:"getBasicUserInfo",value:function(){var e;return
|
|
510
|
+
*/},{key:"getBasicUserInfo",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getBasicUserInfo());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
511
511
|
/**
|
|
512
512
|
* This method initiates the authentication flow. This should be called twice.
|
|
513
513
|
* 1. To initiate the authentication flow.
|
|
@@ -543,7 +543,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
543
543
|
* @memberof AsgardeoSPAClient
|
|
544
544
|
*
|
|
545
545
|
* @preserve
|
|
546
|
-
*/},{key:"signIn",value:function(e,t,n,r){var i;return
|
|
546
|
+
*/},{key:"signIn",value:function(e,t,n,r){var i;return iT(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a=this;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(eB.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){c.next=4;break}return c.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(e,t,n,r).then((function(e){return a._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&a._onSignInCallback(e),e})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(!eB.wasSignInCalled()){t.next=4;break}return t.abrupt("return");case 4:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.trySignInSilently().then((function(e){if(n._onSignInCallback&&e){var t=e;(t.allowedScopes||t.displayName||t.email||t.username)&&n._onSignInCallback(t)}return e})));case 5:case"end":return t.stop()}}),t,this)})))}
|
|
547
547
|
/**
|
|
548
548
|
* This method initiates the sign-out flow.
|
|
549
549
|
*
|
|
@@ -563,7 +563,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
563
563
|
* @memberof AsgardeoSPAClient
|
|
564
564
|
*
|
|
565
565
|
* @preserve
|
|
566
|
-
*/},{key:"signOut",value:function(){var e,t;return
|
|
566
|
+
*/},{key:"signOut",value:function(){var e,t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(e=this._client)||void 0===e?void 0:e.signOut();case 4:if(n.t1=t=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==t;case 8:if(!n.t0){n.next=12;break}n.t2=t,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}
|
|
567
567
|
/**
|
|
568
568
|
* This method sends an API request to a protected endpoint.
|
|
569
569
|
* The access token is automatically attached to the header of the request.
|
|
@@ -600,7 +600,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
600
600
|
* @memberof AsgardeoSPAClient
|
|
601
601
|
*
|
|
602
602
|
* @preserve
|
|
603
|
-
*/},{key:"httpRequest",value:function(e){var t;return
|
|
603
|
+
*/},{key:"httpRequest",value:function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequest(e));case 3:case"end":return n.stop()}}),n,this)})))}
|
|
604
604
|
/**
|
|
605
605
|
* This method sends multiple API requests to a protected endpoint.
|
|
606
606
|
* The access token is automatically attached to the header of the request.
|
|
@@ -647,7 +647,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
647
647
|
* @memberof AsgardeoSPAClient
|
|
648
648
|
*
|
|
649
649
|
* @preserve
|
|
650
|
-
*/},{key:"httpRequestAll",value:function(e){var t;return
|
|
650
|
+
*/},{key:"httpRequestAll",value:function(e){var t;return iT(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequestAll(e));case 3:case"end":return n.stop()}}),n,this)})))}
|
|
651
651
|
/**
|
|
652
652
|
* This method allows you to send a request with a custom grant.
|
|
653
653
|
*
|
|
@@ -678,7 +678,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
678
678
|
* @memberof AsgardeoSPAClient
|
|
679
679
|
*
|
|
680
680
|
* @preserve
|
|
681
|
-
*/},{key:"requestCustomGrant",value:function(e){var t,n;return
|
|
681
|
+
*/},{key:"requestCustomGrant",value:function(e){var t,n;return iT(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(e.id){r.next=9;break}return r.abrupt("return",Promise.reject(new CT("SPA-AUTH_CLIENT-RCG-NF01","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(t=this._client)||void 0===t?void 0:t.requestCustomGrant(e);case 11:return i=r.sent,(c=this._onCustomGrant.get(e.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(e.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}
|
|
682
682
|
/**
|
|
683
683
|
* This method ends a user session. The access token is revoked and the session information is destroyed.
|
|
684
684
|
*
|
|
@@ -698,7 +698,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
698
698
|
* @memberof AsgardeoSPAClient
|
|
699
699
|
*
|
|
700
700
|
* @preserve
|
|
701
|
-
*/},{key:"revokeAccessToken",value:function(){var e;return
|
|
701
|
+
*/},{key:"revokeAccessToken",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.next=4,null===(e=this._client)||void 0===e?void 0:e.revokeAccessToken();case 4:if(n=t.sent,t.t0=this._onEndUserSession,!t.t0){t.next=9;break}return t.next=9,this._onEndUserSession(n);case 9:return t.abrupt("return",n);case 10:case"end":return t.stop()}}),t,this)})))}
|
|
702
702
|
/**
|
|
703
703
|
* This method returns a Promise that resolves with an object containing the service endpoints.
|
|
704
704
|
*
|
|
@@ -718,7 +718,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
718
718
|
* @memberof AsgardeoSPAClient
|
|
719
719
|
*
|
|
720
720
|
* @preserve
|
|
721
|
-
*/},{key:"getOIDCServiceEndpoints",value:function(){var e;return
|
|
721
|
+
*/},{key:"getOIDCServiceEndpoints",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getOIDCServiceEndpoints());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
722
722
|
/**
|
|
723
723
|
* This methods returns the Axios http client.
|
|
724
724
|
*
|
|
@@ -727,7 +727,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
727
727
|
* @memberof AsgardeoSPAClient
|
|
728
728
|
*
|
|
729
729
|
* @preserve
|
|
730
|
-
*/},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==
|
|
730
|
+
*/},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==RT.WebWorker)return this._client.getHttpClient();throw new CT("SPA-AUTH_CLIENT-GHC-IV01","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new CT("SPA-AUTH_CLIENT-GHC-NF02","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}
|
|
731
731
|
/**
|
|
732
732
|
* This method decodes the payload of the id token and returns it.
|
|
733
733
|
*
|
|
@@ -747,7 +747,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
747
747
|
* @memberof AsgardeoSPAClient
|
|
748
748
|
*
|
|
749
749
|
* @preserve
|
|
750
|
-
*/},{key:"getDecodedIDToken",value:function(){var e;return
|
|
750
|
+
*/},{key:"getDecodedIDToken",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getDecodedIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
751
751
|
/**
|
|
752
752
|
* This method return the ID token.
|
|
753
753
|
*
|
|
@@ -763,7 +763,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
763
763
|
* @memberof AsgardeoAuthClient
|
|
764
764
|
*
|
|
765
765
|
* @preserve
|
|
766
|
-
*/},{key:"getIDToken",value:function(){var e;return
|
|
766
|
+
*/},{key:"getIDToken",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getIDToken());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
767
767
|
/**
|
|
768
768
|
* This method return a Promise that resolves with the access token.
|
|
769
769
|
*
|
|
@@ -785,7 +785,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
785
785
|
* @memberof AsgardeoSPAClient
|
|
786
786
|
*
|
|
787
787
|
* @preserve
|
|
788
|
-
*/},{key:"getAccessToken",value:function(){return
|
|
788
|
+
*/},{key:"getAccessToken",value:function(){return iT(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(RT.WebWorker,RT.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new CT("SPA-AUTH_CLIENT-GAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return t=this._client,e.abrupt("return",t.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}
|
|
789
789
|
/**
|
|
790
790
|
* This method refreshes the access token.
|
|
791
791
|
*
|
|
@@ -806,7 +806,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
806
806
|
* @memberof AsgardeoSPAClient
|
|
807
807
|
*
|
|
808
808
|
* @preserve
|
|
809
|
-
*/},{key:"refreshAccessToken",value:function(){var e;return
|
|
809
|
+
*/},{key:"refreshAccessToken",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.refreshAccessToken());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
810
810
|
/**
|
|
811
811
|
* This method specifies if the user is authenticated or not.
|
|
812
812
|
*
|
|
@@ -815,7 +815,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
815
815
|
* @memberof AsgardeoSPAClient
|
|
816
816
|
*
|
|
817
817
|
* @preserve
|
|
818
|
-
*/},{key:"isAuthenticated",value:function(){var e;return
|
|
818
|
+
*/},{key:"isAuthenticated",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.isAuthenticated());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"on",value:function(e,t,n){var r,i,c,a;return iT(this,void 0,void 0,regeneratorRuntime.mark((function o(){var l;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this._isInitialized();case 2:if(!t||"function"!=typeof t){o.next=35;break}o.t0=e,o.next=o.t0===ST.SignIn?6:o.t0===ST.SignOut?8:o.t0===ST.RevokeAccessToken?14:o.t0===ST.Initialize?16:o.t0===ST.HttpRequestError?18:o.t0===ST.HttpRequestFinish?20:o.t0===ST.HttpRequestStart?22:o.t0===ST.HttpRequestSuccess?24:o.t0===ST.CustomGrant?26:o.t0===ST.SignOutFailed?28:32;break;case 6:return this._onSignInCallback=t,o.abrupt("break",33);case 8:return this._onSignOutCallback=t,o.next=11,eB.isSignOutSuccessful();case 11:if(!o.sent){o.next=13;break}this._onSignOutCallback();case 13:return o.abrupt("break",33);case 14:return this._onEndUserSession=t,o.abrupt("break",33);case 16:return this._onInitialize=t,o.abrupt("break",33);case 18:return null===(r=this._client)||void 0===r||r.setHttpRequestErrorCallback(t),o.abrupt("break",33);case 20:return null===(i=this._client)||void 0===i||i.setHttpRequestFinishCallback(t),o.abrupt("break",33);case 22:return null===(c=this._client)||void 0===c||c.setHttpRequestStartCallback(t),o.abrupt("break",33);case 24:return null===(a=this._client)||void 0===a||a.setHttpRequestSuccessCallback(t),o.abrupt("break",33);case 26:return n&&this._onCustomGrant.set(n,t),o.abrupt("break",33);case 28:return this._onSignOutFailedCallback=t,(l=eB.didSignOutFail())&&this._onSignOutFailedCallback(l),o.abrupt("break",33);case 32:throw new CT("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 33:o.next=36;break;case 35:throw new CT("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 36:case"end":return o.stop()}}),o,this)})))}
|
|
819
819
|
/**
|
|
820
820
|
* This method enables callback functions attached to the http client.
|
|
821
821
|
*
|
|
@@ -831,7 +831,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
831
831
|
* @memberof AsgardeoSPAClient
|
|
832
832
|
*
|
|
833
833
|
* @preserve
|
|
834
|
-
*/},{key:"enableHttpHandler",value:function(){var e;return
|
|
834
|
+
*/},{key:"enableHttpHandler",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.enableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
835
835
|
/**
|
|
836
836
|
* This method disables callback functions attached to the http client.
|
|
837
837
|
*
|
|
@@ -847,7 +847,7 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
847
847
|
* @memberof AsgardeoSPAClient
|
|
848
848
|
*
|
|
849
849
|
* @preserve
|
|
850
|
-
*/},{key:"disableHttpHandler",value:function(){var e;return
|
|
850
|
+
*/},{key:"disableHttpHandler",value:function(){var e;return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.disableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}
|
|
851
851
|
/**
|
|
852
852
|
* This method updates the configuration that was passed into the constructor when instantiating this class.
|
|
853
853
|
*
|
|
@@ -867,5 +867,5 @@ function(e){var t;return qF(this,void 0,void 0,regeneratorRuntime.mark((function
|
|
|
867
867
|
* @memberof AsgardeoAuthClient
|
|
868
868
|
*
|
|
869
869
|
* @preserve
|
|
870
|
-
*/},{key:"updateConfig",value:function(e){return
|
|
870
|
+
*/},{key:"updateConfig",value:function(e){return iT(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(this._storage!==RT.WebWorker){t.next=8;break}return n=this._client,t.next=6,n.updateConfig(e);case 6:t.next=11;break;case 8:return r=this._client,t.next=11,r.updateConfig(e);case 11:return t.abrupt("return");case 12:case"end":return t.stop()}}),t,this)})))}}],[{key:"getInstance",value:function(t){var n,r;return t&&(null===(n=this._instances)||void 0===n?void 0:n.get(t))?this._instances.get(t):!t&&(null===(r=this._instances)||void 0===r?void 0:r.get("primaryInstance"))?this._instances.get("primaryInstance"):t?(this._instances.set(t,new e(t)),this._instances.get(t)):(this._instances.set("primaryInstance",new e("primaryInstance")),this._instances.get("primaryInstance"))}}]),e}();TQ._instances=new Map;var BQ=function(e){m(n,I(Worker));var t=X(n);function n(){var e;return l(this,n),(e=t.apply(this,arguments)).onmessage=function(){return null},e}return d(n)}();export{yT as AUTHORIZATION_CODE,HT as AsgardeoAuthClient,CT as AsgardeoAuthException,TQ as AsgardeoSPAClient,vT as AuthenticationUtils,IT as CLAIM_VALIDATION_ERROR,dT as CLIENT_ID_TAG,sT as CLIENT_SECRET_TAG,NT as DataLayer,ST as Hooks,gT as NBF_CLAIM,WT as OIDC_SCOPE,hT as PKCE_CODE_VERIFIER,bT as PKCE_SEPARATOR,ZT as REFRESH_TOKEN_TIMER,nT as ResponseMode,uT as SCOPE_TAG,XT as SESSION_STATE,GT as SIGN_OUT_SUCCESS_PARAM,fT as SIGN_OUT_URL,eB as SPAUtils,VT as STATE,pT as SUPPORTED_SIGNATURE_ALGORITHMS,RT as Storage,aT as Stores,oT as TOKEN_TAG,lT as USERNAME_TAG,BQ as WebWorkerClass};
|
|
871
871
|
//# sourceMappingURL=asgardeo-spa.production.esm.js.map
|