@asgardeo/auth-spa 0.2.20 → 0.3.0

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.
Files changed (54) hide show
  1. package/README.md +111 -89
  2. package/dist/asgardeo-spa.production.esm.js +19 -16
  3. package/dist/asgardeo-spa.production.esm.js.map +1 -1
  4. package/dist/asgardeo-spa.production.js +19 -16
  5. package/dist/asgardeo-spa.production.js.map +1 -1
  6. package/dist/asgardeo-spa.production.min.js +1 -1
  7. package/dist/asgardeo-spa.production.min.js.map +1 -1
  8. package/dist/polyfilled/asgardeo-spa.production.esm.js +42 -39
  9. package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
  10. package/dist/polyfilled/asgardeo-spa.production.js +42 -39
  11. package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
  12. package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
  13. package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
  14. package/dist/src/client.d.ts +7 -4
  15. package/dist/src/client.d.ts.map +1 -1
  16. package/dist/src/client.js +14 -11
  17. package/dist/src/client.js.map +1 -1
  18. package/dist/src/clients/main-thread-client.d.ts.map +1 -1
  19. package/dist/src/clients/main-thread-client.js +40 -34
  20. package/dist/src/clients/main-thread-client.js.map +1 -1
  21. package/dist/src/clients/web-worker-client.d.ts.map +1 -1
  22. package/dist/src/clients/web-worker-client.js +7 -9
  23. package/dist/src/clients/web-worker-client.js.map +1 -1
  24. package/dist/src/models/client.d.ts +2 -2
  25. package/dist/src/models/client.d.ts.map +1 -1
  26. package/dist/src/utils/crypto-utils.d.ts +2 -4
  27. package/dist/src/utils/crypto-utils.d.ts.map +1 -1
  28. package/dist/src/utils/crypto-utils.js +3 -6
  29. package/dist/src/utils/crypto-utils.js.map +1 -1
  30. package/dist/src/worker/client.worker.d.ts.map +1 -1
  31. package/dist/src/worker/client.worker.js +3 -3
  32. package/dist/src/worker/client.worker.js.map +1 -1
  33. package/dist/src/worker/worker-core.d.ts.map +1 -1
  34. package/dist/src/worker/worker-core.js +48 -42
  35. package/dist/src/worker/worker-core.js.map +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +2 -2
  38. package/src/client.ts +24 -43
  39. package/src/clients/main-thread-client.ts +63 -75
  40. package/src/clients/web-worker-client.ts +20 -30
  41. package/src/models/client.ts +2 -3
  42. package/src/utils/crypto-utils.ts +15 -19
  43. package/src/worker/client.worker.ts +5 -10
  44. package/src/worker/worker-core.ts +81 -89
  45. package/dist/src/exception/exception.d.ts +0 -27
  46. package/dist/src/exception/exception.d.ts.map +0 -1
  47. package/dist/src/exception/exception.js +0 -30
  48. package/dist/src/exception/exception.js.map +0 -1
  49. package/dist/src/exception/index.d.ts +0 -19
  50. package/dist/src/exception/index.d.ts.map +0 -1
  51. package/dist/src/exception/index.js +0 -19
  52. package/dist/src/exception/index.js.map +0 -1
  53. package/src/exception/exception.ts +0 -44
  54. package/src/exception/index.ts +0 -19
@@ -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 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 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=[],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)||f(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 V(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)||f(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 f(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=f(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}},K=!Y((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),J=!Y((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),L=J,N=Function.prototype.call,H=L?N.bind(N):function(){return N.apply(N,arguments)},x={},k={}.propertyIsEnumerable,U=Object.getOwnPropertyDescriptor,F=U&&!k.call({1:2},1);x.f=F?function(e){var t=U(this,e);return!!t&&t.enumerable}:k;var A,w,T=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},B=J,z=Function.prototype,j=z.bind,P=z.call,Q=B&&j.bind(P,P),M=B?function(e){return e&&Q(e)}:function(e){return e&&function(){return P.apply(e,arguments)}},E=M,D=E({}.toString),O=E("".slice),_=function(e){return O(D(e),8,-1)},q=M,$=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=M({}.isPrototypeOf),Ie=be("navigator","userAgent")||"",ge=R,ye=Ie,Xe=ge.process,Ge=ge.Deno,Ve=Xe&&Xe.versions||Ge&&Ge.version,fe=Ve&&Ve.v8;fe&&(w=(A=fe.split("."))[0]>0&&A[0]<4?1:+(A[0]+A[1])),!w&&ye&&(!(A=ye.match(/Edge\/(\d+)/))||A[1]>=74)&&(A=ye.match(/Chrome\/(\d+)/))&&(w=+A[1]);var We=w,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,Ke=ue,Je=pe,Le=Se,Ne=R.Object,He=Le?function(e){return"symbol"==c(e)}:function(e){var t=Ye("Symbol");return Ke(t)&&Je(t.prototype,Ne(e))},xe=R.String,ke=function(e){try{return xe(e)}catch(e){return"Object"}},Ue=ue,Fe=ke,Ae=R.TypeError,we=function(e){if(Ue(e))return e;throw Ae(Fe(e)+" is not a function")},Te=we,Be=function(e,t){var n=e[t];return null==n?void 0:Te(n)},ze=H,je=ue,Pe=se,Qe=R.TypeError,Me=function(e,t){var n,r;if("string"===t&&je(n=e.toString)&&!Pe(r=ze(n,e)))return r;if(je(n=e.valueOf)&&!Pe(r=ze(n,e)))return r;if("string"!==t&&je(n=e.toString)&&!Pe(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.21.1",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"});var tt=ce,nt=R.Object,rt=function(e){return nt(tt(e))},it=rt,ct=M({}.hasOwnProperty),at=Object.hasOwn||function(e,t){return ct(it(e),t)},ot=M,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,Gt=It?yt:yt&&yt.withoutSetter||bt,Vt=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]},ft=H,Wt=se,Ct=He,vt=Be,Rt=Me,St=Vt,Yt=R.TypeError,Kt=St("toPrimitive"),Jt=function(e,t){if(!Wt(e)||Ct(e))return e;var n,r=vt(e,Kt);if(r){if(void 0===t&&(t="default"),n=ft(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=Jt,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),Ft=function(e){return Ut?kt.createElement(e):{}},At=Ft,wt=!K&&!Y((function(){return 7!=Object.defineProperty(At("div"),"a",{get:function(){return 7}}).a})),Tt=K,Bt=H,zt=x,jt=T,Pt=le,Qt=Ht,Mt=at,Et=wt,Dt=Object.getOwnPropertyDescriptor;S.f=Tt?Dt:function(e,t){if(e=Pt(e),t=Qt(t),Et)try{return Dt(e,t)}catch(e){}if(Mt(e,t))return jt(!Bt(zt.f,e,t),e[t])};var Ot={},_t=K&&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=K,cn=wt,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=K?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=M(Function.toString);pn(In.inspectSource)||(In.inspectSource=function(e){return gn(e)});var yn,Xn,Gn,Vn=In.inspectSource,fn=ue,Wn=Vn,Cn=R.WeakMap,vn=fn(Cn)&&/native code/.test(Wn(Cn)),Rn=Ee.exports,Sn=st,Yn=Rn("keys"),Kn=function(e){return Yn[e]||(Yn[e]=Sn(e))},Jn={},Ln=vn,Nn=R,Hn=M,xn=se,kn=hn,Un=at,Fn=$e,An=Kn,wn=Jn,Tn=Nn.TypeError,Bn=Nn.WeakMap;if(Ln||Fn.state){var zn=Fn.state||(Fn.state=new Bn),jn=Hn(zn.get),Pn=Hn(zn.has),Qn=Hn(zn.set);yn=function(e,t){if(Pn(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 Pn(zn,e)}}else{var Mn=An("state");wn[Mn]=!0,yn=function(e,t){if(Un(e,Mn))throw new Tn("Object already initialized");return t.facade=e,kn(e,Mn,t),t},Xn=function(e){return Un(e,Mn)?e[Mn]:{}},Gn=function(e){return Un(e,Mn)}}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}}},Dn=K,On=at,_n=Function.prototype,qn=Dn&&Object.getOwnPropertyDescriptor,$n=On(_n,"name"),er={EXISTS:$n,PROPER:$n&&"something"===function(){}.name,CONFIGURABLE:$n&&(!Dn||Dn&&qn(_n,"name").configurable)},tr=R,nr=ue,rr=at,ir=hn,cr=_e,ar=Vn,or=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,a=!!r&&!!r.enumerable,o=!!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")||or&&n.name!==l)&&ir(n,"name",l),(i=ur(n)).source||(i.source=dr.join("string"==typeof l?l:""))),e!==tr?(c?!o&&e[t]&&(a=!0):delete e[t],a?e[t]=n:ir(e,t,n)):a?e[t]=n:cr(t,n)})(Function.prototype,"toString",(function(){return nr(this)&&lr(this).source||ar(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},Vr=Gr,fr=function(e){return Vr(e.length)},Wr=le,Cr=gr,vr=fr,Rr=function(e){return function(t,n,r){var i,c=Wr(t),a=vr(c),o=Cr(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}},Sr={includes:Rr(!0),indexOf:Rr(!1)},Yr=at,Kr=le,Jr=Sr.indexOf,Lr=Jn,Nr=M([].push),Hr=function(e,t){var n,r=Kr(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++])&&(~Jr(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 Fr={};Fr.f=Object.getOwnPropertySymbols;var Ar=be,wr=sr,Tr=Fr,Br=nn,zr=M([].concat),jr=Ar("Reflect","ownKeys")||function(e){var t=wr.f(Br(e)),n=Tr.f;return n?zr(t,n(e)):t},Pr=at,Qr=jr,Mr=S,Er=Ot,Dr=function(e,t,n){for(var r=Qr(t),i=Er.f,c=Mr.f,a=0;a<r.length;a++){var o=r[a];Pr(e,o)||n&&Pr(n,o)||i(e,o,c(t,o))}},Or=Y,_r=ue,qr=/#|\.prototype\./,$r=function(e,t){var n=ti[ei(e)];return n==ri||n!=ni&&(_r(t)?Or(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,ai=S.f,oi=hn,li=bn.exports,ui=_e,di=Dr,si=ii,mi=function(e,t){var n,r,i,a,o,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(a=t[r],i=e.noTargetGet?(o=ai(n,r))&&o.value:n[r],!si(u?r:l+(d?".":"#")+r,e.forced)&&void 0!==i){if(c(a)==c(i))continue;di(a,i)}(e.sham||i&&i.sham)&&oi(a,"sham",!0),li(n,r,a,e)}},Zi=J,hi=Function.prototype,bi=hi.apply,pi=hi.call,Ii="object"==("undefined"==typeof Reflect?"undefined":c(Reflect))&&Reflect.apply||(Zi?pi.bind(bi):function(){return pi.apply(bi,arguments)}),gi=_,yi=Array.isArray||function(e){return"Array"==gi(e)},Xi={};Xi[Vt("toStringTag")]="z";var Gi="[object z]"===String(Xi),Vi=R,fi=Gi,Wi=ue,Ci=_,vi=Vt("toStringTag"),Ri=Vi.Object,Si="Arguments"==Ci(function(){return arguments}()),Yi=fi?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},Ki=Yi,Ji=R.String,Li=function(e){if("Symbol"===Ki(e))throw TypeError("Cannot convert a Symbol value to a string");return Ji(e)},Ni={},Hi=Hr,xi=xr,ki=Object.keys||function(e){return Hi(e,xi)},Ui=K,Fi=_t,Ai=Ot,wi=nn,Ti=le,Bi=ki;Ni.f=Ui&&!Fi?Object.defineProperties:function(e,t){wi(e);for(var n,r=Ti(t),i=Bi(t),c=i.length,a=0;c>a;)Ai.f(e,n=i[a++],r[n]);return e};var zi,ji=be("document","documentElement"),Pi=nn,Qi=Ni,Mi=xr,Ei=Jn,Di=ji,Oi=Ft,_i=Kn("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=Mi.length;n--;)delete tc.prototype[Mi[n]];return tc()};Ei[_i]=!0;var nc=Object.create||function(e,t){var n;return null!==e?(qi.prototype=Pi(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=gr,uc=fr,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=sr.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=M([].slice),Xc={},Gc=Vt;Xc.f=Gc;var Vc=R,fc=at,Wc=Xc,Cc=Ot.f,vc=function(e){var t=Vc.Symbol||(Vc.Symbol={});fc(t,e)||Cc(t,e,{value:Wc.f(e)})},Rc=Ot.f,Sc=at,Yc=Vt("toStringTag"),Kc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Sc(e,Yc)&&Rc(e,Yc,{configurable:!0,value:t})},Jc=we,Lc=J,Nc=M(M.bind),Hc=function(e,t){return Jc(e),void 0===t?e:Lc?Nc(e,t):function(){return e.apply(t,arguments)}},xc=M,kc=Y,Uc=ue,Fc=Yi,Ac=Vn,wc=function(){},Tc=[],Bc=be("Reflect","construct"),zc=/^\s*(?:class|function)\b/,jc=xc(zc.exec),Pc=!zc.exec(wc),Qc=function(e){if(!Uc(e))return!1;try{return Bc(wc,Tc,e),!0}catch(e){return!1}},Mc=function(e){if(!Uc(e))return!1;switch(Fc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Pc||!!jc(zc,Ac(e))}catch(e){return!0}};Mc.sham=!0;var Ec=!Bc||kc((function(){var e;return Qc(Qc.call)||!Qc(Object)||!Qc((function(){e=!0}))||e}))?Mc:Qc,Dc=R,Oc=yi,_c=Ec,qc=se,$c=Vt("species"),ea=Dc.Array,ta=function(e){var t;return Oc(e)&&(t=e.constructor,(_c(t)&&(t===ea||Oc(t.prototype))||qc(t)&&null===(t=t[$c]))&&(t=void 0)),void 0===t?ea:t},na=function(e,t){return new(ta(e))(0===t?0:t)},ra=Hc,ia=re,ca=rt,aa=fr,oa=na,la=M([].push),ua=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=ca(l),b=ia(h),p=ra(u,d),I=aa(b),g=0,y=s||oa,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:la(X,m)}else switch(e){case 4:return!1;case 7:la(X,m)}return c?-1:r||i?i:X}},da={forEach:ua(0),map:ua(1),filter:ua(2),some:ua(3),every:ua(4),find:ua(5),findIndex:ua(6),filterReject:ua(7)},sa=mi,ma=R,Za=be,ha=Ii,ba=H,pa=M,Ia=K,ga=Re,ya=Y,Xa=at,Ga=yi,Va=ue,fa=se,Wa=pe,Ca=He,va=nn,Ra=rt,Sa=le,Ya=Ht,Ka=Li,Ja=T,La=nc,Na=ki,Ha=sr,xa=rc,ka=Fr,Ua=S,Fa=Ot,Aa=Ni,wa=x,Ta=yc,Ba=bn.exports,za=Ee.exports,ja=Jn,Pa=st,Qa=Vt,Ma=Xc,Ea=vc,Da=Kc,Oa=En,_a=da.forEach,qa=Kn("hidden"),$a=Qa("toPrimitive"),eo=Oa.set,to=Oa.getterFor("Symbol"),no=Object.prototype,ro=ma.Symbol,io=ro&&ro.prototype,co=ma.TypeError,ao=ma.QObject,oo=Za("JSON","stringify"),lo=Ua.f,uo=Fa.f,so=xa.f,mo=wa.f,Zo=pa([].push),ho=za("symbols"),bo=za("op-symbols"),po=za("string-to-symbol-registry"),Io=za("symbol-to-string-registry"),go=za("wks"),yo=!ao||!ao.prototype||!ao.prototype.findChild,Xo=Ia&&ya((function(){return 7!=La(uo({},"a",{get:function(){return uo(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=lo(no,t);r&&delete no[t],uo(e,t,n),r&&e!==no&&uo(no,t,r)}:uo,Go=function(e,t){var n=ho[e]=La(io);return eo(n,{type:"Symbol",tag:e,description:t}),Ia||(n.description=t),n},Vo=function(e,t,n){e===no&&Vo(bo,t,n),va(e);var r=Ya(t);return va(n),Xa(ho,r)?(n.enumerable?(Xa(e,qa)&&e[qa][r]&&(e[qa][r]=!1),n=La(n,{enumerable:Ja(0,!1)})):(Xa(e,qa)||uo(e,qa,Ja(1,{})),e[qa][r]=!0),Xo(e,r,n)):uo(e,r,n)},fo=function(e,t){va(e);var n=Sa(t),r=Na(n).concat(Ro(n));return _a(r,(function(t){Ia&&!ba(Wo,n,t)||Vo(e,t,n[t])})),e},Wo=function(e){var t=Ya(e),n=ba(mo,this,t);return!(this===no&&Xa(ho,t)&&!Xa(bo,t))&&(!(n||!Xa(this,t)||!Xa(ho,t)||Xa(this,qa)&&this[qa][t])||n)},Co=function(e,t){var n=Sa(e),r=Ya(t);if(n!==no||!Xa(ho,r)||Xa(bo,r)){var i=lo(n,r);return!i||!Xa(ho,r)||Xa(n,qa)&&n[qa][r]||(i.enumerable=!0),i}},vo=function(e){var t=so(Sa(e)),n=[];return _a(t,(function(e){Xa(ho,e)||Xa(ja,e)||Zo(n,e)})),n},Ro=function(e){var t=e===no,n=so(t?bo:Sa(e)),r=[];return _a(n,(function(e){!Xa(ho,e)||t&&!Xa(no,e)||Zo(r,ho[e])})),r};(ga||(Ba(io=(ro=function(){if(Wa(io,this))throw co("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Ka(arguments[0]):void 0,t=Pa(e),n=function e(n){this===no&&ba(e,bo,n),Xa(this,qa)&&Xa(this[qa],t)&&(this[qa][t]=!1),Xo(this,t,Ja(1,n))};return Ia&&yo&&Xo(no,t,{configurable:!0,set:n}),Go(t,e)}).prototype,"toString",(function(){return to(this).tag})),Ba(ro,"withoutSetter",(function(e){return Go(Pa(e),e)})),wa.f=Wo,Fa.f=Vo,Aa.f=fo,Ua.f=Co,Ha.f=xa.f=vo,ka.f=Ro,Ma.f=function(e){return Go(Qa(e),e)},Ia&&(uo(io,"description",{configurable:!0,get:function(){return to(this).description}}),Ba(no,"propertyIsEnumerable",Wo,{unsafe:!0}))),sa({global:!0,wrap:!0,forced:!ga,sham:!ga},{Symbol:ro}),_a(Na(go),(function(e){Ea(e)})),sa({target:"Symbol",stat:!0,forced:!ga},{for:function(e){var t=Ka(e);if(Xa(po,t))return po[t];var n=ro(t);return po[t]=n,Io[n]=t,n},keyFor:function(e){if(!Ca(e))throw co(e+" is not a symbol");if(Xa(Io,e))return Io[e]},useSetter:function(){yo=!0},useSimple:function(){yo=!1}}),sa({target:"Object",stat:!0,forced:!ga,sham:!Ia},{create:function(e,t){return void 0===t?La(e):fo(La(e),t)},defineProperty:Vo,defineProperties:fo,getOwnPropertyDescriptor:Co}),sa({target:"Object",stat:!0,forced:!ga},{getOwnPropertyNames:vo,getOwnPropertySymbols:Ro}),sa({target:"Object",stat:!0,forced:ya((function(){ka.f(1)}))},{getOwnPropertySymbols:function(e){return ka.f(Ra(e))}}),oo)&&sa({target:"JSON",stat:!0,forced:!ga||ya((function(){var e=ro();return"[null]"!=oo([e])||"{}"!=oo({a:e})||"{}"!=oo(Object(e))}))},{stringify:function(e,t,n){var r=Ta(arguments),i=t;if((fa(t)||void 0!==e)&&!Ca(e))return Ga(t)||(t=function(e,t){if(Va(i)&&(t=ba(i,this,e,t)),!Ca(t))return t}),r[1]=t,ha(oo,null,r)}});if(!io[$a]){var So=io.valueOf;Ba(io,$a,(function(e){return ba(So,this)}))}Da(ro,"Symbol"),ja[qa]=!0;var Yo=mi,Ko=K,Jo=R,Lo=M,No=at,Ho=ue,xo=pe,ko=Li,Uo=Ot.f,Fo=Dr,Ao=Jo.Symbol,wo=Ao&&Ao.prototype;if(Ko&&Ho(Ao)&&(!("description"in wo)||void 0!==Ao().description)){var To={},Bo=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:ko(arguments[0]),t=xo(wo,this)?new Ao(e):void 0===e?Ao():Ao(e);return""===e&&(To[t]=!0),t};Fo(Bo,Ao),Bo.prototype=wo,wo.constructor=Bo;var zo="Symbol(test)"==String(Ao("test")),jo=Lo(wo.toString),Po=Lo(wo.valueOf),Qo=/^Symbol\((.*)\)[^)]+$/,Mo=Lo("".replace),Eo=Lo("".slice);Uo(wo,"description",{configurable:!0,get:function(){var e=Po(this),t=jo(e);if(No(To,e))return"";var n=zo?Eo(t,7,-1):Mo(t,Qo,"$1");return""===n?void 0:n}}),Yo({global:!0,forced:!0},{Symbol:Bo})}vc("asyncIterator"),vc("hasInstance"),vc("isConcatSpreadable"),vc("iterator"),vc("match"),vc("matchAll"),vc("replace"),vc("search"),vc("species"),vc("split"),vc("toPrimitive"),vc("toStringTag"),vc("unscopables");var Do=Y,Oo=We,_o=Vt("species"),qo=function(e){return Oo>=51||!Do((function(){var t=[];return(t.constructor={})[_o]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$o=mi,el=R,tl=Y,nl=yi,rl=se,il=rt,cl=fr,al=oc,ol=na,ll=qo,ul=We,dl=Vt("isConcatSpreadable"),sl=el.TypeError,ml=ul>=51||!tl((function(){var e=[];return e[dl]=!1,e.concat()[0]!==e})),Zl=ll("concat"),hl=function(e){if(!rl(e))return!1;var t=e[dl];return void 0!==t?!!t:nl(e)};$o({target:"Array",proto:!0,forced:!ml||!Zl},{concat:function(e){var t,n,r,i,c,a=il(this),o=ol(a,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(hl(c=-1===t?a:arguments[t])){if(l+(i=cl(c))>9007199254740991)throw sl("Maximum allowed index exceeded");for(n=0;n<i;n++,l++)n in c&&al(o,l,c[n])}else{if(l>=9007199254740991)throw sl("Maximum allowed index exceeded");al(o,l++,c)}return o.length=l,o}});var bl=rt,pl=gr,Il=fr,gl=Math.min,yl=[].copyWithin||function(e,t){var n=bl(this),r=Il(n),i=pl(e,r),c=pl(t,r),a=arguments.length>2?arguments[2]:void 0,o=gl((void 0===a?r:pl(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},Xl=nc,Gl=Ot,Vl=Vt("unscopables"),fl=Array.prototype;null==fl[Vl]&&Gl.f(fl,Vl,{configurable:!0,value:Xl(null)});var Wl=function(e){fl[Vl][e]=!0},Cl=Wl;mi({target:"Array",proto:!0},{copyWithin:yl}),Cl("copyWithin");var vl=rt,Rl=gr,Sl=fr,Yl=function(e){for(var t=vl(this),n=Sl(t),r=arguments.length,i=Rl(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:Rl(c,n);a>i;)t[i++]=e;return t},Kl=Wl;mi({target:"Array",proto:!0},{fill:Yl}),Kl("fill");var Jl=da.filter;mi({target:"Array",proto:!0,forced:!qo("filter")},{filter:function(e){return Jl(this,e,arguments.length>1?arguments[1]:void 0)}});var Ll=mi,Nl=da.find,Hl=Wl,xl=!0;"find"in[]&&Array(1).find((function(){xl=!1})),Ll({target:"Array",proto:!0,forced:xl},{find:function(e){return Nl(this,e,arguments.length>1?arguments[1]:void 0)}}),Hl("find");var kl=mi,Ul=da.findIndex,Fl=Wl,Al=!0;"findIndex"in[]&&Array(1).findIndex((function(){Al=!1})),kl({target:"Array",proto:!0,forced:Al},{findIndex:function(e){return Ul(this,e,arguments.length>1?arguments[1]:void 0)}}),Fl("findIndex");var wl=yi,Tl=fr,Bl=Hc,zl=R.TypeError,jl=function e(t,n,r,i,c,a,o,l){for(var u,d=c,s=0,m=!!o&&Bl(o,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],a>0&&wl(u))d=e(t,n,u,Tl(u),d,a-1)-1;else{if(d>=9007199254740991)throw zl("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Pl=jl,Ql=rt,Ml=fr,El=hr,Dl=na;mi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Ql(this),n=Ml(t),r=Dl(t,0);return r.length=Pl(r,t,t,n,0,void 0===e?1:El(e)),r}});var Ol=jl,_l=we,ql=rt,$l=fr,eu=na;mi({target:"Array",proto:!0},{flatMap:function(e){var t,n=ql(this),r=$l(n);return _l(e),(t=eu(n,0)).length=Ol(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var tu=H,nu=nn,ru=Be,iu=function(e,t,n){var r,i;nu(e);try{if(!(r=ru(e,"return"))){if("throw"===t)throw n;return n}r=tu(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return nu(r),n},cu=nn,au=iu,ou={},lu=ou,uu=Vt("iterator"),du=Array.prototype,su=function(e){return void 0!==e&&(lu.Array===e||du[uu]===e)},mu=Yi,Zu=Be,hu=ou,bu=Vt("iterator"),pu=function(e){if(null!=e)return Zu(e,bu)||Zu(e,"@@iterator")||hu[mu(e)]},Iu=H,gu=we,yu=nn,Xu=ke,Gu=pu,Vu=R.TypeError,fu=function(e,t){var n=arguments.length<2?Gu(e):t;if(gu(n))return yu(Iu(n,e));throw Vu(Xu(e)+" is not iterable")},Wu=Hc,Cu=H,vu=rt,Ru=function(e,t,n,r){try{return r?t(cu(n)[0],n[1]):t(n)}catch(t){au(e,"throw",t)}},Su=su,Yu=Ec,Ku=fr,Ju=oc,Lu=fu,Nu=pu,Hu=R.Array,xu=function(e){var t=vu(e),n=Yu(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Wu(i,r>2?arguments[2]:void 0));var a,o,l,u,d,s,m=Nu(t),Z=0;if(!m||this==Hu&&Su(m))for(a=Ku(t),o=n?new this(a):Hu(a);a>Z;Z++)s=c?i(t[Z],Z):t[Z],Ju(o,Z,s);else for(d=(u=Lu(t,m)).next,o=n?new this:[];!(l=Cu(d,u)).done;Z++)s=c?Ru(u,i,[l.value,Z],!0):l.value,Ju(o,Z,s);return o.length=Z,o},ku=Vt("iterator"),Uu=!1;try{var Fu=0,Au={next:function(){return{done:!!Fu++}},return:function(){Uu=!0}};Au[ku]=function(){return this},Array.from(Au,(function(){throw 2}))}catch(e){}var wu=function(e,t){if(!t&&!Uu)return!1;var n=!1;try{var r={};r[ku]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Tu=xu;mi({target:"Array",stat:!0,forced:!wu((function(e){Array.from(e)}))},{from:Tu});var Bu=Sr.includes,zu=Wl;mi({target:"Array",proto:!0},{includes:function(e){return Bu(this,e,arguments.length>1?arguments[1]:void 0)}}),zu("includes");var ju,Pu,Qu,Mu=!Y((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Eu=R,Du=at,Ou=ue,_u=rt,qu=Mu,$u=Kn("IE_PROTO"),ed=Eu.Object,td=ed.prototype,nd=qu?ed.getPrototypeOf:function(e){var t=_u(e);if(Du(t,$u))return t[$u];var n=t.constructor;return Ou(n)&&t instanceof n?n.prototype:t instanceof ed?td:null},rd=Y,id=ue,cd=nd,ad=bn.exports,od=Vt("iterator"),ld=!1;[].keys&&("next"in(Qu=[].keys())?(Pu=cd(cd(Qu)))!==Object.prototype&&(ju=Pu):ld=!0);var ud=null==ju||rd((function(){var e={};return ju[od].call(e)!==e}));ud&&(ju={}),id(ju[od])||ad(ju,od,(function(){return this}));var dd={IteratorPrototype:ju,BUGGY_SAFARI_ITERATORS:ld},sd=dd.IteratorPrototype,md=nc,Zd=T,hd=Kc,bd=ou,pd=function(){return this},Id=function(e,t,n,r){var i=t+" Iterator";return e.prototype=md(sd,{next:Zd(+!r,n)}),hd(e,i,!1),bd[i]=pd,e},gd=R,yd=ue,Xd=gd.String,Gd=gd.TypeError,Vd=function(e){if("object"==c(e)||yd(e))return e;throw Gd("Can't set "+Xd(e)+" as a prototype")},fd=M,Wd=nn,Cd=Vd,vd=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=fd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Wd(n),Cd(r),t?e(n,r):n.__proto__=r,n}}():void 0),Rd=mi,Sd=H,Yd=er,Kd=ue,Jd=Id,Ld=nd,Nd=vd,Hd=Kc,xd=hn,kd=bn.exports,Ud=ou,Fd=Yd.PROPER,Ad=Yd.CONFIGURABLE,wd=dd.IteratorPrototype,Td=dd.BUGGY_SAFARI_ITERATORS,Bd=Vt("iterator"),zd=function(){return this},jd=function(e,t,n,r,i,c,a){Jd(n,t,r);var o,l,u,d=function(e){if(e===i&&b)return b;if(!Td&&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[Bd]||Z["@@iterator"]||i&&Z[i],b=!Td&&h||d(i),p="Array"==t&&Z.entries||h;if(p&&(o=Ld(p.call(new e)))!==Object.prototype&&o.next&&(Ld(o)!==wd&&(Nd?Nd(o,wd):Kd(o[Bd])||kd(o,Bd,zd)),Hd(o,s,!0)),Fd&&"values"==i&&h&&"values"!==h.name&&(Ad?xd(Z,"name","values"):(m=!0,b=function(){return Sd(h,this)})),i)if(l={values:d("values"),keys:c?b:d("keys"),entries:d("entries")},a)for(u in l)(Td||m||!(u in Z))&&kd(Z,u,l[u]);else Rd({target:t,proto:!0,forced:Td||m},l);return Z[Bd]!==b&&kd(Z,Bd,b,{name:i}),Ud[t]=b,l},Pd=le,Qd=Wl,Md=ou,Ed=En,Dd=Ot.f,Od=jd,_d=K,qd=Ed.set,$d=Ed.getterFor("Array Iterator"),es=Od(Array,"Array",(function(e,t){qd(this,{type:"Array Iterator",target:Pd(e),index:0,kind:t})}),(function(){var e=$d(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"),ts=Md.Arguments=Md.Array;if(Qd("keys"),Qd("values"),Qd("entries"),_d&&"values"!==ts.name)try{Dd(ts,"name",{value:"values"})}catch(e){}var ns=Y,rs=function(e,t){var n=[][e];return!!n&&ns((function(){n.call(null,t||function(){return 1},1)}))},is=mi,cs=re,as=le,os=rs,ls=M([].join),us=cs!=Object,ds=os("join",",");is({target:"Array",proto:!0,forced:us||!ds},{join:function(e){return ls(as(this),void 0===e?",":e)}});var ss=da.map;mi({target:"Array",proto:!0,forced:!qo("map")},{map:function(e){return ss(this,e,arguments.length>1?arguments[1]:void 0)}});var ms=mi,Zs=Y,hs=Ec,bs=oc,ps=R.Array;ms({target:"Array",stat:!0,forced:Zs((function(){function e(){}return!(ps.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(hs(this)?this:ps)(t);t>e;)bs(n,e,arguments[e++]);return n.length=t,n}});var Is=mi,gs=R,ys=yi,Xs=Ec,Gs=se,Vs=gr,fs=fr,Ws=le,Cs=oc,vs=Vt,Rs=yc,Ss=qo("slice"),Ys=vs("species"),Ks=gs.Array,Js=Math.max;Is({target:"Array",proto:!0,forced:!Ss},{slice:function(e,t){var n,r,i,c=Ws(this),a=fs(c),o=Vs(e,a),l=Vs(void 0===t?a:t,a);if(ys(c)&&(n=c.constructor,(Xs(n)&&(n===Ks||ys(n.prototype))||Gs(n)&&null===(n=n[Ys]))&&(n=void 0),n===Ks||void 0===n))return Rs(c,o,l);for(r=new(void 0===n?Ks:n)(Js(l-o,0)),i=0;o<l;o++,i++)o in c&&Cs(r,i,c[o]);return r.length=i,r}});var Ls=Zc,Ns=Math.floor,Hs=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},xs=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},ks=function e(t,n){var r=t.length,i=Ns(r/2);return r<8?Hs(t,n):xs(t,e(Ls(t,0,i),n),e(Ls(t,i),n),n)},Us=Ie.match(/firefox\/(\d+)/i),Fs=!!Us&&+Us[1],As=/MSIE|Trident/.test(Ie),ws=Ie.match(/AppleWebKit\/(\d+)\./),Ts=!!ws&&+ws[1],Bs=mi,zs=M,js=we,Ps=rt,Qs=fr,Ms=Li,Es=Y,Ds=ks,Os=rs,_s=Fs,qs=As,$s=We,em=Ts,tm=[],nm=zs(tm.sort),rm=zs(tm.push),im=Es((function(){tm.sort(void 0)})),cm=Es((function(){tm.sort(null)})),am=Os("sort"),om=!Es((function(){if($s)return $s<70;if(!(_s&&_s>3)){if(qs)return!0;if(em)return em<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++)tm.push({k:t+r,v:n})}for(tm.sort((function(e,t){return t.v-e.v})),r=0;r<tm.length;r++)t=tm[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Bs({target:"Array",proto:!0,forced:im||!cm||!am||!om},{sort:function(e){void 0!==e&&js(e);var t=Ps(this);if(om)return void 0===e?nm(t):nm(t,e);var n,r,i=[],c=Qs(t);for(r=0;r<c;r++)r in t&&rm(i,t[r]);for(Ds(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:Ms(t)>Ms(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var lm=be,um=Ot,dm=K,sm=Vt("species"),mm=function(e){var t=lm(e),n=um.f;dm&&t&&!t[sm]&&n(t,sm,{configurable:!0,get:function(){return this}})};mm("Array");var Zm=mi,hm=R,bm=gr,pm=hr,Im=fr,gm=rt,ym=na,Xm=oc,Gm=qo("splice"),Vm=hm.TypeError,fm=Math.max,Wm=Math.min;Zm({target:"Array",proto:!0,forced:!Gm},{splice:function(e,t){var n,r,i,c,a,o,l=gm(this),u=Im(l),d=bm(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=Wm(fm(pm(t),0),u-d)),u+n-r>9007199254740991)throw Vm("Maximum allowed length exceeded");for(i=ym(l,r),c=0;c<r;c++)(a=d+c)in l&&Xm(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}}),Wl("flat"),Wl("flatMap");var Cm="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,vm=bn.exports,Rm=function(e,t,n){for(var r in t)vm(e,r,t[r],n);return e},Sm=pe,Ym=R.TypeError,Km=function(e,t){if(Sm(t,e))return e;throw Ym("Incorrect invocation")},Jm=hr,Lm=Gr,Nm=R.RangeError,Hm=function(e){if(void 0===e)return 0;var t=Jm(e),n=Lm(t);if(t!==n)throw Nm("Wrong length or index");return n},xm=R.Array,km=Math.abs,Um=Math.pow,Fm=Math.floor,Am=Math.log,wm=Math.LN2,Tm={pack:function(e,t,n){var r,i,c,a=xm(n),o=8*n-t-1,l=(1<<o)-1,u=l>>1,d=23===t?Um(2,-24)-Um(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=km(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=Fm(Am(e)/wm),e*(c=Um(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*Um(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*Um(2,t),r+=u):(i=e*Um(2,u-1)*Um(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+=Um(2,t),d-=a}return(u?-1:1)*n*Um(2,d-t)}},Bm=R,zm=M,jm=K,Pm=Cm,Qm=er,Mm=hn,Em=Rm,Dm=Y,Om=Km,_m=hr,qm=Gr,$m=Hm,eZ=Tm,tZ=nd,nZ=vd,rZ=sr.f,iZ=Ot.f,cZ=Yl,aZ=Zc,oZ=Kc,lZ=Qm.PROPER,uZ=Qm.CONFIGURABLE,dZ=En.get,sZ=En.set,mZ=Bm.ArrayBuffer,ZZ=mZ,hZ=ZZ&&ZZ.prototype,bZ=Bm.DataView,pZ=bZ&&bZ.prototype,IZ=Object.prototype,gZ=Bm.Array,yZ=Bm.RangeError,XZ=zm(cZ),GZ=zm([].reverse),VZ=eZ.pack,fZ=eZ.unpack,WZ=function(e){return[255&e]},CZ=function(e){return[255&e,e>>8&255]},vZ=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},RZ=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},SZ=function(e){return VZ(e,23,4)},YZ=function(e){return VZ(e,52,8)},KZ=function(e,t){iZ(e.prototype,t,{get:function(){return dZ(this)[t]}})},JZ=function(e,t,n,r){var i=$m(n),c=dZ(e);if(i+t>c.byteLength)throw yZ("Wrong index");var a=dZ(c.buffer).bytes,o=i+c.byteOffset,l=aZ(a,o,o+t);return r?l:GZ(l)},LZ=function(e,t,n,r,i,c){var a=$m(n),o=dZ(e);if(a+t>o.byteLength)throw yZ("Wrong index");for(var l=dZ(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(Pm){var NZ=lZ&&"ArrayBuffer"!==mZ.name;if(Dm((function(){mZ(1)}))&&Dm((function(){new mZ(-1)}))&&!Dm((function(){return new mZ,new mZ(1.5),new mZ(NaN),NZ&&!uZ})))NZ&&uZ&&Mm(mZ,"name","ArrayBuffer");else{(ZZ=function(e){return Om(this,hZ),new mZ($m(e))}).prototype=hZ;for(var HZ,xZ=rZ(mZ),kZ=0;xZ.length>kZ;)(HZ=xZ[kZ++])in ZZ||Mm(ZZ,HZ,mZ[HZ]);hZ.constructor=ZZ}nZ&&tZ(pZ)!==IZ&&nZ(pZ,IZ);var UZ=new bZ(new ZZ(2)),FZ=zm(pZ.setInt8);UZ.setInt8(0,2147483648),UZ.setInt8(1,2147483649),!UZ.getInt8(0)&&UZ.getInt8(1)||Em(pZ,{setInt8:function(e,t){FZ(this,e,t<<24>>24)},setUint8:function(e,t){FZ(this,e,t<<24>>24)}},{unsafe:!0})}else ZZ=function(e){Om(this,hZ);var t=$m(e);sZ(this,{bytes:XZ(gZ(t),0),byteLength:t}),jm||(this.byteLength=t)},hZ=ZZ.prototype,bZ=function(e,t,n){Om(this,pZ),Om(e,hZ);var r=dZ(e).byteLength,i=_m(t);if(i<0||i>r)throw yZ("Wrong offset");if(i+(n=void 0===n?r-i:qm(n))>r)throw yZ("Wrong length");sZ(this,{buffer:e,byteLength:n,byteOffset:i}),jm||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},pZ=bZ.prototype,jm&&(KZ(ZZ,"byteLength"),KZ(bZ,"buffer"),KZ(bZ,"byteLength"),KZ(bZ,"byteOffset")),Em(pZ,{getInt8:function(e){return JZ(this,1,e)[0]<<24>>24},getUint8:function(e){return JZ(this,1,e)[0]},getInt16:function(e){var t=JZ(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=JZ(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return RZ(JZ(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return RZ(JZ(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return fZ(JZ(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return fZ(JZ(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){LZ(this,1,e,WZ,t)},setUint8:function(e,t){LZ(this,1,e,WZ,t)},setInt16:function(e,t){LZ(this,2,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){LZ(this,2,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){LZ(this,4,e,vZ,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){LZ(this,4,e,vZ,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){LZ(this,4,e,SZ,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){LZ(this,8,e,YZ,t,arguments.length>2?arguments[2]:void 0)}});oZ(ZZ,"ArrayBuffer"),oZ(bZ,"DataView");var AZ={ArrayBuffer:ZZ,DataView:bZ},wZ=mm,TZ=AZ.ArrayBuffer;mi({global:!0,forced:R.ArrayBuffer!==TZ},{ArrayBuffer:TZ}),wZ("ArrayBuffer");var BZ=nn,zZ=Me,jZ=R.TypeError,PZ=at,QZ=bn.exports,MZ=function(e){if(BZ(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw jZ("Incorrect hint");return zZ(this,e)},EZ=Vt("toPrimitive"),DZ=Date.prototype;PZ(DZ,EZ)||QZ(DZ,EZ,MZ);var OZ=ue,_Z=se,qZ=Ot,$Z=nd,eh=Vt("hasInstance"),th=Function.prototype;eh in th||qZ.f(th,eh,{value:function(e){if(!OZ(this)||!_Z(e))return!1;var t=this.prototype;if(!_Z(t))return e instanceof this;for(;e=$Z(e);)if(t===e)return!0;return!1}});var nh=K,rh=er.EXISTS,ih=M,ch=Ot.f,ah=Function.prototype,oh=ih(ah.toString),lh=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,uh=ih(lh.exec);nh&&!rh&&ch(ah,"name",{configurable:!0,get:function(){try{return uh(lh,oh(this))[1]}catch(e){return""}}}),mi({global:!0},{globalThis:R});var dh=mi,sh=be,mh=Ii,Zh=M,hh=Y,bh=R.Array,ph=sh("JSON","stringify"),Ih=Zh(/./.exec),gh=Zh("".charAt),yh=Zh("".charCodeAt),Xh=Zh("".replace),Gh=Zh(1..toString),Vh=/[\uD800-\uDFFF]/g,fh=/^[\uD800-\uDBFF]$/,Wh=/^[\uDC00-\uDFFF]$/,Ch=function(e,t,n){var r=gh(n,t-1),i=gh(n,t+1);return Ih(fh,e)&&!Ih(Wh,i)||Ih(Wh,e)&&!Ih(fh,r)?"\\u"+Gh(yh(e,0),16):e},vh=hh((function(){return'"\\udf06\\ud834"'!==ph("\udf06\ud834")||'"\\udead"'!==ph("\udead")}));ph&&dh({target:"JSON",stat:!0,forced:vh},{stringify:function(e,t,n){for(var r=0,i=arguments.length,c=bh(i);r<i;r++)c[r]=arguments[r];var a=mh(ph,null,c);return"string"==typeof a?Xh(a,Vh,Ch):a}}),Kc(R.JSON,"JSON",!0);var Rh={exports:{}},Sh=Y((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Yh=Y,Kh=se,Jh=_,Lh=Sh,Nh=Object.isExtensible,Hh=Yh((function(){Nh(1)}))||Lh?function(e){return!!Kh(e)&&((!Lh||"ArrayBuffer"!=Jh(e))&&(!Nh||Nh(e)))}:Nh,xh=!Y((function(){return Object.isExtensible(Object.preventExtensions({}))})),kh=mi,Uh=M,Fh=Jn,Ah=se,wh=at,Th=Ot.f,Bh=sr,zh=rc,jh=Hh,Ph=xh,Qh=!1,Mh=st("meta"),Eh=0,Dh=function(e){Th(e,Mh,{value:{objectID:"O"+Eh++,weakData:{}}})},Oh=Rh.exports={enable:function(){Oh.enable=function(){},Qh=!0;var e=Bh.f,t=Uh([].splice),n={};n[Mh]=1,e(n).length&&(Bh.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===Mh){t(r,i,1);break}return r},kh({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:zh.f}))},fastKey:function(e,t){if(!Ah(e))return"symbol"==c(e)?e:("string"==typeof e?"S":"P")+e;if(!wh(e,Mh)){if(!jh(e))return"F";if(!t)return"E";Dh(e)}return e[Mh].objectID},getWeakData:function(e,t){if(!wh(e,Mh)){if(!jh(e))return!0;if(!t)return!1;Dh(e)}return e[Mh].weakData},onFreeze:function(e){return Ph&&Qh&&jh(e)&&!wh(e,Mh)&&Dh(e),e}};Fh[Mh]=!0;var _h=Hc,qh=H,$h=nn,eb=ke,tb=su,nb=fr,rb=pe,ib=fu,cb=pu,ab=iu,ob=R.TypeError,lb=function(e,t){this.stopped=e,this.result=t},ub=lb.prototype,db=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=_h(t,s),p=function(e){return r&&ab(r,"normal",e),new lb(!0,e)},I=function(e){return m?($h(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=cb(e)))throw ob(eb(e)+" is not iterable");if(tb(i)){for(a=0,o=nb(e);o>a;a++)if((l=I(e[a]))&&rb(ub,l))return l;return new lb(!1)}r=ib(e,i)}for(u=r.next;!(d=qh(u,r)).done;){try{l=I(d.value)}catch(e){ab(r,"throw",e)}if("object"==c(l)&&l&&rb(ub,l))return l}return new lb(!1)},sb=ue,mb=se,Zb=vd,hb=function(e,t,n){var r,i;return Zb&&sb(r=t.constructor)&&r!==n&&mb(i=r.prototype)&&i!==n.prototype&&Zb(e,i),e},bb=mi,pb=R,Ib=M,gb=ii,yb=bn.exports,Xb=Rh.exports,Gb=db,Vb=Km,fb=ue,Wb=se,Cb=Y,vb=wu,Rb=Kc,Sb=hb,Yb=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",a=pb[e],o=a&&a.prototype,l=a,u={},d=function(e){var t=Ib(o[e]);yb(o,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!Wb(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!Wb(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!Wb(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(gb(e,!fb(a)||!(i||o.forEach&&!Cb((function(){(new a).entries().next()})))))l=n.getConstructor(t,e,r,c),Xb.enable();else if(gb(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,Z=Cb((function(){s.has(1)})),h=vb((function(e){new a(e)})),b=!i&&Cb((function(){for(var e=new a,t=5;t--;)e[c](t,t);return!e.has(-0)}));h||((l=t((function(e,t){Vb(e,o);var n=Sb(new a,e,l);return null!=t&&Gb(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,bb({global:!0,forced:l!=a},u),Rb(l,e),i||n.setStrong(l,e,r),l},Kb=Ot.f,Jb=nc,Lb=Rm,Nb=Hc,Hb=Km,xb=db,kb=jd,Ub=mm,Fb=K,Ab=Rh.exports.fastKey,wb=En.set,Tb=En.getterFor,Bb={getConstructor:function(e,t,n,r){var i=e((function(e,i){Hb(e,c),wb(e,{type:t,index:Jb(null),first:void 0,last:void 0,size:0}),Fb||(e.size=0),null!=i&&xb(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=Tb(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=Ab(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),Fb?c.size++:e.size++,"F"!==i&&(c.index[i]=o)),e},l=function(e,t){var n,r=a(e),i=Ab(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return Lb(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,Fb?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),Fb?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=a(this),r=Nb(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)}}),Lb(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)}}),Fb&&Kb(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=Tb(t),c=Tb(r);kb(e,t,(function(e,t){wb(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),Ub(t)}};Yb("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bb);var zb=Math.log,jb=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:zb(1+e)},Pb=mi,Qb=jb,Mb=Math.acosh,Eb=Math.log,Db=Math.sqrt,Ob=Math.LN2;Pb({target:"Math",stat:!0,forced:!Mb||710!=Math.floor(Mb(Number.MAX_VALUE))||Mb(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Eb(e)+Ob:Qb(e-1+Db(e-1)*Db(e+1))}});var _b=mi,qb=Math.asinh,$b=Math.log,ep=Math.sqrt;_b({target:"Math",stat:!0,forced:!(qb&&1/qb(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):$b(t+ep(t*t+1)):t}});var tp=mi,np=Math.atanh,rp=Math.log;tp({target:"Math",stat:!0,forced:!(np&&1/np(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:rp((1+e)/(1-e))/2}});var ip=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},cp=mi,ap=ip,op=Math.abs,lp=Math.pow;cp({target:"Math",stat:!0},{cbrt:function(e){return ap(e=+e)*lp(op(e),1/3)}});var up=mi,dp=Math.floor,sp=Math.log,mp=Math.LOG2E;up({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-dp(sp(e+.5)*mp):32}});var Zp=Math.expm1,hp=Math.exp,bp=!Zp||Zp(10)>22025.465794806718||Zp(10)<22025.465794806718||-2e-17!=Zp(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:hp(e)-1}:Zp,pp=mi,Ip=bp,gp=Math.cosh,yp=Math.abs,Xp=Math.E;pp({target:"Math",stat:!0,forced:!gp||gp(710)===1/0},{cosh:function(e){var t=Ip(yp(e)-1)+1;return(t+1/(t*Xp*Xp))*(Xp/2)}});var Gp=bp;mi({target:"Math",stat:!0,forced:Gp!=Math.expm1},{expm1:Gp});var Vp=ip,fp=Math.abs,Wp=Math.pow,Cp=Wp(2,-52),vp=Wp(2,-23),Rp=Wp(2,127)*(2-vp),Sp=Wp(2,-126),Yp=Math.fround||function(e){var t,n,r=fp(e),i=Vp(e);return r<Sp?i*function(e){return e+1/Cp-1/Cp}(r/Sp/vp)*Sp*vp:(n=(t=(1+vp/Cp)*r)-(t-r))>Rp||n!=n?i*(1/0):i*n};mi({target:"Math",stat:!0},{fround:Yp});var Kp=mi,Jp=Math.hypot,Lp=Math.abs,Np=Math.sqrt;Kp({target:"Math",stat:!0,forced:!!Jp&&Jp(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=Lp(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*Np(i)}});var Hp=mi,xp=Y,kp=Math.imul;Hp({target:"Math",stat:!0,forced:xp((function(){return-5!=kp(4294967295,5)||2!=kp.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 Up=Math.log,Fp=Math.LOG10E;mi({target:"Math",stat:!0},{log10:Math.log10||function(e){return Up(e)*Fp}}),mi({target:"Math",stat:!0},{log1p:jb});var Ap=mi,wp=Math.log,Tp=Math.LN2;Ap({target:"Math",stat:!0},{log2:function(e){return wp(e)/Tp}}),mi({target:"Math",stat:!0},{sign:ip});var Bp=mi,zp=Y,jp=bp,Pp=Math.abs,Qp=Math.exp,Mp=Math.E;Bp({target:"Math",stat:!0,forced:zp((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return Pp(e=+e)<1?(jp(e)-jp(-e))/2:(Qp(e-1)-Qp(-e-1))*(Mp/2)}});var Ep=mi,Dp=bp,Op=Math.exp;Ep({target:"Math",stat:!0},{tanh:function(e){var t=Dp(e=+e),n=Dp(-e);return t==1/0?1:n==1/0?-1:(t-n)/(Op(e)+Op(-e))}}),Kc(Math,"Math",!0);var _p=mi,qp=Math.ceil,$p=Math.floor;_p({target:"Math",stat:!0},{trunc:function(e){return(e>0?$p:qp)(e)}});var eI=M(1..valueOf),tI="\t\n\v\f\r                 \u2028\u2029\ufeff",nI=ce,rI=Li,iI=M("".replace),cI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",aI=RegExp("^"+cI+cI+"*"),oI=RegExp(cI+cI+"*$"),lI=function(e){return function(t){var n=rI(nI(t));return 1&e&&(n=iI(n,aI,"")),2&e&&(n=iI(n,oI,"")),n}},uI={start:lI(1),end:lI(2),trim:lI(3)},dI=K,sI=R,mI=M,ZI=ii,hI=bn.exports,bI=at,pI=hb,II=pe,gI=He,yI=Jt,XI=Y,GI=sr.f,VI=S.f,fI=Ot.f,WI=eI,CI=uI.trim,vI=sI.Number,RI=vI.prototype,SI=sI.TypeError,YI=mI("".slice),KI=mI("".charCodeAt),JI=function(e){var t=yI(e,"number");return"bigint"==typeof t?t:LI(t)},LI=function(e){var t,n,r,i,c,a,o,l,u=yI(e,"number");if(gI(u))throw SI("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=CI(u),43===(t=KI(u,0))||45===t){if(88===(n=KI(u,2))||120===n)return NaN}else if(48===t){switch(KI(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=YI(u,2)).length,o=0;o<a;o++)if((l=KI(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(ZI("Number",!vI(" 0o1")||!vI("0b1")||vI("+0x1"))){for(var NI,HI=function(e){var t=arguments.length<1?0:vI(JI(e)),n=this;return II(RI,n)&&XI((function(){WI(n)}))?pI(Object(t),n,HI):t},xI=dI?GI(vI):"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(","),kI=0;xI.length>kI;kI++)bI(vI,NI=xI[kI])&&!bI(HI,NI)&&fI(HI,NI,VI(vI,NI));HI.prototype=RI,RI.constructor=HI,hI(sI,"Number",HI)}mi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var UI=R.isFinite;mi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&UI(e)}});var FI=se,AI=Math.floor,wI=Number.isInteger||function(e){return!FI(e)&&isFinite(e)&&AI(e)===e};mi({target:"Number",stat:!0},{isInteger:wI}),mi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var TI=mi,BI=wI,zI=Math.abs;TI({target:"Number",stat:!0},{isSafeInteger:function(e){return BI(e)&&zI(e)<=9007199254740991}}),mi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),mi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var jI=R,PI=Y,QI=Li,MI=uI.trim,EI=M("".charAt),DI=jI.parseFloat,OI=jI.Symbol,_I=OI&&OI.iterator,qI=1/DI("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||_I&&!PI((function(){DI(Object(_I))}))?function(e){var t=MI(QI(e)),n=DI(t);return 0===n&&"-"==EI(t,0)?-0:n}:DI;mi({target:"Number",stat:!0,forced:Number.parseFloat!=qI},{parseFloat:qI});var $I=R,eg=Y,tg=M,ng=Li,rg=uI.trim,ig=$I.parseInt,cg=$I.Symbol,ag=cg&&cg.iterator,og=/^[+-]?0x/i,lg=tg(og.exec),ug=8!==ig("\t\n\v\f\r                 \u2028\u2029\ufeff08")||22!==ig("\t\n\v\f\r                 \u2028\u2029\ufeff0x16")||ag&&!eg((function(){ig(Object(ag))}))?function(e,t){var n=rg(ng(e));return ig(n,t>>>0||(lg(og,n)?16:10))}:ig,dg=ug;mi({target:"Number",stat:!0,forced:Number.parseInt!=dg},{parseInt:dg});var sg=hr,mg=Li,Zg=ce,hg=R.RangeError,bg=function(e){var t=mg(Zg(this)),n="",r=sg(e);if(r<0||r==1/0)throw hg("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},pg=mi,Ig=R,gg=M,yg=hr,Xg=eI,Gg=bg,Vg=Y,fg=Ig.RangeError,Wg=Ig.String,Cg=Math.floor,vg=gg(Gg),Rg=gg("".slice),Sg=gg(1..toFixed),Yg=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},Kg=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=Cg(i/1e7)},Jg=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=Cg(r/t),r=r%t*1e7},Lg=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=Wg(e[t]);n=""===n?r:n+vg("0",7-r.length)+r}return n};pg({target:"Number",proto:!0,forced:Vg((function(){return"0.000"!==Sg(8e-5,3)||"1"!==Sg(.9,0)||"1.25"!==Sg(1.255,2)||"1000000000000000128"!==Sg(0xde0b6b3a7640080,0)}))||!Vg((function(){Sg({})}))},{toFixed:function(e){var t,n,r,i,c=Xg(this),a=yg(e),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw fg("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return Wg(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*Yg(2,69,1))-69,n=t<0?c*Yg(2,-t,1):c/Yg(2,t,1),n*=4503599627370496,(t=52-t)>0){for(Kg(o,0,n),r=a;r>=7;)Kg(o,1e7,0),r-=7;for(Kg(o,Yg(10,r,1),0),r=t-1;r>=23;)Jg(o,1<<23),r-=23;Jg(o,1<<r),Kg(o,1,1),Jg(o,2),u=Lg(o)}else Kg(o,0,n),Kg(o,1<<-t,0),u=Lg(o)+vg("0",a);return u=a>0?l+((i=u.length)<=a?"0."+vg("0",a-i)+u:Rg(u,0,i-a)+"."+Rg(u,i-a)):l+u}});var Ng=K,Hg=M,xg=H,kg=Y,Ug=ki,Fg=Fr,Ag=x,wg=rt,Tg=re,Bg=Object.assign,zg=Object.defineProperty,jg=Hg([].concat),Pg=!Bg||kg((function(){if(Ng&&1!==Bg({b:1},Bg(zg({},"a",{enumerable:!0,get:function(){zg(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!=Bg({},e)[n]||Ug(Bg({},t)).join("")!=r}))?function(e,t){for(var n=wg(e),r=arguments.length,i=1,c=Fg.f,a=Ag.f;r>i;)for(var o,l=Tg(arguments[i++]),u=c?jg(Ug(l),c(l)):Ug(l),d=u.length,s=0;d>s;)o=u[s++],Ng&&!xg(a,l,o)||(n[o]=l[o]);return n}:Bg,Qg=Pg;mi({target:"Object",stat:!0,forced:Object.assign!==Qg},{assign:Qg});var Mg=R,Eg=Ts,Dg=!Y((function(){if(!(Eg&&Eg<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete Mg[e]}})),Og=we,_g=rt,qg=Ot;K&&mi({target:"Object",proto:!0,forced:Dg},{__defineGetter__:function(e,t){qg.f(_g(this),e,{get:Og(t),enumerable:!0,configurable:!0})}});var $g=we,ey=rt,ty=Ot;K&&mi({target:"Object",proto:!0,forced:Dg},{__defineSetter__:function(e,t){ty.f(ey(this),e,{set:$g(t),enumerable:!0,configurable:!0})}});var ny=K,ry=M,iy=ki,cy=le,ay=ry(x.f),oy=ry([].push),ly=function(e){return function(t){for(var n,r=cy(t),i=iy(r),c=i.length,a=0,o=[];c>a;)n=i[a++],ny&&!ay(r,n)||oy(o,e?[n,r[n]]:r[n]);return o}},uy={entries:ly(!0),values:ly(!1)},dy=uy.entries;mi({target:"Object",stat:!0},{entries:function(e){return dy(e)}});var sy=mi,my=xh,Zy=Y,hy=se,by=Rh.exports.onFreeze,py=Object.freeze;sy({target:"Object",stat:!0,forced:Zy((function(){py(1)})),sham:!my},{freeze:function(e){return py&&hy(e)?py(by(e)):e}});var Iy=db,gy=oc;mi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Iy(e,(function(e,n){gy(t,e,n)}),{AS_ENTRIES:!0}),t}});var yy=mi,Xy=Y,Gy=le,Vy=S.f,fy=K,Wy=Xy((function(){Vy(1)}));yy({target:"Object",stat:!0,forced:!fy||Wy,sham:!fy},{getOwnPropertyDescriptor:function(e,t){return Vy(Gy(e),t)}});var Cy=jr,vy=le,Ry=S,Sy=oc;mi({target:"Object",stat:!0,sham:!K},{getOwnPropertyDescriptors:function(e){for(var t,n,r=vy(e),i=Ry.f,c=Cy(r),a={},o=0;c.length>o;)void 0!==(n=i(r,t=c[o++]))&&Sy(a,t,n);return a}});var Yy=mi,Ky=Y,Jy=rc.f;Yy({target:"Object",stat:!0,forced:Ky((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:Jy});var Ly=rt,Ny=nd,Hy=Mu;mi({target:"Object",stat:!0,forced:Y((function(){Ny(1)})),sham:!Hy},{getPrototypeOf:function(e){return Ny(Ly(e))}});var xy=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};mi({target:"Object",stat:!0},{is:xy});var ky=Hh;mi({target:"Object",stat:!0,forced:Object.isExtensible!==ky},{isExtensible:ky});var Uy=mi,Fy=Y,Ay=se,wy=_,Ty=Sh,By=Object.isFrozen;Uy({target:"Object",stat:!0,forced:Fy((function(){By(1)}))||Ty},{isFrozen:function(e){return!Ay(e)||(!(!Ty||"ArrayBuffer"!=wy(e))||!!By&&By(e))}});var zy=mi,jy=Y,Py=se,Qy=_,My=Sh,Ey=Object.isSealed;zy({target:"Object",stat:!0,forced:jy((function(){Ey(1)}))||My},{isSealed:function(e){return!Py(e)||(!(!My||"ArrayBuffer"!=Qy(e))||!!Ey&&Ey(e))}});var Dy=rt,Oy=ki;mi({target:"Object",stat:!0,forced:Y((function(){Oy(1)}))},{keys:function(e){return Oy(Dy(e))}});var _y=mi,qy=K,$y=Dg,eX=rt,tX=Ht,nX=nd,rX=S.f;qy&&_y({target:"Object",proto:!0,forced:$y},{__lookupGetter__:function(e){var t,n=eX(this),r=tX(e);do{if(t=rX(n,r))return t.get}while(n=nX(n))}});var iX=mi,cX=K,aX=Dg,oX=rt,lX=Ht,uX=nd,dX=S.f;cX&&iX({target:"Object",proto:!0,forced:aX},{__lookupSetter__:function(e){var t,n=oX(this),r=lX(e);do{if(t=dX(n,r))return t.set}while(n=uX(n))}});var sX=mi,mX=se,ZX=Rh.exports.onFreeze,hX=xh,bX=Y,pX=Object.preventExtensions;sX({target:"Object",stat:!0,forced:bX((function(){pX(1)})),sham:!hX},{preventExtensions:function(e){return pX&&mX(e)?pX(ZX(e)):e}});var IX=mi,gX=se,yX=Rh.exports.onFreeze,XX=xh,GX=Y,VX=Object.seal;IX({target:"Object",stat:!0,forced:GX((function(){VX(1)})),sham:!XX},{seal:function(e){return VX&&gX(e)?VX(yX(e)):e}});var fX=Yi,WX=Gi?{}.toString:function(){return"[object "+fX(this)+"]"},CX=Gi,vX=bn.exports,RX=WX;CX||vX(Object.prototype,"toString",RX,{unsafe:!0});var SX=uy.values;mi({target:"Object",stat:!0},{values:function(e){return SX(e)}});var YX,KX,JX,LX,NX=R.Promise,HX=Ec,xX=ke,kX=R.TypeError,UX=function(e){if(HX(e))return e;throw kX(xX(e)+" is not a constructor")},FX=nn,AX=UX,wX=Vt("species"),TX=function(e,t){var n,r=FX(e).constructor;return void 0===r||null==(n=FX(r)[wX])?t:AX(n)},BX=R.TypeError,zX=function(e,t){if(e<t)throw BX("Not enough arguments");return e},jX=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ie),PX="process"==_(R.process),QX=R,MX=Ii,EX=Hc,DX=ue,OX=at,_X=Y,qX=ji,$X=yc,eG=Ft,tG=zX,nG=jX,rG=PX,iG=QX.setImmediate,cG=QX.clearImmediate,aG=QX.process,oG=QX.Dispatch,lG=QX.Function,uG=QX.MessageChannel,dG=QX.String,sG=0,mG={};try{YX=QX.location}catch(e){}var ZG=function(e){if(OX(mG,e)){var t=mG[e];delete mG[e],t()}},hG=function(e){return function(){ZG(e)}},bG=function(e){ZG(e.data)},pG=function(e){QX.postMessage(dG(e),YX.protocol+"//"+YX.host)};iG&&cG||(iG=function(e){tG(arguments.length,1);var t=DX(e)?e:lG(e),n=$X(arguments,1);return mG[++sG]=function(){MX(t,void 0,n)},KX(sG),sG},cG=function(e){delete mG[e]},rG?KX=function(e){aG.nextTick(hG(e))}:oG&&oG.now?KX=function(e){oG.now(hG(e))}:uG&&!nG?(LX=(JX=new uG).port2,JX.port1.onmessage=bG,KX=EX(LX.postMessage,LX)):QX.addEventListener&&DX(QX.postMessage)&&!QX.importScripts&&YX&&"file:"!==YX.protocol&&!_X(pG)?(KX=pG,QX.addEventListener("message",bG,!1)):KX="onreadystatechange"in eG("script")?function(e){qX.appendChild(eG("script")).onreadystatechange=function(){qX.removeChild(this),ZG(e)}}:function(e){setTimeout(hG(e),0)});var IG,gG,yG,XG,GG,VG,fG,WG,CG={set:iG,clear:cG},vG=R,RG=/ipad|iphone|ipod/i.test(Ie)&&void 0!==vG.Pebble,SG=/web0s(?!.*chrome)/i.test(Ie),YG=R,KG=Hc,JG=S.f,LG=CG.set,NG=jX,HG=RG,xG=SG,kG=PX,UG=YG.MutationObserver||YG.WebKitMutationObserver,FG=YG.document,AG=YG.process,wG=YG.Promise,TG=JG(YG,"queueMicrotask"),BG=TG&&TG.value;BG||(IG=function(){var e,t;for(kG&&(e=AG.domain)&&e.exit();gG;){t=gG.fn,gG=gG.next;try{t()}catch(e){throw gG?XG():yG=void 0,e}}yG=void 0,e&&e.enter()},NG||kG||xG||!UG||!FG?!HG&&wG&&wG.resolve?((fG=wG.resolve(void 0)).constructor=wG,WG=KG(fG.then,fG),XG=function(){WG(IG)}):kG?XG=function(){AG.nextTick(IG)}:(LG=KG(LG,YG),XG=function(){LG(IG)}):(GG=!0,VG=FG.createTextNode(""),new UG(IG).observe(VG,{characterData:!0}),XG=function(){VG.data=GG=!GG}));var zG=BG||function(e){var t={fn:e,next:void 0};yG&&(yG.next=t),gG||(gG=t,XG()),yG=t},jG={},PG=we,QG=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=PG(t),this.reject=PG(n)};jG.f=function(e){return new QG(e)};var MG=nn,EG=se,DG=jG,OG=function(e,t){if(MG(e),EG(t)&&t.constructor===e)return t;var n=DG.f(e);return(0,n.resolve)(t),n.promise},_G=R,qG=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},$G=function(){this.head=null,this.tail=null};$G.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 eV,tV,nV,rV,iV=$G,cV="object"==("undefined"==typeof window?"undefined":c(window)),aV=mi,oV=R,lV=be,uV=H,dV=NX,sV=bn.exports,mV=Rm,ZV=vd,hV=Kc,bV=mm,pV=we,IV=ue,gV=se,yV=Km,XV=Vn,GV=db,VV=wu,fV=TX,WV=CG.set,CV=zG,vV=OG,RV=function(e,t){var n=_G.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},SV=jG,YV=qG,KV=iV,JV=En,LV=ii,NV=cV,HV=PX,xV=We,kV=Vt("species"),UV="Promise",FV=JV.getterFor(UV),AV=JV.set,wV=JV.getterFor(UV),TV=dV&&dV.prototype,BV=dV,zV=TV,jV=oV.TypeError,PV=oV.document,QV=oV.process,MV=SV.f,EV=MV,DV=!!(PV&&PV.createEvent&&oV.dispatchEvent),OV=IV(oV.PromiseRejectionEvent),_V=!1,qV=LV(UV,(function(){var e=XV(BV),t=e!==String(BV);if(!t&&66===xV)return!0;if(xV>=51&&/native code/.test(e))return!1;var n=new BV((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[kV]=r,!(_V=n.then((function(){}))instanceof r)||!t&&NV&&!OV})),$V=qV||!VV((function(e){BV.all(e).catch((function(){}))})),ef=function(e){var t;return!(!gV(e)||!IV(t=e.then))&&t},tf=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&&of(t),t.rejection=1),!0===o?n=c:(d&&d.enter(),n=o(c),d&&(d.exit(),i=!0)),n===e.promise?u(jV("Promise-chain cycle")):(r=ef(n))?uV(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},nf=function(e,t){e.notified||(e.notified=!0,CV((function(){for(var n,r=e.reactions;n=r.get();)tf(n,e);e.notified=!1,t&&!e.rejection&&cf(e)})))},rf=function(e,t,n){var r,i;DV?((r=PV.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),oV.dispatchEvent(r)):r={promise:t,reason:n},!OV&&(i=oV["on"+e])?i(r):"unhandledrejection"===e&&RV("Unhandled promise rejection",n)},cf=function(e){uV(WV,oV,(function(){var t,n=e.facade,r=e.value;if(af(e)&&(t=YV((function(){HV?QV.emit("unhandledRejection",r,n):rf("unhandledrejection",n,r)})),e.rejection=HV||af(e)?2:1,t.error))throw t.value}))},af=function(e){return 1!==e.rejection&&!e.parent},of=function(e){uV(WV,oV,(function(){var t=e.facade;HV?QV.emit("rejectionHandled",t):rf("rejectionhandled",t,e.value)}))},lf=function(e,t,n){return function(r){e(t,r,n)}},uf=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,nf(e,!0))},df=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw jV("Promise can't be resolved itself");var i=ef(n);i?CV((function(){var r={done:!1};try{uV(i,n,lf(e,r,t),lf(uf,r,t))}catch(e){uf(r,e,t)}})):(t.value=n,t.state=1,nf(t,!1))}catch(e){uf({done:!1},e,t)}}};if(qV&&(zV=(BV=function(e){yV(this,zV),pV(e),uV(eV,this);var t=FV(this);try{e(lf(df,t),lf(uf,t))}catch(e){uf(t,e)}}).prototype,(eV=function(e){AV(this,{type:UV,done:!1,notified:!1,parent:!1,reactions:new KV,rejection:!1,state:0,value:void 0})}).prototype=mV(zV,{then:function(e,t){var n=wV(this),r=MV(fV(this,BV));return n.parent=!0,r.ok=!IV(e)||e,r.fail=IV(t)&&t,r.domain=HV?QV.domain:void 0,0==n.state?n.reactions.add(r):CV((function(){tf(r,n)})),r.promise},catch:function(e){return this.then(void 0,e)}}),tV=function(){var e=new eV,t=FV(e);this.promise=e,this.resolve=lf(df,t),this.reject=lf(uf,t)},SV.f=MV=function(e){return e===BV||e===nV?new tV(e):EV(e)},IV(dV)&&TV!==Object.prototype)){rV=TV.then,_V||(sV(TV,"then",(function(e,t){var n=this;return new BV((function(e,t){uV(rV,n,e,t)})).then(e,t)}),{unsafe:!0}),sV(TV,"catch",zV.catch,{unsafe:!0}));try{delete TV.constructor}catch(e){}ZV&&ZV(TV,zV)}aV({global:!0,wrap:!0,forced:qV},{Promise:BV}),hV(BV,UV,!1),bV(UV),nV=lV(UV),aV({target:UV,stat:!0,forced:qV},{reject:function(e){var t=MV(this);return uV(t.reject,void 0,e),t.promise}}),aV({target:UV,stat:!0,forced:qV},{resolve:function(e){return vV(this,e)}}),aV({target:UV,stat:!0,forced:$V},{all:function(e){var t=this,n=MV(t),r=n.resolve,i=n.reject,c=YV((function(){var n=pV(t.resolve),c=[],a=0,o=1;GV(e,(function(e){var l=a++,u=!1;o++,uV(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},race:function(e){var t=this,n=MV(t),r=n.reject,i=YV((function(){var i=pV(t.resolve);GV(e,(function(e){uV(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var sf=H,mf=we,Zf=jG,hf=qG,bf=db;mi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=Zf.f(t),r=n.resolve,i=n.reject,c=hf((function(){var n=mf(t.resolve),i=[],c=0,a=1;bf(e,(function(e){var o=c++,l=!1;a++,sf(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 pf=mi,If=NX,gf=Y,yf=be,Xf=ue,Gf=TX,Vf=OG,ff=bn.exports;if(pf({target:"Promise",proto:!0,real:!0,forced:!!If&&gf((function(){If.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=Gf(this,yf("Promise")),n=Xf(e);return this.then(n?function(n){return Vf(t,e()).then((function(){return n}))}:e,n?function(n){return Vf(t,e()).then((function(){throw n}))}:e)}}),Xf(If)){var Wf=yf("Promise").prototype.finally;If.prototype.finally!==Wf&&ff(If.prototype,"finally",Wf,{unsafe:!0})}var Cf=Ii,vf=we,Rf=nn;mi({target:"Reflect",stat:!0,forced:!Y((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return Cf(vf(e),t,Rf(n))}});var Sf=M,Yf=we,Kf=se,Jf=at,Lf=yc,Nf=J,Hf=R.Function,xf=Sf([].concat),kf=Sf([].join),Uf={},Ff=function(e,t,n){if(!Jf(Uf,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";Uf[t]=Hf("C,a","return new C("+kf(r,",")+")")}return Uf[t](e,n)},Af=Nf?Hf.bind:function(e){var t=Yf(this),n=t.prototype,r=Lf(arguments,1),i=function(){var n=xf(r,Lf(arguments));return this instanceof i?Ff(t,n.length,n):t.apply(e,n)};return Kf(n)&&(i.prototype=n),i},wf=mi,Tf=Ii,Bf=Af,zf=UX,jf=nn,Pf=se,Qf=nc,Mf=Y,Ef=be("Reflect","construct"),Df=Object.prototype,Of=[].push,_f=Mf((function(){function e(){}return!(Ef((function(){}),[],e)instanceof e)})),qf=!Mf((function(){Ef((function(){}))})),$f=_f||qf;wf({target:"Reflect",stat:!0,forced:$f,sham:$f},{construct:function(e,t){zf(e),jf(t);var n=arguments.length<3?e:zf(arguments[2]);if(qf&&!_f)return Ef(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 Tf(Of,r,t),new(Tf(Bf,e,r))}var i=n.prototype,c=Qf(Pf(i)?i:Df),a=Tf(e,c,t);return Pf(a)?a:c}});var eW=K,tW=nn,nW=Ht,rW=Ot;mi({target:"Reflect",stat:!0,forced:Y((function(){Reflect.defineProperty(rW.f({},1,{value:1}),1,{value:2})})),sham:!eW},{defineProperty:function(e,t,n){tW(e);var r=nW(t);tW(n);try{return rW.f(e,r,n),!0}catch(e){return!1}}});var iW=mi,cW=nn,aW=S.f;iW({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=aW(cW(e),t);return!(n&&!n.configurable)&&delete e[t]}});var oW=at,lW=function(e){return void 0!==e&&(oW(e,"value")||oW(e,"writable"))},uW=H,dW=se,sW=nn,mW=lW,ZW=S,hW=nd;mi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return sW(t)===c?t[n]:(r=ZW.f(t,n))?mW(r)?r.value:void 0===r.get?void 0:uW(r.get,c):dW(i=hW(t))?e(i,n,c):void 0}});var bW=nn,pW=S;mi({target:"Reflect",stat:!0,sham:!K},{getOwnPropertyDescriptor:function(e,t){return pW.f(bW(e),t)}});var IW=nn,gW=nd;mi({target:"Reflect",stat:!0,sham:!Mu},{getPrototypeOf:function(e){return gW(IW(e))}}),mi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var yW=nn,XW=Hh;mi({target:"Reflect",stat:!0},{isExtensible:function(e){return yW(e),XW(e)}}),mi({target:"Reflect",stat:!0},{ownKeys:jr});var GW=be,VW=nn;mi({target:"Reflect",stat:!0,sham:!xh},{preventExtensions:function(e){VW(e);try{var t=GW("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var fW=mi,WW=H,CW=nn,vW=se,RW=lW,SW=Ot,YW=S,KW=nd,JW=T;var LW=Y((function(){var e=function(){},t=SW.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));fW({target:"Reflect",stat:!0,forced:LW},{set:function e(t,n,r){var i,c,a,o=arguments.length<4?t:arguments[3],l=YW.f(CW(t),n);if(!l){if(vW(c=KW(t)))return e(c,n,r,o);l=JW(0)}if(RW(l)){if(!1===l.writable||!vW(o))return!1;if(i=YW.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,SW.f(o,n,i)}else SW.f(o,n,JW(0,r))}else{if(void 0===(a=l.set))return!1;WW(a,o,r)}return!0}});var NW=nn,HW=Vd,xW=vd;xW&&mi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){NW(e),HW(t);try{return xW(e,t),!0}catch(e){return!1}}});var kW=se,UW=_,FW=Vt("match"),AW=function(e){var t;return kW(e)&&(void 0!==(t=e[FW])?!!t:"RegExp"==UW(e))},wW=nn,TW=function(){var e=wW(this),t="";return 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},BW=Y,zW=R.RegExp,jW=BW((function(){var e=zW("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),PW=jW||BW((function(){return!zW("a","y").sticky})),QW=jW||BW((function(){var e=zW("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),MW={BROKEN_CARET:QW,MISSED_STICKY:PW,UNSUPPORTED_Y:jW},EW=Y,DW=R.RegExp,OW=EW((function(){var e=DW(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),_W=Y,qW=R.RegExp,$W=_W((function(){var e=qW("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),eC=K,tC=R,nC=M,rC=ii,iC=hb,cC=hn,aC=Ot.f,oC=sr.f,lC=pe,uC=AW,dC=Li,sC=TW,mC=MW,ZC=bn.exports,hC=Y,bC=at,pC=En.enforce,IC=mm,gC=OW,yC=$W,XC=Vt("match"),GC=tC.RegExp,VC=GC.prototype,fC=tC.SyntaxError,WC=nC(sC),CC=nC(VC.exec),vC=nC("".charAt),RC=nC("".replace),SC=nC("".indexOf),YC=nC("".slice),KC=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,JC=/a/g,LC=/a/g,NC=new GC(JC)!==JC,HC=mC.MISSED_STICKY,xC=mC.UNSUPPORTED_Y,kC=eC&&(!NC||HC||gC||yC||hC((function(){return LC[XC]=!1,GC(JC)!=JC||GC(LC)==LC||"/a/i"!=GC(JC,"i")})));if(rC("RegExp",kC)){for(var UC=function(e,t){var n,r,i,c,a,o,l=lC(VC,this),u=uC(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===UC)return e;if((u||lC(VC,e))&&(e=e.source,d&&(t="flags"in m?m.flags:WC(m))),e=void 0===e?"":dC(e),t=void 0===t?"":dC(t),m=e,gC&&"dotAll"in JC&&(r=!!t&&SC(t,"s")>-1)&&(t=RC(t,/s/g,"")),n=t,HC&&"sticky"in JC&&(i=!!t&&SC(t,"y")>-1)&&xC&&(t=RC(t,/y/g,"")),yC&&(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=vC(e,r)))t+=vC(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:CC(KC,YC(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||bC(a,d))throw new fC("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=iC(GC(e,t),l?this:VC,UC),(r||i||s.length)&&(o=pC(a),r&&(o.dotAll=!0,o.raw=UC(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=vC(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+vC(e,++r);return i}(e),n)),i&&(o.sticky=!0),s.length&&(o.groups=s)),e!==m)try{cC(a,"source",""===m?"(?:)":m)}catch(e){}return a},FC=function(e){e in UC||aC(UC,e,{configurable:!0,get:function(){return GC[e]},set:function(t){GC[e]=t}})},AC=oC(GC),wC=0;AC.length>wC;)FC(AC[wC++]);VC.constructor=UC,UC.prototype=VC,ZC(tC,"RegExp",UC)}IC("RegExp");var TC=H,BC=M,zC=Li,jC=TW,PC=MW,QC=Ee.exports,MC=nc,EC=En.get,DC=OW,OC=$W,_C=QC("native-string-replace",String.prototype.replace),qC=RegExp.prototype.exec,$C=qC,ev=BC("".charAt),tv=BC("".indexOf),nv=BC("".replace),rv=BC("".slice),iv=function(){var e=/a/,t=/b*/g;return TC(qC,e,"a"),TC(qC,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),cv=PC.BROKEN_CARET,av=void 0!==/()??/.exec("")[1];(iv||av||cv||DC||OC)&&($C=function(e){var t,n,r,i,c,a,o,l=this,u=EC(l),d=zC(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=TC($C,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,Z=cv&&l.sticky,h=TC(jC,l),b=l.source,p=0,I=d;if(Z&&(h=nv(h,"y",""),-1===tv(h,"g")&&(h+="g"),I=rv(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==ev(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",h)),av&&(n=new RegExp("^"+b+"$(?!\\s)",h)),iv&&(r=l.lastIndex),i=TC(qC,Z?n:l,I),Z?i?(i.input=rv(i.input,p),i[0]=rv(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:iv&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),av&&i&&i.length>1&&TC(_C,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=MC(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=i[o[1]];return i});var ov=$C;mi({target:"RegExp",proto:!0,forced:/./.exec!==ov},{exec:ov});var lv=K,uv=Ot,dv=TW,sv=Y,mv=RegExp.prototype;lv&&sv((function(){return"sy"!==Object.getOwnPropertyDescriptor(mv,"flags").get.call({dotAll:!0,sticky:!0})}))&&uv.f(mv,"flags",{configurable:!0,get:dv});var Zv=R,hv=K,bv=MW.MISSED_STICKY,pv=_,Iv=Ot.f,gv=En.get,yv=RegExp.prototype,Xv=Zv.TypeError;hv&&bv&&Iv(yv,"sticky",{configurable:!0,get:function(){if(this!==yv){if("RegExp"===pv(this))return!!gv(this).sticky;throw Xv("Incompatible receiver, RegExp required")}}});var Gv,Vv,fv=mi,Wv=R,Cv=H,vv=M,Rv=ue,Sv=se,Yv=(Gv=!1,(Vv=/[ac]/).exec=function(){return Gv=!0,/./.exec.apply(this,arguments)},!0===Vv.test("abc")&&Gv),Kv=Wv.Error,Jv=vv(/./.test);fv({target:"RegExp",proto:!0,forced:!Yv},{test:function(e){var t=this.exec;if(!Rv(t))return Jv(this,e);var n=Cv(t,this,e);if(null!==n&&!Sv(n))throw new Kv("RegExp exec method returned something other than an Object or null");return!!n}});var Lv=M,Nv=er.PROPER,Hv=bn.exports,xv=nn,kv=pe,Uv=Li,Fv=Y,Av=TW,wv=RegExp.prototype,Tv=wv.toString,Bv=Lv(Av),zv=Fv((function(){return"/a/b"!=Tv.call({source:"a",flags:"b"})})),jv=Nv&&"toString"!=Tv.name;(zv||jv)&&Hv(RegExp.prototype,"toString",(function(){var e=xv(this),t=Uv(e.source),n=e.flags;return"/"+t+"/"+Uv(void 0===n&&kv(wv,e)&&!("flags"in wv)?Bv(e):n)}),{unsafe:!0}),Yb("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bb);var Pv=M,Qv=hr,Mv=Li,Ev=ce,Dv=Pv("".charAt),Ov=Pv("".charCodeAt),_v=Pv("".slice),qv=function(e){return function(t,n){var r,i,c=Mv(Ev(t)),a=Qv(n),o=c.length;return a<0||a>=o?e?"":void 0:(r=Ov(c,a))<55296||r>56319||a+1===o||(i=Ov(c,a+1))<56320||i>57343?e?Dv(c,a):r:e?_v(c,a,a+2):i-56320+(r-55296<<10)+65536}},$v={codeAt:qv(!1),charAt:qv(!0)},eR=$v.codeAt;mi({target:"String",proto:!0},{codePointAt:function(e){return eR(this,e)}});var tR,nR=AW,rR=R.TypeError,iR=function(e){if(nR(e))throw rR("The method doesn't accept regular expressions");return e},cR=Vt("match"),aR=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[cR]=!1,"/./"[e](t)}catch(e){}}return!1},oR=mi,lR=M,uR=S.f,dR=Gr,sR=Li,mR=iR,ZR=ce,hR=aR,bR=lR("".endsWith),pR=lR("".slice),IR=Math.min,gR=hR("endsWith");oR({target:"String",proto:!0,forced:!!(gR||(tR=uR(String.prototype,"endsWith"),!tR||tR.writable))&&!gR},{endsWith:function(e){var t=sR(ZR(this));mR(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:IR(dR(n),r),c=sR(e);return bR?bR(t,c,i):pR(t,i-c.length,i)===c}});var yR=mi,XR=M,GR=gr,VR=R.RangeError,fR=String.fromCharCode,WR=String.fromCodePoint,CR=XR([].join);yR({target:"String",stat:!0,forced:!!WR&&1!=WR.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],GR(t,1114111)!==t)throw VR(t+" is not a valid code point");n[i]=t<65536?fR(t):fR(55296+((t-=65536)>>10),t%1024+56320)}return CR(n,"")}});var vR=mi,RR=iR,SR=ce,YR=Li,KR=aR,JR=M("".indexOf);vR({target:"String",proto:!0,forced:!KR("includes")},{includes:function(e){return!!~JR(YR(SR(this)),YR(RR(e)),arguments.length>1?arguments[1]:void 0)}});var LR=$v.charAt,NR=Li,HR=En,xR=jd,kR=HR.set,UR=HR.getterFor("String Iterator");xR(String,"String",(function(e){kR(this,{type:"String Iterator",string:NR(e),index:0})}),(function(){var e,t=UR(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=LR(n,r),t.index+=e.length,{value:e,done:!1})}));var FR=M,AR=bn.exports,wR=ov,TR=Y,BR=Vt,zR=hn,jR=BR("species"),PR=RegExp.prototype,QR=function(e,t,n,r){var i=BR(e),c=!TR((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=c&&!TR((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[jR]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!a||n){var o=FR(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var a=FR(e),l=t.exec;return l===wR||l===PR.exec?c&&!i?{done:!0,value:o(t,n,r)}:{done:!0,value:a(n,t,r)}:{done:!1}}));AR(String.prototype,e,l[0]),AR(PR,i,l[1])}r&&zR(PR[i],"sham",!0)},MR=$v.charAt,ER=function(e,t,n){return t+(n?MR(e,t).length:1)},DR=H,OR=nn,_R=ue,qR=_,$R=ov,eS=R.TypeError,tS=function(e,t){var n=e.exec;if(_R(n)){var r=DR(n,e,t);return null!==r&&OR(r),r}if("RegExp"===qR(e))return DR($R,e,t);throw eS("RegExp#exec called on incompatible receiver")},nS=H,rS=nn,iS=Gr,cS=Li,aS=ce,oS=Be,lS=ER,uS=tS;QR("match",(function(e,t,n){return[function(t){var n=aS(this),r=null==t?void 0:oS(t,e);return r?nS(r,t,n):new RegExp(t)[e](cS(n))},function(e){var r=rS(this),i=cS(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return uS(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=uS(r,i));){var d=cS(o[0]);l[u]=d,""===d&&(r.lastIndex=lS(i,iS(r.lastIndex),a)),u++}return 0===u?null:l}]}));var dS=mi,sS=R,mS=H,ZS=M,hS=Id,bS=ce,pS=Gr,IS=Li,gS=nn,yS=pe,XS=AW,GS=TW,VS=Be,fS=bn.exports,WS=Y,CS=TX,vS=ER,RS=tS,SS=En,YS=Vt("matchAll"),KS=SS.set,JS=SS.getterFor("RegExp String Iterator"),LS=RegExp.prototype,NS=sS.TypeError,HS=ZS(GS),xS=ZS("".indexOf),kS=ZS("".matchAll),US=!!kS&&!WS((function(){kS("a",/./)})),FS=hS((function(e,t,n,r){KS(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=JS(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=RS(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===IS(r[0])&&(t.lastIndex=vS(n,pS(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),AS=function(e){var t,n,r,i,c,a,o=gS(this),l=IS(e);return t=CS(o,RegExp),void 0===(n=o.flags)&&yS(LS,o)&&!("flags"in LS)&&(n=HS(o)),r=void 0===n?"":IS(n),i=new t(t===RegExp?o.source:o,r),c=!!~xS(r,"g"),a=!!~xS(r,"u"),i.lastIndex=pS(o.lastIndex),new FS(i,l,c,a)};dS({target:"String",proto:!0,forced:US},{matchAll:function(e){var t,n,r,i=bS(this);if(null!=e){if(XS(e)&&(t=IS(bS("flags"in LS?e.flags:HS(e))),!~xS(t,"g")))throw NS("`.matchAll` does not allow non-global regexes");if(US)return kS(i,e);if(r=VS(e,YS))return mS(r,e,i)}else if(US)return kS(i,e);return n=IS(i),new RegExp(e,"g")[YS](n)}}),YS in LS||fS(LS,YS,AS);var wS=M,TS=Gr,BS=Li,zS=ce,jS=wS(bg),PS=wS("".slice),QS=Math.ceil,MS=function(e){return function(t,n,r){var i,c,a=BS(zS(t)),o=TS(n),l=a.length,u=void 0===r?" ":BS(r);return o<=l||""==u?a:((c=jS(u,QS((i=o-l)/u.length))).length>i&&(c=PS(c,0,i)),e?a+c:c+a)}},ES={start:MS(!1),end:MS(!0)},DS=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Ie),OS=ES.end;mi({target:"String",proto:!0,forced:DS},{padEnd:function(e){return OS(this,e,arguments.length>1?arguments[1]:void 0)}});var _S=ES.start;mi({target:"String",proto:!0,forced:DS},{padStart:function(e){return _S(this,e,arguments.length>1?arguments[1]:void 0)}});var qS=mi,$S=M,eY=le,tY=rt,nY=Li,rY=fr,iY=$S([].push),cY=$S([].join);qS({target:"String",stat:!0},{raw:function(e){for(var t=eY(tY(e).raw),n=rY(t),r=arguments.length,i=[],c=0;n>c;){if(iY(i,nY(t[c++])),c===n)return cY(i,"");c<r&&iY(i,nY(arguments[c]))}}}),mi({target:"String",proto:!0},{repeat:bg});var aY=M,oY=rt,lY=Math.floor,uY=aY("".charAt),dY=aY("".replace),sY=aY("".slice),mY=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ZY=/\$([$&'`]|\d{1,2})/g,hY=Ii,bY=H,pY=M,IY=QR,gY=Y,yY=nn,XY=ue,GY=hr,VY=Gr,fY=Li,WY=ce,CY=ER,vY=Be,RY=function(e,t,n,r,i,c){var a=n+e.length,o=r.length,l=ZY;return void 0!==i&&(i=oY(i),l=mY),dY(c,l,(function(c,l){var u;switch(uY(l,0)){case"$":return"$";case"&":return e;case"`":return sY(t,0,n);case"'":return sY(t,a);case"<":u=i[sY(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>o){var s=lY(d/10);return 0===s?c:s<=o?void 0===r[s-1]?uY(l,1):r[s-1]+uY(l,1):c}u=r[d-1]}return void 0===u?"":u}))},SY=tS,YY=Vt("replace"),KY=Math.max,JY=Math.min,LY=pY([].concat),NY=pY([].push),HY=pY("".indexOf),xY=pY("".slice),kY="$0"==="a".replace(/./,"$0"),UY=!!/./[YY]&&""===/./[YY]("a","$0"),FY=!gY((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));IY("replace",(function(e,t,n){var r=UY?"$":"$0";return[function(e,n){var r=WY(this),i=null==e?void 0:vY(e,YY);return i?bY(i,e,r,n):bY(t,fY(r),e,n)},function(e,i){var c=yY(this),a=fY(e);if("string"==typeof i&&-1===HY(i,r)&&-1===HY(i,"$<")){var o=n(t,c,a,i);if(o.done)return o.value}var l=XY(i);l||(i=fY(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=SY(c,a);if(null===m)break;if(NY(s,m),!u)break;""===fY(m[0])&&(c.lastIndex=CY(a,VY(c.lastIndex),d))}for(var Z,h="",b=0,p=0;p<s.length;p++){for(var I=fY((m=s[p])[0]),g=KY(JY(GY(m.index),a.length),0),y=[],X=1;X<m.length;X++)NY(y,void 0===(Z=m[X])?Z:String(Z));var G=m.groups;if(l){var V=LY([I],y,g,a);void 0!==G&&NY(V,G);var f=fY(hY(i,void 0,V))}else f=RY(I,a,g,y,G,i);g>=b&&(h+=xY(a,b,g)+f,b=g+I.length)}return h+xY(a,b)}]}),!FY||!kY||UY);var AY=H,wY=nn,TY=ce,BY=xy,zY=Li,jY=Be,PY=tS;QR("search",(function(e,t,n){return[function(t){var n=TY(this),r=null==t?void 0:jY(t,e);return r?AY(r,t,n):new RegExp(t)[e](zY(n))},function(e){var r=wY(this),i=zY(e),c=n(t,r,i);if(c.done)return c.value;var a=r.lastIndex;BY(a,0)||(r.lastIndex=0);var o=PY(r,i);return BY(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var QY=Ii,MY=H,EY=M,DY=QR,OY=AW,_Y=nn,qY=ce,$Y=TX,eK=ER,tK=Gr,nK=Li,rK=Be,iK=Zc,cK=tS,aK=ov,oK=Y,lK=MW.UNSUPPORTED_Y,uK=Math.min,dK=[].push,sK=EY(/./.exec),mK=EY(dK),ZK=EY("".slice),hK=!oK((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]}));DY("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=nK(qY(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!OY(e))return MY(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=MY(aK,s,r))&&!((a=s.lastIndex)>d&&(mK(l,ZK(r,d,c.index)),c.length>1&&c.index<r.length&&QY(dK,l,iK(c,1)),o=c[0].length,d=a,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!o&&sK(s,"")||mK(l,""):mK(l,ZK(r,d)),l.length>i?iK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:MY(t,this,e,n)}:t,[function(t,n){var i=qY(this),c=null==t?void 0:rK(t,e);return c?MY(c,t,i,n):MY(r,nK(i),t,n)},function(e,i){var c=_Y(this),a=nK(e),o=n(r,c,a,i,r!==t);if(o.done)return o.value;var l=$Y(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(lK?"g":"y"),s=new l(lK?"^(?:"+c.source+")":c,d),m=void 0===i?4294967295:i>>>0;if(0===m)return[];if(0===a.length)return null===cK(s,a)?[a]:[];for(var Z=0,h=0,b=[];h<a.length;){s.lastIndex=lK?0:h;var p,I=cK(s,lK?ZK(a,h):a);if(null===I||(p=uK(tK(s.lastIndex+(lK?h:0)),a.length))===Z)h=eK(a,h,u);else{if(mK(b,ZK(a,Z,h)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(mK(b,I[g]),b.length===m)return b;h=Z=p}}return mK(b,ZK(a,Z)),b}]}),!hK,lK);var bK=mi,pK=M,IK=S.f,gK=Gr,yK=Li,XK=iR,GK=ce,VK=aR,fK=pK("".startsWith),WK=pK("".slice),CK=Math.min,vK=VK("startsWith"),RK=!vK&&!!function(){var e=IK(String.prototype,"startsWith");return e&&!e.writable}();bK({target:"String",proto:!0,forced:!RK&&!vK},{startsWith:function(e){var t=yK(GK(this));XK(e);var n=gK(CK(arguments.length>1?arguments[1]:void 0,t.length)),r=yK(e);return fK?fK(t,r,n):WK(t,n,n+r.length)===r}});var SK=er.PROPER,YK=Y,KK=tI,JK=function(e){return YK((function(){return!!KK[e]()||"​…᠎"!=="​…᠎"[e]()||SK&&KK[e].name!==e}))},LK=uI.trim;mi({target:"String",proto:!0,forced:JK("trim")},{trim:function(){return LK(this)}});var NK=mi,HK=uI.end,xK=JK("trimEnd"),kK=xK?function(){return HK(this)}:"".trimEnd;NK({target:"String",proto:!0,name:"trimEnd",forced:xK},{trimEnd:kK,trimRight:kK});var UK=mi,FK=uI.start,AK=JK("trimStart"),wK=AK?function(){return FK(this)}:"".trimStart;UK({target:"String",proto:!0,name:"trimStart",forced:AK},{trimStart:wK,trimLeft:wK});var TK=ce,BK=Li,zK=/"/g,jK=M("".replace),PK=function(e,t,n,r){var i=BK(TK(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+jK(BK(r),zK,"&quot;")+'"'),c+">"+i+"</"+t+">"},QK=Y,MK=function(e){return QK((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},EK=PK;mi({target:"String",proto:!0,forced:MK("anchor")},{anchor:function(e){return EK(this,"a","name",e)}});var DK=PK;mi({target:"String",proto:!0,forced:MK("big")},{big:function(){return DK(this,"big","","")}});var OK=PK;mi({target:"String",proto:!0,forced:MK("blink")},{blink:function(){return OK(this,"blink","","")}});var _K=PK;mi({target:"String",proto:!0,forced:MK("bold")},{bold:function(){return _K(this,"b","","")}});var qK=PK;mi({target:"String",proto:!0,forced:MK("fixed")},{fixed:function(){return qK(this,"tt","","")}});var $K=PK;mi({target:"String",proto:!0,forced:MK("fontcolor")},{fontcolor:function(e){return $K(this,"font","color",e)}});var eJ=PK;mi({target:"String",proto:!0,forced:MK("fontsize")},{fontsize:function(e){return eJ(this,"font","size",e)}});var tJ=PK;mi({target:"String",proto:!0,forced:MK("italics")},{italics:function(){return tJ(this,"i","","")}});var nJ=PK;mi({target:"String",proto:!0,forced:MK("link")},{link:function(e){return nJ(this,"a","href",e)}});var rJ=PK;mi({target:"String",proto:!0,forced:MK("small")},{small:function(){return rJ(this,"small","","")}});var iJ=PK;mi({target:"String",proto:!0,forced:MK("strike")},{strike:function(){return iJ(this,"strike","","")}});var cJ=PK;mi({target:"String",proto:!0,forced:MK("sub")},{sub:function(){return cJ(this,"sub","","")}});var aJ=PK;mi({target:"String",proto:!0,forced:MK("sup")},{sup:function(){return aJ(this,"sup","","")}});var oJ,lJ,uJ,dJ={exports:{}},sJ=Cm,mJ=K,ZJ=R,hJ=ue,bJ=se,pJ=at,IJ=Yi,gJ=ke,yJ=hn,XJ=bn.exports,GJ=Ot.f,VJ=pe,fJ=nd,WJ=vd,CJ=Vt,vJ=st,RJ=ZJ.Int8Array,SJ=RJ&&RJ.prototype,YJ=ZJ.Uint8ClampedArray,KJ=YJ&&YJ.prototype,JJ=RJ&&fJ(RJ),LJ=SJ&&fJ(SJ),NJ=Object.prototype,HJ=ZJ.TypeError,xJ=CJ("toStringTag"),kJ=vJ("TYPED_ARRAY_TAG"),UJ=vJ("TYPED_ARRAY_CONSTRUCTOR"),FJ=sJ&&!!WJ&&"Opera"!==IJ(ZJ.opera),AJ=!1,wJ={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},TJ={BigInt64Array:8,BigUint64Array:8},BJ=function(e){if(!bJ(e))return!1;var t=IJ(e);return pJ(wJ,t)||pJ(TJ,t)};for(oJ in wJ)(uJ=(lJ=ZJ[oJ])&&lJ.prototype)?yJ(uJ,UJ,lJ):FJ=!1;for(oJ in TJ)(uJ=(lJ=ZJ[oJ])&&lJ.prototype)&&yJ(uJ,UJ,lJ);if((!FJ||!hJ(JJ)||JJ===Function.prototype)&&(JJ=function(){throw HJ("Incorrect invocation")},FJ))for(oJ in wJ)ZJ[oJ]&&WJ(ZJ[oJ],JJ);if((!FJ||!LJ||LJ===NJ)&&(LJ=JJ.prototype,FJ))for(oJ in wJ)ZJ[oJ]&&WJ(ZJ[oJ].prototype,LJ);if(FJ&&fJ(KJ)!==LJ&&WJ(KJ,LJ),mJ&&!pJ(LJ,xJ))for(oJ in AJ=!0,GJ(LJ,xJ,{get:function(){return bJ(this)?this[kJ]:void 0}}),wJ)ZJ[oJ]&&yJ(ZJ[oJ],kJ,oJ);var zJ={NATIVE_ARRAY_BUFFER_VIEWS:FJ,TYPED_ARRAY_CONSTRUCTOR:UJ,TYPED_ARRAY_TAG:AJ&&kJ,aTypedArray:function(e){if(BJ(e))return e;throw HJ("Target is not a typed array")},aTypedArrayConstructor:function(e){if(hJ(e)&&(!WJ||VJ(JJ,e)))return e;throw HJ(gJ(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(mJ){if(n)for(var i in wJ){var c=ZJ[i];if(c&&pJ(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}LJ[e]&&!n||XJ(LJ,e,n?t:FJ&&SJ[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(mJ){if(WJ){if(n)for(r in wJ)if((i=ZJ[r])&&pJ(i,e))try{delete i[e]}catch(e){}if(JJ[e]&&!n)return;try{return XJ(JJ,e,n?t:FJ&&JJ[e]||t)}catch(e){}}for(r in wJ)!(i=ZJ[r])||i[e]&&!n||XJ(i,e,t)}},isView:function(e){if(!bJ(e))return!1;var t=IJ(e);return"DataView"===t||pJ(wJ,t)||pJ(TJ,t)},isTypedArray:BJ,TypedArray:JJ,TypedArrayPrototype:LJ},jJ=R,PJ=Y,QJ=wu,MJ=zJ.NATIVE_ARRAY_BUFFER_VIEWS,EJ=jJ.ArrayBuffer,DJ=jJ.Int8Array,OJ=!MJ||!PJ((function(){DJ(1)}))||!PJ((function(){new DJ(-1)}))||!QJ((function(e){new DJ,new DJ(null),new DJ(1.5),new DJ(e)}),!0)||PJ((function(){return 1!==new DJ(new EJ(2),1,void 0).length})),_J=hr,qJ=R.RangeError,$J=function(e){var t=_J(e);if(t<0)throw qJ("The argument can't be less than 0");return t},eL=R.RangeError,tL=function(e,t){var n=$J(e);if(n%t)throw eL("Wrong offset");return n},nL=Hc,rL=H,iL=UX,cL=rt,aL=fr,oL=fu,lL=pu,uL=su,dL=zJ.aTypedArrayConstructor,sL=function(e){var t,n,r,i,c,a,o=iL(this),l=cL(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=lL(l);if(m&&!uL(m))for(a=(c=oL(l,m)).next,l=[];!(i=rL(a,c)).done;)l.push(i.value);for(s&&u>2&&(d=nL(d,arguments[2])),n=aL(l),r=new(dL(o))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},mL=mi,ZL=R,hL=H,bL=K,pL=OJ,IL=zJ,gL=AZ,yL=Km,XL=T,GL=hn,VL=wI,fL=Gr,WL=Hm,CL=tL,vL=Ht,RL=at,SL=Yi,YL=se,KL=He,JL=nc,LL=pe,NL=vd,HL=sr.f,xL=sL,kL=da.forEach,UL=mm,FL=Ot,AL=S,wL=hb,TL=En.get,BL=En.set,zL=FL.f,jL=AL.f,PL=Math.round,QL=ZL.RangeError,ML=gL.ArrayBuffer,EL=ML.prototype,DL=gL.DataView,OL=IL.NATIVE_ARRAY_BUFFER_VIEWS,_L=IL.TYPED_ARRAY_CONSTRUCTOR,qL=IL.TYPED_ARRAY_TAG,$L=IL.TypedArray,eN=IL.TypedArrayPrototype,tN=IL.aTypedArrayConstructor,nN=IL.isTypedArray,rN=function(e,t){tN(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},iN=function(e,t){zL(e,t,{get:function(){return TL(this)[t]}})},cN=function(e){var t;return LL(EL,e)||"ArrayBuffer"==(t=SL(e))||"SharedArrayBuffer"==t},aN=function(e,t){return nN(e)&&!KL(t)&&t in e&&VL(+t)&&t>=0},oN=function(e,t){return t=vL(t),aN(e,t)?XL(2,e[t]):jL(e,t)},lN=function(e,t,n){return t=vL(t),!(aN(e,t)&&YL(n)&&RL(n,"value"))||RL(n,"get")||RL(n,"set")||n.configurable||RL(n,"writable")&&!n.writable||RL(n,"enumerable")&&!n.enumerable?zL(e,t,n):(e[t]=n.value,e)};bL?(OL||(AL.f=oN,FL.f=lN,iN(eN,"buffer"),iN(eN,"byteOffset"),iN(eN,"byteLength"),iN(eN,"length")),mL({target:"Object",stat:!0,forced:!OL},{getOwnPropertyDescriptor:oN,defineProperty:lN}),dJ.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,a="set"+e,o=ZL[i],l=o,u=l&&l.prototype,d={},s=function(e,t){zL(e,t,{get:function(){return function(e,t){var n=TL(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=TL(e);n&&(i=(i=PL(i))<0?0:i>255?255:255&i),c.view[a](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};OL?pL&&(l=t((function(e,t,n,i){return yL(e,u),wL(YL(t)?cN(t)?void 0!==i?new o(t,CL(n,r),i):void 0!==n?new o(t,CL(n,r)):new o(t):nN(t)?rN(l,t):hL(xL,l,t):new o(WL(t)),e,l)})),NL&&NL(l,$L),kL(HL(o),(function(e){e in l||GL(l,e,o[e])})),l.prototype=u):(l=t((function(e,t,n,i){yL(e,u);var c,a,o,d=0,m=0;if(YL(t)){if(!cN(t))return nN(t)?rN(l,t):hL(xL,l,t);c=t,m=CL(n,r);var Z=t.byteLength;if(void 0===i){if(Z%r)throw QL("Wrong length");if((a=Z-m)<0)throw QL("Wrong length")}else if((a=fL(i)*r)+m>Z)throw QL("Wrong length");o=a/r}else o=WL(t),c=new ML(a=o*r);for(BL(e,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new DL(c)});d<o;)s(e,d++)})),NL&&NL(l,$L),u=l.prototype=JL(eN)),u.constructor!==l&&GL(u,"constructor",l),GL(u,_L,l),qL&&GL(u,qL,i),d[i]=l,mL({global:!0,forced:l!=o,sham:!OL},d),"BYTES_PER_ELEMENT"in l||GL(l,"BYTES_PER_ELEMENT",r),"BYTES_PER_ELEMENT"in u||GL(u,"BYTES_PER_ELEMENT",r),UL(i)}):dJ.exports=function(){},(0,dJ.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,dJ.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dJ.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var uN=zJ,dN=M(yl),sN=uN.aTypedArray;(0,uN.exportTypedArrayMethod)("copyWithin",(function(e,t){return dN(sN(this),e,t,arguments.length>2?arguments[2]:void 0)}));var mN=da.every,ZN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("every",(function(e){return mN(ZN(this),e,arguments.length>1?arguments[1]:void 0)}));var hN=H,bN=Yl,pN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return hN(bN,pN(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var IN=fr,gN=TX,yN=zJ.TYPED_ARRAY_CONSTRUCTOR,XN=zJ.aTypedArrayConstructor,GN=function(e){return XN(gN(e,e[yN]))},VN=function(e,t){for(var n=0,r=IN(t),i=new e(r);r>n;)i[n]=t[n++];return i},fN=GN,WN=da.filter,CN=function(e,t){return VN(fN(e),t)},vN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("filter",(function(e){var t=WN(vN(this),e,arguments.length>1?arguments[1]:void 0);return CN(this,t)}));var RN=da.find,SN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("find",(function(e){return RN(SN(this),e,arguments.length>1?arguments[1]:void 0)}));var YN=da.findIndex,KN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("findIndex",(function(e){return YN(KN(this),e,arguments.length>1?arguments[1]:void 0)}));var JN=da.forEach,LN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("forEach",(function(e){JN(LN(this),e,arguments.length>1?arguments[1]:void 0)})),(0,zJ.exportTypedArrayStaticMethod)("from",sL,OJ);var NN=Sr.includes,HN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("includes",(function(e){return NN(HN(this),e,arguments.length>1?arguments[1]:void 0)}));var xN=Sr.indexOf,kN=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("indexOf",(function(e){return xN(kN(this),e,arguments.length>1?arguments[1]:void 0)}));var UN=R,FN=Y,AN=M,wN=zJ,TN=es,BN=Vt("iterator"),zN=UN.Uint8Array,jN=AN(TN.values),PN=AN(TN.keys),QN=AN(TN.entries),MN=wN.aTypedArray,EN=wN.exportTypedArrayMethod,DN=zN&&zN.prototype,ON=!FN((function(){DN[BN].call([1])})),_N=!!DN&&DN.values&&DN[BN]===DN.values&&"values"===DN.values.name,qN=function(){return jN(MN(this))};EN("entries",(function(){return QN(MN(this))}),ON),EN("keys",(function(){return PN(MN(this))}),ON),EN("values",qN,ON||!_N,{name:"values"}),EN(BN,qN,ON||!_N,{name:"values"});var $N=zJ.aTypedArray,eH=zJ.exportTypedArrayMethod,tH=M([].join);eH("join",(function(e){return tH($N(this),e)}));var nH=Ii,rH=le,iH=hr,cH=fr,aH=rs,oH=Math.min,lH=[].lastIndexOf,uH=!!lH&&1/[1].lastIndexOf(1,-0)<0,dH=aH("lastIndexOf"),sH=uH||!dH?function(e){if(uH)return nH(lH,this,arguments)||0;var t=rH(this),n=cH(t),r=n-1;for(arguments.length>1&&(r=oH(r,iH(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:lH,mH=Ii,ZH=sH,hH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return mH(ZH,hH(this),t>1?[e,arguments[1]]:[e])}));var bH=da.map,pH=GN,IH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("map",(function(e){return bH(IH(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(pH(e))(t)}))}));var gH=zJ.aTypedArrayConstructor;(0,zJ.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(gH(this))(t);t>e;)n[e]=arguments[e++];return n}),OJ);var yH=we,XH=rt,GH=re,VH=fr,fH=R.TypeError,WH=function(e){return function(t,n,r,i){yH(n);var c=XH(t),a=GH(c),o=VH(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 fH("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}},CH={left:WH(!1),right:WH(!0)},vH=CH.left,RH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return vH(RH(this),e,t,t>1?arguments[1]:void 0)}));var SH=CH.right,YH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return SH(YH(this),e,t,t>1?arguments[1]:void 0)}));var KH=zJ.aTypedArray,JH=zJ.exportTypedArrayMethod,LH=Math.floor;JH("reverse",(function(){for(var e,t=this,n=KH(t).length,r=LH(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var NH=R,HH=H,xH=zJ,kH=fr,UH=tL,FH=rt,AH=Y,wH=NH.RangeError,TH=NH.Int8Array,BH=TH&&TH.prototype,zH=BH&&BH.set,jH=xH.aTypedArray,PH=xH.exportTypedArrayMethod,QH=!AH((function(){var e=new Uint8ClampedArray(2);return HH(zH,e,{length:1,0:3},1),3!==e[1]})),MH=QH&&xH.NATIVE_ARRAY_BUFFER_VIEWS&&AH((function(){var e=new TH(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));PH("set",(function(e){jH(this);var t=UH(arguments.length>1?arguments[1]:void 0,1),n=FH(e);if(QH)return HH(zH,this,n,t);var r=this.length,i=kH(n),c=0;if(i+t>r)throw wH("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!QH||MH);var EH=GN,DH=yc,OH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("slice",(function(e,t){for(var n=DH(OH(this),e,t),r=EH(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 _H=da.some,qH=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("some",(function(e){return _H(qH(this),e,arguments.length>1?arguments[1]:void 0)}));var $H=R,ex=M,tx=Y,nx=we,rx=ks,ix=zJ,cx=Fs,ax=As,ox=We,lx=Ts,ux=$H.Array,dx=ix.aTypedArray,sx=ix.exportTypedArrayMethod,mx=$H.Uint16Array,Zx=mx&&ex(mx.prototype.sort),hx=!(!Zx||tx((function(){Zx(new mx(2),null)}))&&tx((function(){Zx(new mx(2),{})}))),bx=!!Zx&&!tx((function(){if(ox)return ox<74;if(cx)return cx<67;if(ax)return!0;if(lx)return lx<602;var e,t,n=new mx(516),r=ux(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(Zx(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));sx("sort",(function(e){return void 0!==e&&nx(e),bx?Zx(this,e):rx(dx(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))}),!bx||hx);var px=Gr,Ix=gr,gx=GN,yx=zJ.aTypedArray;(0,zJ.exportTypedArrayMethod)("subarray",(function(e,t){var n=yx(this),r=n.length,i=Ix(e,r);return new(gx(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,px((void 0===t?r:Ix(t,r))-i))}));var Xx=Ii,Gx=zJ,Vx=Y,fx=yc,Wx=R.Int8Array,Cx=Gx.aTypedArray,vx=Gx.exportTypedArrayMethod,Rx=[].toLocaleString,Sx=!!Wx&&Vx((function(){Rx.call(new Wx(1))}));vx("toLocaleString",(function(){return Xx(Rx,Sx?fx(Cx(this)):Cx(this),fx(arguments))}),Vx((function(){return[1,2].toLocaleString()!=new Wx([1,2]).toLocaleString()}))||!Vx((function(){Wx.prototype.toLocaleString.call([1,2])})));var Yx=zJ.exportTypedArrayMethod,Kx=Y,Jx=M,Lx=R.Uint8Array,Nx=Lx&&Lx.prototype||{},Hx=[].toString,xx=Jx([].join);Kx((function(){Hx.call({})}))&&(Hx=function(){return xx(this)});var kx=Nx.toString!=Hx;Yx("toString",Hx,kx);var Ux=M,Fx=Rm,Ax=Rh.exports.getWeakData,wx=nn,Tx=se,Bx=Km,zx=db,jx=at,Px=En.set,Qx=En.getterFor,Mx=da.find,Ex=da.findIndex,Dx=Ux([].splice),Ox=0,_x=function(e){return e.frozen||(e.frozen=new qx)},qx=function(){this.entries=[]},$x=function(e,t){return Mx(e.entries,(function(e){return e[0]===t}))};qx.prototype={get:function(e){var t=$x(this,e);if(t)return t[1]},has:function(e){return!!$x(this,e)},set:function(e,t){var n=$x(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ex(this.entries,(function(t){return t[0]===e}));return~t&&Dx(this.entries,t,1),!!~t}};var ek,tk={getConstructor:function(e,t,n,r){var i=e((function(e,i){Bx(e,c),Px(e,{type:t,id:Ox++,frozen:void 0}),null!=i&&zx(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=Qx(t),o=function(e,t,n){var r=a(e),i=Ax(wx(t),!0);return!0===i?_x(r).set(t,n):i[r.id]=n,e};return Fx(c,{delete:function(e){var t=a(this);if(!Tx(e))return!1;var n=Ax(e);return!0===n?_x(t).delete(e):n&&jx(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!Tx(e))return!1;var n=Ax(e);return!0===n?_x(t).has(e):n&&jx(n,t.id)}}),Fx(c,n?{get:function(e){var t=a(this);if(Tx(e)){var n=Ax(e);return!0===n?_x(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}},nk=R,rk=M,ik=Rm,ck=Rh.exports,ak=Yb,ok=tk,lk=se,uk=Hh,dk=En.enforce,sk=vn,mk=!nk.ActiveXObject&&"ActiveXObject"in nk,Zk=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},hk=ak("WeakMap",Zk,ok);if(sk&&mk){ek=ok.getConstructor(Zk,"WeakMap",!0),ck.enable();var bk=hk.prototype,pk=rk(bk.delete),Ik=rk(bk.has),gk=rk(bk.get),yk=rk(bk.set);ik(bk,{delete:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),pk(this,e)||t.frozen.delete(e)}return pk(this,e)},has:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),Ik(this,e)||t.frozen.has(e)}return Ik(this,e)},get:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),Ik(this,e)?gk(this,e):t.frozen.get(e)}return gk(this,e)},set:function(e,t){if(lk(e)&&!uk(e)){var n=dk(this);n.frozen||(n.frozen=new ek),Ik(this,e)?yk(this,e,t):n.frozen.set(e,t)}else yk(this,e,t);return this}})}Yb("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),tk);var Xk={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},Gk=Ft("span").classList,Vk=Gk&&Gk.constructor&&Gk.constructor.prototype,fk=Vk===Object.prototype?void 0:Vk,Wk=da.forEach,Ck=R,vk=Xk,Rk=fk,Sk=rs("forEach")?[].forEach:function(e){return Wk(this,e,arguments.length>1?arguments[1]:void 0)},Yk=hn,Kk=function(e){if(e&&e.forEach!==Sk)try{Yk(e,"forEach",Sk)}catch(t){e.forEach=Sk}};for(var Jk in vk)vk[Jk]&&Kk(Ck[Jk]&&Ck[Jk].prototype);Kk(Rk);var Lk=R,Nk=Xk,Hk=fk,xk=es,kk=hn,Uk=Vt,Fk=Uk("iterator"),Ak=Uk("toStringTag"),wk=xk.values,Tk=function(e,t){if(e){if(e[Fk]!==wk)try{kk(e,Fk,wk)}catch(t){e[Fk]=wk}if(e[Ak]||kk(e,Ak,t),Nk[t])for(var n in xk)if(e[n]!==xk[n])try{kk(e,n,xk[n])}catch(t){e[n]=xk[n]}}};for(var Bk in Nk)Tk(Lk[Bk]&&Lk[Bk].prototype,Bk);Tk(Hk,"DOMTokenList");var zk=R,jk=CG;mi({global:!0,bind:!0,enumerable:!0,forced:!zk.setImmediate||!zk.clearImmediate},{setImmediate:jk.set,clearImmediate:jk.clear});var Pk=mi,Qk=zG,Mk=we,Ek=zX,Dk=PX,Ok=R.process;Pk({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){Ek(arguments.length,1),Mk(e);var t=Dk&&Ok.domain;Qk(t?t.bind(e):e)}});var _k=Y,qk=Vt("iterator"),$k=!_k((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[qk]||"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})),eU=M,tU=/[^\0-\u007E]/,nU=/[.\u3002\uFF0E\uFF61]/g,rU="Overflow: input needs wider integers to process",iU=R.RangeError,cU=eU(nU.exec),aU=Math.floor,oU=String.fromCharCode,lU=eU("".charCodeAt),uU=eU([].join),dU=eU([].push),sU=eU("".replace),mU=eU("".split),ZU=eU("".toLowerCase),hU=function(e){return e+22+75*(e<26)},bU=function(e,t,n){var r=0;for(e=n?aU(e/700):e>>1,e+=aU(e/t);e>455;)e=aU(e/35),r+=36;return aU(r+36*e/(e+38))},pU=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=lU(e,n++);if(i>=55296&&i<=56319&&n<r){var c=lU(e,n++);56320==(64512&c)?dU(t,((1023&i)<<10)+(1023&c)+65536):(dU(t,i),n--)}else dU(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&&dU(t,oU(r));var l=t.length,u=l;for(l&&dU(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>aU((2147483647-a)/s))throw iU(rU);for(a+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++a>2147483647)throw iU(rU);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;dU(t,oU(hU(h+b%p))),m=aU(b/p),Z+=36}dU(t,oU(hU(m))),o=bU(a,s,u==l),a=0,u++}}a++,c++}return uU(t,"")},IU=mi,gU=R,yU=be,XU=H,GU=M,VU=$k,fU=bn.exports,WU=Rm,CU=Kc,vU=Id,RU=En,SU=Km,YU=ue,KU=at,JU=Hc,LU=Yi,NU=nn,HU=se,xU=Li,kU=nc,UU=T,FU=fu,AU=pu,wU=zX,TU=ks,BU=Vt("iterator"),zU=RU.set,jU=RU.getterFor("URLSearchParams"),PU=RU.getterFor("URLSearchParamsIterator"),QU=yU("fetch"),MU=yU("Request"),EU=yU("Headers"),DU=MU&&MU.prototype,OU=EU&&EU.prototype,_U=gU.RegExp,qU=gU.TypeError,$U=gU.decodeURIComponent,eF=gU.encodeURIComponent,tF=GU("".charAt),nF=GU([].join),rF=GU([].push),iF=GU("".replace),cF=GU([].shift),aF=GU([].splice),oF=GU("".split),lF=GU("".slice),uF=/\+/g,dF=Array(4),sF=function(e){return dF[e-1]||(dF[e-1]=_U("((?:%[\\da-f]{2}){"+e+"})","gi"))},mF=function(e){try{return $U(e)}catch(t){return e}},ZF=function(e){var t=iF(e,uF," "),n=4;try{return $U(t)}catch(e){for(;n;)t=iF(t,sF(n--),mF);return t}},hF=/[!'()~]|%20/g,bF={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},pF=function(e){return bF[e]},IF=function(e){return iF(eF(e),hF,pF)},gF=vU((function(e,t){zU(this,{type:"URLSearchParamsIterator",iterator:FU(jU(e).entries),kind:t})}),"Iterator",(function(){var e=PU(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),yF=function(e){this.entries=[],this.url=null,void 0!==e&&(HU(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===tF(e,0)?lF(e,1):e:xU(e)))};yF.prototype={type:"URLSearchParams",bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,a,o,l=AU(e);if(l)for(n=(t=FU(e,l)).next;!(r=XU(n,t)).done;){if(c=(i=FU(NU(r.value))).next,(a=XU(c,i)).done||(o=XU(c,i)).done||!XU(c,i).done)throw qU("Expected sequence with length 2");rF(this.entries,{key:xU(a.value),value:xU(o.value)})}else for(var u in e)KU(e,u)&&rF(this.entries,{key:u,value:xU(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=oF(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=oF(t,"="),rF(this.entries,{key:ZF(cF(n)),value:ZF(nF(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],rF(n,IF(e.key)+"="+IF(e.value));return nF(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var XF=function(){SU(this,GF);var e=arguments.length>0?arguments[0]:void 0;zU(this,new yF(e))},GF=XF.prototype;if(WU(GF,{append:function(e,t){wU(arguments.length,2);var n=jU(this);rF(n.entries,{key:xU(e),value:xU(t)}),n.updateURL()},delete:function(e){wU(arguments.length,1);for(var t=jU(this),n=t.entries,r=xU(e),i=0;i<n.length;)n[i].key===r?aF(n,i,1):i++;t.updateURL()},get:function(e){wU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){wU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=[],i=0;i<t.length;i++)t[i].key===n&&rF(r,t[i].value);return r},has:function(e){wU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){wU(arguments.length,1);for(var n,r=jU(this),i=r.entries,c=!1,a=xU(e),o=xU(t),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?aF(i,l--,1):(c=!0,n.value=o));c||rF(i,{key:a,value:o}),r.updateURL()},sort:function(){var e=jU(this);TU(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=jU(this).entries,r=JU(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 gF(this,"keys")},values:function(){return new gF(this,"values")},entries:function(){return new gF(this,"entries")}},{enumerable:!0}),fU(GF,BU,GF.entries,{name:"entries"}),fU(GF,"toString",(function(){return jU(this).serialize()}),{enumerable:!0}),CU(XF,"URLSearchParams"),IU({global:!0,forced:!VU},{URLSearchParams:XF}),!VU&&YU(EU)){var VF=GU(OU.has),fF=GU(OU.set),WF=function(e){if(HU(e)){var t,n=e.body;if("URLSearchParams"===LU(n))return t=e.headers?new EU(e.headers):new EU,VF(t,"content-type")||fF(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),kU(e,{body:UU(0,xU(n)),headers:UU(0,t)})}return e};if(YU(QU)&&IU({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return QU(e,arguments.length>1?WF(arguments[1]):{})}}),YU(MU)){var CF=function(e){return SU(this,DU),new MU(e,arguments.length>1?WF(arguments[1]):{})};DU.constructor=CF,CF.prototype=DU,IU({global:!0,forced:!0},{Request:CF})}}var vF,RF={URLSearchParams:XF,getState:jU},SF=mi,YF=K,KF=$k,JF=R,LF=Hc,NF=M,HF=Ni.f,xF=bn.exports,kF=Km,UF=at,FF=Pg,AF=xu,wF=Zc,TF=$v.codeAt,BF=function(e){var t,n,r=[],i=mU(sU(ZU(e),nU,"."),".");for(t=0;t<i.length;t++)n=i[t],dU(r,cU(tU,n)?"xn--"+pU(n):n);return uU(r,".")},zF=Li,jF=Kc,PF=zX,QF=RF,MF=En,EF=MF.set,DF=MF.getterFor("URL"),OF=QF.URLSearchParams,_F=QF.getState,qF=JF.URL,$F=JF.TypeError,eA=JF.parseInt,tA=Math.floor,nA=Math.pow,rA=NF("".charAt),iA=NF(/./.exec),cA=NF([].join),aA=NF(1..toString),oA=NF([].pop),lA=NF([].push),uA=NF("".replace),dA=NF([].shift),sA=NF("".split),mA=NF("".slice),ZA=NF("".toLowerCase),hA=NF([].unshift),bA=/[a-z]/i,pA=/[\d+-.a-z]/i,IA=/\d/,gA=/^0x/i,yA=/^[0-7]+$/,XA=/^\d+$/,GA=/^[\da-f]+$/i,VA=/[\0\t\n\r #%/:<>?@[\\\]^|]/,fA=/[\0\t\n\r #/:<>?@[\\\]^|]/,WA=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,CA=/[\t\n\r]/g,vA=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)hA(t,e%256),e=tA(e/256);return cA(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+=aA(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},RA={},SA=FF({},RA,{" ":1,'"':1,"<":1,">":1,"`":1}),YA=FF({},SA,{"#":1,"?":1,"{":1,"}":1}),KA=FF({},YA,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),JA=function(e,t){var n=TF(e,0);return n>32&&n<127&&!UF(t,e)?e:encodeURIComponent(e)},LA={ftp:21,file:null,http:80,https:443,ws:80,wss:443},NA=function(e,t){var n;return 2==e.length&&iA(bA,rA(e,0))&&(":"==(n=rA(e,1))||!t&&"|"==n)},HA=function(e){var t;return e.length>1&&NA(mA(e,0,2))&&(2==e.length||"/"===(t=rA(e,2))||"\\"===t||"?"===t||"#"===t)},xA=function(e){return"."===e||"%2e"===ZA(e)},kA={},UA={},FA={},AA={},wA={},TA={},BA={},zA={},jA={},PA={},QA={},MA={},EA={},DA={},OA={},_A={},qA={},$A={},ew={},tw={},nw={},rw=function e(t,n,r){var i,c,a,o=zF(t);if(n){if(c=this.parse(o))throw $F(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(o,null,i))throw $F(c);(a=_F(new OF)).bindURL(this),this.searchParams=a}};rw.prototype={type:"URL",parse:function(e,t,n){var r,i,c,a,o,l=this,u=t||kA,d=0,s="",m=!1,Z=!1,h=!1;for(e=zF(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=uA(e,WA,"")),e=uA(e,CA,""),r=AF(e);d<=r.length;){switch(i=r[d],u){case kA:if(!i||!iA(bA,i)){if(t)return"Invalid scheme";u=FA;continue}s+=ZA(i),u=UA;break;case UA:if(i&&(iA(pA,i)||"+"==i||"-"==i||"."==i))s+=ZA(i);else{if(":"!=i){if(t)return"Invalid scheme";s="",u=FA,d=0;continue}if(t&&(l.isSpecial()!=UF(LA,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&LA[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=DA:l.isSpecial()&&n&&n.scheme==l.scheme?u=AA:l.isSpecial()?u=zA:"/"==r[d+1]?(u=wA,d++):(l.cannotBeABaseURL=!0,lA(l.path,""),u=ew)}break;case FA:if(!n||n.cannotBeABaseURL&&"#"!=i)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=wF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=nw;break}u="file"==n.scheme?DA:TA;continue;case AA:if("/"!=i||"/"!=r[d+1]){u=TA;continue}u=jA,d++;break;case wA:if("/"==i){u=PA;break}u=$A;continue;case TA:if(l.scheme=n.scheme,i==vF)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=wF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=BA;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=wF(n.path),l.query="",u=tw;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=wF(n.path),l.path.length--,u=$A;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=wF(n.path),l.query=n.query,l.fragment="",u=nw}break;case BA:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=$A;continue}u=PA}else u=jA;break;case zA:if(u=jA,"/"!=i||"/"!=rA(s,d+1))continue;d++;break;case jA:if("/"!=i&&"\\"!=i){u=PA;continue}break;case PA:if("@"==i){m&&(s="%40"+s),m=!0,c=AF(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||h){var I=JA(p,KA);h?l.password+=I:l.username+=I}else h=!0}s=""}else if(i==vF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=AF(s).length+1,s="",u=QA}else s+=i;break;case QA:case MA:if(t&&"file"==l.scheme){u=_A;continue}if(":"!=i||Z){if(i==vF||"/"==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=qA,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=EA,t==MA)return}break;case EA:if(!iA(IA,i)){if(i==vF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=eA(s,10);if(g>65535)return"Invalid port";l.port=l.isSpecial()&&g===LA[l.scheme]?null:g,s=""}if(t)return;u=qA;continue}return"Invalid port"}s+=i;break;case DA:if(l.scheme="file","/"==i||"\\"==i)u=OA;else{if(!n||"file"!=n.scheme){u=$A;continue}if(i==vF)l.host=n.host,l.path=wF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=wF(n.path),l.query="",u=tw;else{if("#"!=i){HA(cA(wF(r,d),""))||(l.host=n.host,l.path=wF(n.path),l.shortenPath()),u=$A;continue}l.host=n.host,l.path=wF(n.path),l.query=n.query,l.fragment="",u=nw}}break;case OA:if("/"==i||"\\"==i){u=_A;break}n&&"file"==n.scheme&&!HA(cA(wF(r,d),""))&&(NA(n.path[0],!0)?lA(l.path,n.path[0]):l.host=n.host),u=$A;continue;case _A:if(i==vF||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&NA(s))u=$A;else if(""==s){if(l.host="",t)return;u=qA}else{if(a=l.parseHost(s))return a;if("localhost"==l.host&&(l.host=""),t)return;s="",u=qA}continue}s+=i;break;case qA:if(l.isSpecial()){if(u=$A,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=vF&&(u=$A,"/"!=i))continue}else l.fragment="",u=nw;else l.query="",u=tw;break;case $A:if(i==vF||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(o=ZA(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||lA(l.path,"")):xA(s)?"/"==i||"\\"==i&&l.isSpecial()||lA(l.path,""):("file"==l.scheme&&!l.path.length&&NA(s)&&(l.host&&(l.host=""),s=rA(s,0)+":"),lA(l.path,s)),s="","file"==l.scheme&&(i==vF||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)dA(l.path);"?"==i?(l.query="",u=tw):"#"==i&&(l.fragment="",u=nw)}else s+=JA(i,YA);break;case ew:"?"==i?(l.query="",u=tw):"#"==i?(l.fragment="",u=nw):i!=vF&&(l.path[0]+=JA(i,RA));break;case tw:t||"#"!=i?i!=vF&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":JA(i,RA)):(l.fragment="",u=nw);break;case nw:i!=vF&&(l.fragment+=JA(i,SA))}d++}},parseHost:function(e){var t,n,r;if("["==rA(e,0)){if("]"!=rA(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 rA(e,s)};if(":"==m()){if(":"!=rA(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&iA(GA,m());)t=16*t+eA(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(!iA(IA,m()))return;for(;iA(IA,m());){if(c=eA(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}(mA(e,1,-1)),!t)return"Invalid host";this.host=t}else if(this.isSpecial()){if(e=BF(e),iA(VA,e))return"Invalid host";if(t=function(e){var t,n,r,i,c,a,o,l=sA(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"==rA(i,0)&&(c=iA(gA,i)?16:8,i=mA(i,8==c?1:2)),""===i)a=0;else{if(!iA(10==c?XA:8==c?yA:GA,i))return e;a=eA(i,c)}lA(n,a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=nA(256,5-t))return null}else if(a>255)return null;for(o=oA(n),r=0;r<n.length;r++)o+=n[r]*nA(256,3-r);return o}(e),null===t)return"Invalid host";this.host=t}else{if(iA(fA,e))return"Invalid host";for(t="",n=AF(e),r=0;r<n.length;r++)t+=JA(n[r],RA);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return UF(LA,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&NA(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+=vA(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+cA(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw $F(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new iw(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+vA(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(zF(e)+":",kA)},getUsername:function(){return this.username},setUsername:function(e){var t=AF(zF(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=JA(t[n],KA)}},getPassword:function(){return this.password},setPassword:function(e){var t=AF(zF(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=JA(t[n],KA)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?vA(e):vA(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,QA)},getHostname:function(){var e=this.host;return null===e?"":vA(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,MA)},getPort:function(){var e=this.port;return null===e?"":zF(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=zF(e))?this.port=null:this.parse(e,EA))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+cA(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,qA))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=zF(e))?this.query=null:("?"==rA(e,0)&&(e=mA(e,1)),this.query="",this.parse(e,tw)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=zF(e))?("#"==rA(e,0)&&(e=mA(e,1)),this.fragment="",this.parse(e,nw)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var iw=function(e){var t=kF(this,cw),n=PF(arguments.length,1)>1?arguments[1]:void 0,r=EF(t,new rw(e,!1,n));YF||(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())},cw=iw.prototype,aw=function(e,t){return{get:function(){return DF(this)[e]()},set:t&&function(e){return DF(this)[t](e)},configurable:!0,enumerable:!0}};if(YF&&HF(cw,{href:aw("serialize","setHref"),origin:aw("getOrigin"),protocol:aw("getProtocol","setProtocol"),username:aw("getUsername","setUsername"),password:aw("getPassword","setPassword"),host:aw("getHost","setHost"),hostname:aw("getHostname","setHostname"),port:aw("getPort","setPort"),pathname:aw("getPathname","setPathname"),search:aw("getSearch","setSearch"),searchParams:aw("getSearchParams"),hash:aw("getHash","setHash")}),xF(cw,"toJSON",(function(){return DF(this).serialize()}),{enumerable:!0}),xF(cw,"toString",(function(){return DF(this).serialize()}),{enumerable:!0}),qF){var ow=qF.createObjectURL,lw=qF.revokeObjectURL;ow&&xF(iw,"createObjectURL",LF(ow,qF)),lw&&xF(iw,"revokeObjectURL",LF(lw,qF))}jF(iw,"URL"),SF({global:!0,forced:!KF,sham:!YF},{URL:iw});var uw,dw=H;function sw(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())}))}
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)||f(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 V(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)||f(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 f(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 R(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=f(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 C=function(e){return e&&e.Math==Math&&e},v=C("object"==("undefined"==typeof globalThis?"undefined":c(globalThis))&&globalThis)||C("object"==("undefined"==typeof window?"undefined":c(window))&&window)||C("object"==("undefined"==typeof self?"undefined":c(self))&&self)||C("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={},k={}.propertyIsEnumerable,U=Object.getOwnPropertyDescriptor,w=U&&!k.call({1:2},1);x.f=w?function(e){var t=U(this,e);return!!t&&t.enumerable}:k;var T,A,F=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},B=K,z=Function.prototype,j=z.bind,Q=z.call,M=B&&j.bind(Q,Q),P=B?function(e){return e&&M(e)}:function(e){return e&&function(){return Q.apply(e,arguments)}},E=P,D=E({}.toString),O=E("".slice),_=function(e){return O(D(e),8,-1)},q=P,$=Y,ee=_,te=v.Object,ne=q("".split),re=$((function(){return!te("z").propertyIsEnumerable(0)}))?function(e){return"String"==ee(e)?ne(e,""):te(e)}:te,ie=v.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=v,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=v,ye=Ie,Xe=ge.process,Ge=ge.Deno,Ve=Xe&&Xe.versions||Ge&&Ge.version,fe=Ve&&Ve.v8;fe&&(A=(T=fe.split("."))[0]>0&&T[0]<4?1:+(T[0]+T[1])),!A&&ye&&(!(T=ye.match(/Edge\/(\d+)/))||T[1]>=74)&&(T=ye.match(/Chrome\/(\d+)/))&&(A=+T[1]);var We=A,Re=We,Ce=Y,ve=!!Object.getOwnPropertySymbols&&!Ce((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Re&&Re<41})),Se=ve&&!Symbol.sham&&"symbol"==c(Symbol.iterator),Ye=be,Je=ue,Ke=pe,Ne=Se,Le=v.Object,He=Ne?function(e){return"symbol"==c(e)}:function(e){var t=Ye("Symbol");return Je(t)&&Ke(t.prototype,Le(e))},xe=v.String,ke=function(e){try{return xe(e)}catch(e){return"Object"}},Ue=ue,we=ke,Te=v.TypeError,Ae=function(e){if(Ue(e))return e;throw Te(we(e)+" is not a function")},Fe=Ae,Be=function(e,t){var n=e[t];return null==n?void 0:Fe(n)},ze=H,je=ue,Qe=se,Me=v.TypeError,Pe=function(e,t){var n,r;if("string"===t&&je(n=e.toString)&&!Qe(r=ze(n,e)))return r;if(je(n=e.valueOf)&&!Qe(r=ze(n,e)))return r;if("string"!==t&&je(n=e.toString)&&!Qe(r=ze(n,e)))return r;throw Me("Can't convert object to primitive value")},Ee={exports:{}},De=v,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=v["__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.21.1",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"});var tt=ce,nt=v.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=v,Zt=Ee.exports,ht=ot,bt=st,pt=ve,It=Se,gt=Zt("wks"),yt=mt.Symbol,Xt=yt&&yt.for,Gt=It?yt:yt&&yt.withoutSetter||bt,Vt=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]},ft=H,Wt=se,Rt=He,Ct=Be,vt=Pe,St=Vt,Yt=v.TypeError,Jt=St("toPrimitive"),Kt=function(e,t){if(!Wt(e)||Rt(e))return e;var n,r=Ct(e,Jt);if(r){if(void 0===t&&(t="default"),n=ft(r,e,t),!Wt(n)||Rt(n))return n;throw Yt("Can't convert object to primitive value")}return void 0===t&&(t="number"),vt(e,t)},Nt=Kt,Lt=He,Ht=function(e){var t=Nt(e,"string");return Lt(t)?t:t+""},xt=se,kt=v.document,Ut=xt(kt)&&xt(kt.createElement),wt=function(e){return Ut?kt.createElement(e):{}},Tt=wt,At=!J&&!Y((function(){return 7!=Object.defineProperty(Tt("div"),"a",{get:function(){return 7}}).a})),Ft=J,Bt=H,zt=x,jt=F,Qt=le,Mt=Ht,Pt=ot,Et=At,Dt=Object.getOwnPropertyDescriptor;S.f=Ft?Dt:function(e,t){if(e=Qt(e),t=Mt(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=v,$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=At,on=_t,an=nn,ln=Ht,un=v.TypeError,dn=Object.defineProperty,sn=Object.getOwnPropertyDescriptor;Ot.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=Ot,Zn=F,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,Vn=In.inspectSource,fn=ue,Wn=Vn,Rn=v.WeakMap,Cn=fn(Rn)&&/native code/.test(Wn(Rn)),vn=Ee.exports,Sn=st,Yn=vn("keys"),Jn=function(e){return Yn[e]||(Yn[e]=Sn(e))},Kn={},Nn=Cn,Ln=v,Hn=P,xn=se,kn=hn,Un=ot,wn=$e,Tn=Jn,An=Kn,Fn=Ln.TypeError,Bn=Ln.WeakMap;if(Nn||wn.state){var zn=wn.state||(wn.state=new Bn),jn=Hn(zn.get),Qn=Hn(zn.has),Mn=Hn(zn.set);yn=function(e,t){if(Qn(zn,e))throw new Fn("Object already initialized");return t.facade=e,Mn(zn,e,t),t},Xn=function(e){return jn(zn,e)||{}},Gn=function(e){return Qn(zn,e)}}else{var Pn=Tn("state");An[Pn]=!0,yn=function(e,t){if(Un(e,Pn))throw new Fn("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 Fn("Incompatible receiver, "+e+" required");return n}}},Dn=J,On=ot,_n=Function.prototype,qn=Dn&&Object.getOwnPropertyDescriptor,$n=On(_n,"name"),er={EXISTS:$n,PROPER:$n&&"something"===function(){}.name,CONFIGURABLE:$n&&(!Dn||Dn&&qn(_n,"name").configurable)},tr=v,nr=ue,rr=ot,ir=hn,cr=_e,or=Vn,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},Vr=Gr,fr=function(e){return Vr(e.length)},Wr=le,Rr=gr,Cr=fr,vr=function(e){return function(t,n,r){var i,c=Wr(t),o=Cr(c),a=Rr(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:vr(!0),indexOf:vr(!1)},Yr=ot,Jr=le,Kr=Sr.indexOf,Nr=Kn,Lr=P([].push),Hr=function(e,t){var n,r=Jr(e),i=0,c=[];for(n in r)!Yr(Nr,n)&&Yr(r,n)&&Lr(c,n);for(;t.length>i;)Yr(r,n=t[i++])&&(~Kr(c,n)||Lr(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 wr={};wr.f=Object.getOwnPropertySymbols;var Tr=be,Ar=sr,Fr=wr,Br=nn,zr=P([].concat),jr=Tr("Reflect","ownKeys")||function(e){var t=Ar.f(Br(e)),n=Fr.f;return n?zr(t,n(e)):t},Qr=ot,Mr=jr,Pr=S,Er=Ot,Dr=function(e,t,n){for(var r=Mr(t),i=Er.f,c=Pr.f,o=0;o<r.length;o++){var a=r[o];Qr(e,a)||n&&Qr(n,a)||i(e,a,c(t,a))}},Or=Y,_r=ue,qr=/#|\.prototype\./,$r=function(e,t){var n=ti[ei(e)];return n==ri||n!=ni&&(_r(t)?Or(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=v,oi=S.f,ai=hn,li=bn.exports,ui=_e,di=Dr,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=K,hi=Function.prototype,bi=hi.apply,pi=hi.call,Ii="object"==("undefined"==typeof Reflect?"undefined":c(Reflect))&&Reflect.apply||(Zi?pi.bind(bi):function(){return pi.apply(bi,arguments)}),gi=_,yi=Array.isArray||function(e){return"Array"==gi(e)},Xi={};Xi[Vt("toStringTag")]="z";var Gi="[object z]"===String(Xi),Vi=v,fi=Gi,Wi=ue,Ri=_,Ci=Vt("toStringTag"),vi=Vi.Object,Si="Arguments"==Ri(function(){return arguments}()),Yi=fi?Ri: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=vi(e),Ci))?n:Si?Ri(t):"Object"==(r=Ri(t))&&Wi(t.callee)?"Arguments":r},Ji=Yi,Ki=v.String,Ni=function(e){if("Symbol"===Ji(e))throw TypeError("Cannot convert a Symbol value to a string");return Ki(e)},Li={},Hi=Hr,xi=xr,ki=Object.keys||function(e){return Hi(e,xi)},Ui=J,wi=_t,Ti=Ot,Ai=nn,Fi=le,Bi=ki;Li.f=Ui&&!wi?Object.defineProperties:function(e,t){Ai(e);for(var n,r=Fi(t),i=Bi(t),c=i.length,o=0;c>o;)Ti.f(e,n=i[o++],r[n]);return e};var zi,ji=be("document","documentElement"),Qi=nn,Mi=Li,Pi=xr,Ei=Kn,Di=ji,Oi=wt,_i=Jn("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=Qi(e),n=new qi,qi.prototype=null,n[_i]=e):n=tc(),void 0===t?n:Mi.f(n,t)},rc={},ic=Ht,cc=Ot,oc=F,ac=function(e,t,n){var r=ic(t);r in e?cc.f(e,r,oc(0,n)):e[r]=n},lc=gr,uc=fr,dc=ac,sc=v.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),o=sc(mc(c-i,0)),a=0;i<c;i++,a++)dc(o,a,e[i]);return o.length=a,o},hc=_,bc=le,pc=sr.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=P([].slice),Xc={},Gc=Vt;Xc.f=Gc;var Vc=v,fc=ot,Wc=Xc,Rc=Ot.f,Cc=function(e){var t=Vc.Symbol||(Vc.Symbol={});fc(t,e)||Rc(t,e,{value:Wc.f(e)})},vc=Ot.f,Sc=ot,Yc=Vt("toStringTag"),Jc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Sc(e,Yc)&&vc(e,Yc,{configurable:!0,value:t})},Kc=Ae,Nc=K,Lc=P(P.bind),Hc=function(e,t){return Kc(e),void 0===t?e:Nc?Lc(e,t):function(){return e.apply(t,arguments)}},xc=P,kc=Y,Uc=ue,wc=Yi,Tc=Vn,Ac=function(){},Fc=[],Bc=be("Reflect","construct"),zc=/^\s*(?:class|function)\b/,jc=xc(zc.exec),Qc=!zc.exec(Ac),Mc=function(e){if(!Uc(e))return!1;try{return Bc(Ac,Fc,e),!0}catch(e){return!1}},Pc=function(e){if(!Uc(e))return!1;switch(wc(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Qc||!!jc(zc,Tc(e))}catch(e){return!0}};Pc.sham=!0;var Ec=!Bc||kc((function(){var e;return Mc(Mc.call)||!Mc(Object)||!Mc((function(){e=!0}))||e}))?Pc:Mc,Dc=v,Oc=yi,_c=Ec,qc=se,$c=Vt("species"),eo=Dc.Array,to=function(e){var t;return Oc(e)&&(t=e.constructor,(_c(t)&&(t===eo||Oc(t.prototype))||qc(t)&&null===(t=t[$c]))&&(t=void 0)),void 0===t?eo:t},no=function(e,t){return new(to(e))(0===t?0:t)},ro=Hc,io=re,co=rt,oo=fr,ao=no,lo=P([].push),uo=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=co(l),b=io(h),p=ro(u,d),I=oo(b),g=0,y=s||ao,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:lo(X,m)}else switch(e){case 4:return!1;case 7:lo(X,m)}return c?-1:r||i?i:X}},so={forEach:uo(0),map:uo(1),filter:uo(2),some:uo(3),every:uo(4),find:uo(5),findIndex:uo(6),filterReject:uo(7)},mo=mi,Zo=v,ho=be,bo=Ii,po=H,Io=P,go=J,yo=ve,Xo=Y,Go=ot,Vo=yi,fo=ue,Wo=se,Ro=pe,Co=He,vo=nn,So=rt,Yo=le,Jo=Ht,Ko=Ni,No=F,Lo=nc,Ho=ki,xo=sr,ko=rc,Uo=wr,wo=S,To=Ot,Ao=Li,Fo=x,Bo=yc,zo=bn.exports,jo=Ee.exports,Qo=Kn,Mo=st,Po=Vt,Eo=Xc,Do=Cc,Oo=Jc,_o=En,qo=so.forEach,$o=Jn("hidden"),ea=Po("toPrimitive"),ta=_o.set,na=_o.getterFor("Symbol"),ra=Object.prototype,ia=Zo.Symbol,ca=ia&&ia.prototype,oa=Zo.TypeError,aa=Zo.QObject,la=ho("JSON","stringify"),ua=wo.f,da=To.f,sa=ko.f,ma=Fo.f,Za=Io([].push),ha=jo("symbols"),ba=jo("op-symbols"),pa=jo("string-to-symbol-registry"),Ia=jo("symbol-to-string-registry"),ga=jo("wks"),ya=!aa||!aa.prototype||!aa.prototype.findChild,Xa=go&&Xo((function(){return 7!=Lo(da({},"a",{get:function(){return da(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=ua(ra,t);r&&delete ra[t],da(e,t,n),r&&e!==ra&&da(ra,t,r)}:da,Ga=function(e,t){var n=ha[e]=Lo(ca);return ta(n,{type:"Symbol",tag:e,description:t}),go||(n.description=t),n},Va=function(e,t,n){e===ra&&Va(ba,t,n),vo(e);var r=Jo(t);return vo(n),Go(ha,r)?(n.enumerable?(Go(e,$o)&&e[$o][r]&&(e[$o][r]=!1),n=Lo(n,{enumerable:No(0,!1)})):(Go(e,$o)||da(e,$o,No(1,{})),e[$o][r]=!0),Xa(e,r,n)):da(e,r,n)},fa=function(e,t){vo(e);var n=Yo(t),r=Ho(n).concat(va(n));return qo(r,(function(t){go&&!po(Wa,n,t)||Va(e,t,n[t])})),e},Wa=function(e){var t=Jo(e),n=po(ma,this,t);return!(this===ra&&Go(ha,t)&&!Go(ba,t))&&(!(n||!Go(this,t)||!Go(ha,t)||Go(this,$o)&&this[$o][t])||n)},Ra=function(e,t){var n=Yo(e),r=Jo(t);if(n!==ra||!Go(ha,r)||Go(ba,r)){var i=ua(n,r);return!i||!Go(ha,r)||Go(n,$o)&&n[$o][r]||(i.enumerable=!0),i}},Ca=function(e){var t=sa(Yo(e)),n=[];return qo(t,(function(e){Go(ha,e)||Go(Qo,e)||Za(n,e)})),n},va=function(e){var t=e===ra,n=sa(t?ba:Yo(e)),r=[];return qo(n,(function(e){!Go(ha,e)||t&&!Go(ra,e)||Za(r,ha[e])})),r};(yo||(zo(ca=(ia=function(){if(Ro(ca,this))throw oa("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?Ko(arguments[0]):void 0,t=Mo(e),n=function e(n){this===ra&&po(e,ba,n),Go(this,$o)&&Go(this[$o],t)&&(this[$o][t]=!1),Xa(this,t,No(1,n))};return go&&ya&&Xa(ra,t,{configurable:!0,set:n}),Ga(t,e)}).prototype,"toString",(function(){return na(this).tag})),zo(ia,"withoutSetter",(function(e){return Ga(Mo(e),e)})),Fo.f=Wa,To.f=Va,Ao.f=fa,wo.f=Ra,xo.f=ko.f=Ca,Uo.f=va,Eo.f=function(e){return Ga(Po(e),e)},go&&(da(ca,"description",{configurable:!0,get:function(){return na(this).description}}),zo(ra,"propertyIsEnumerable",Wa,{unsafe:!0}))),mo({global:!0,wrap:!0,forced:!yo,sham:!yo},{Symbol:ia}),qo(Ho(ga),(function(e){Do(e)})),mo({target:"Symbol",stat:!0,forced:!yo},{for:function(e){var t=Ko(e);if(Go(pa,t))return pa[t];var n=ia(t);return pa[t]=n,Ia[n]=t,n},keyFor:function(e){if(!Co(e))throw oa(e+" is not a symbol");if(Go(Ia,e))return Ia[e]},useSetter:function(){ya=!0},useSimple:function(){ya=!1}}),mo({target:"Object",stat:!0,forced:!yo,sham:!go},{create:function(e,t){return void 0===t?Lo(e):fa(Lo(e),t)},defineProperty:Va,defineProperties:fa,getOwnPropertyDescriptor:Ra}),mo({target:"Object",stat:!0,forced:!yo},{getOwnPropertyNames:Ca,getOwnPropertySymbols:va}),mo({target:"Object",stat:!0,forced:Xo((function(){Uo.f(1)}))},{getOwnPropertySymbols:function(e){return Uo.f(So(e))}}),la)&&mo({target:"JSON",stat:!0,forced:!yo||Xo((function(){var e=ia();return"[null]"!=la([e])||"{}"!=la({a:e})||"{}"!=la(Object(e))}))},{stringify:function(e,t,n){var r=Bo(arguments),i=t;if((Wo(t)||void 0!==e)&&!Co(e))return Vo(t)||(t=function(e,t){if(fo(i)&&(t=po(i,this,e,t)),!Co(t))return t}),r[1]=t,bo(la,null,r)}});if(!ca[ea]){var Sa=ca.valueOf;zo(ca,ea,(function(e){return po(Sa,this)}))}Oo(ia,"Symbol"),Qo[$o]=!0;var Ya=mi,Ja=J,Ka=v,Na=P,La=ot,Ha=ue,xa=pe,ka=Ni,Ua=Ot.f,wa=Dr,Ta=Ka.Symbol,Aa=Ta&&Ta.prototype;if(Ja&&Ha(Ta)&&(!("description"in Aa)||void 0!==Ta().description)){var Fa={},Ba=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:ka(arguments[0]),t=xa(Aa,this)?new Ta(e):void 0===e?Ta():Ta(e);return""===e&&(Fa[t]=!0),t};wa(Ba,Ta),Ba.prototype=Aa,Aa.constructor=Ba;var za="Symbol(test)"==String(Ta("test")),ja=Na(Aa.toString),Qa=Na(Aa.valueOf),Ma=/^Symbol\((.*)\)[^)]+$/,Pa=Na("".replace),Ea=Na("".slice);Ua(Aa,"description",{configurable:!0,get:function(){var e=Qa(this),t=ja(e);if(La(Fa,e))return"";var n=za?Ea(t,7,-1):Pa(t,Ma,"$1");return""===n?void 0:n}}),Ya({global:!0,forced:!0},{Symbol:Ba})}Cc("asyncIterator"),Cc("hasInstance"),Cc("isConcatSpreadable"),Cc("iterator"),Cc("match"),Cc("matchAll"),Cc("replace"),Cc("search"),Cc("species"),Cc("split"),Cc("toPrimitive"),Cc("toStringTag"),Cc("unscopables");var Da=Y,Oa=We,_a=Vt("species"),qa=function(e){return Oa>=51||!Da((function(){var t=[];return(t.constructor={})[_a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$a=mi,el=v,tl=Y,nl=yi,rl=se,il=rt,cl=fr,ol=ac,al=no,ll=qa,ul=We,dl=Vt("isConcatSpreadable"),sl=el.TypeError,ml=ul>=51||!tl((function(){var e=[];return e[dl]=!1,e.concat()[0]!==e})),Zl=ll("concat"),hl=function(e){if(!rl(e))return!1;var t=e[dl];return void 0!==t?!!t:nl(e)};$a({target:"Array",proto:!0,forced:!ml||!Zl},{concat:function(e){var t,n,r,i,c,o=il(this),a=al(o,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(hl(c=-1===t?o:arguments[t])){if(l+(i=cl(c))>9007199254740991)throw sl("Maximum allowed index exceeded");for(n=0;n<i;n++,l++)n in c&&ol(a,l,c[n])}else{if(l>=9007199254740991)throw sl("Maximum allowed index exceeded");ol(a,l++,c)}return a.length=l,a}});var bl=rt,pl=gr,Il=fr,gl=Math.min,yl=[].copyWithin||function(e,t){var n=bl(this),r=Il(n),i=pl(e,r),c=pl(t,r),o=arguments.length>2?arguments[2]:void 0,a=gl((void 0===o?r:pl(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},Xl=nc,Gl=Ot,Vl=Vt("unscopables"),fl=Array.prototype;null==fl[Vl]&&Gl.f(fl,Vl,{configurable:!0,value:Xl(null)});var Wl=function(e){fl[Vl][e]=!0},Rl=Wl;mi({target:"Array",proto:!0},{copyWithin:yl}),Rl("copyWithin");var Cl=rt,vl=gr,Sl=fr,Yl=function(e){for(var t=Cl(this),n=Sl(t),r=arguments.length,i=vl(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,o=void 0===c?n:vl(c,n);o>i;)t[i++]=e;return t},Jl=Wl;mi({target:"Array",proto:!0},{fill:Yl}),Jl("fill");var Kl=so.filter;mi({target:"Array",proto:!0,forced:!qa("filter")},{filter:function(e){return Kl(this,e,arguments.length>1?arguments[1]:void 0)}});var Nl=mi,Ll=so.find,Hl=Wl,xl=!0;"find"in[]&&Array(1).find((function(){xl=!1})),Nl({target:"Array",proto:!0,forced:xl},{find:function(e){return Ll(this,e,arguments.length>1?arguments[1]:void 0)}}),Hl("find");var kl=mi,Ul=so.findIndex,wl=Wl,Tl=!0;"findIndex"in[]&&Array(1).findIndex((function(){Tl=!1})),kl({target:"Array",proto:!0,forced:Tl},{findIndex:function(e){return Ul(this,e,arguments.length>1?arguments[1]:void 0)}}),wl("findIndex");var Al=yi,Fl=fr,Bl=Hc,zl=v.TypeError,jl=function e(t,n,r,i,c,o,a,l){for(var u,d=c,s=0,m=!!a&&Bl(a,l);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],o>0&&Al(u))d=e(t,n,u,Fl(u),d,o-1)-1;else{if(d>=9007199254740991)throw zl("Exceed the acceptable array length");t[d]=u}d++}s++}return d},Ql=jl,Ml=rt,Pl=fr,El=hr,Dl=no;mi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Ml(this),n=Pl(t),r=Dl(t,0);return r.length=Ql(r,t,t,n,0,void 0===e?1:El(e)),r}});var Ol=jl,_l=Ae,ql=rt,$l=fr,eu=no;mi({target:"Array",proto:!0},{flatMap:function(e){var t,n=ql(this),r=$l(n);return _l(e),(t=eu(n,0)).length=Ol(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var tu=H,nu=nn,ru=Be,iu=function(e,t,n){var r,i;nu(e);try{if(!(r=ru(e,"return"))){if("throw"===t)throw n;return n}r=tu(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return nu(r),n},cu=nn,ou=iu,au={},lu=au,uu=Vt("iterator"),du=Array.prototype,su=function(e){return void 0!==e&&(lu.Array===e||du[uu]===e)},mu=Yi,Zu=Be,hu=au,bu=Vt("iterator"),pu=function(e){if(null!=e)return Zu(e,bu)||Zu(e,"@@iterator")||hu[mu(e)]},Iu=H,gu=Ae,yu=nn,Xu=ke,Gu=pu,Vu=v.TypeError,fu=function(e,t){var n=arguments.length<2?Gu(e):t;if(gu(n))return yu(Iu(n,e));throw Vu(Xu(e)+" is not iterable")},Wu=Hc,Ru=H,Cu=rt,vu=function(e,t,n,r){try{return r?t(cu(n)[0],n[1]):t(n)}catch(t){ou(e,"throw",t)}},Su=su,Yu=Ec,Ju=fr,Ku=ac,Nu=fu,Lu=pu,Hu=v.Array,xu=function(e){var t=Cu(e),n=Yu(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Wu(i,r>2?arguments[2]:void 0));var o,a,l,u,d,s,m=Lu(t),Z=0;if(!m||this==Hu&&Su(m))for(o=Ju(t),a=n?new this(o):Hu(o);o>Z;Z++)s=c?i(t[Z],Z):t[Z],Ku(a,Z,s);else for(d=(u=Nu(t,m)).next,a=n?new this:[];!(l=Ru(d,u)).done;Z++)s=c?vu(u,i,[l.value,Z],!0):l.value,Ku(a,Z,s);return a.length=Z,a},ku=Vt("iterator"),Uu=!1;try{var wu=0,Tu={next:function(){return{done:!!wu++}},return:function(){Uu=!0}};Tu[ku]=function(){return this},Array.from(Tu,(function(){throw 2}))}catch(e){}var Au=function(e,t){if(!t&&!Uu)return!1;var n=!1;try{var r={};r[ku]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Fu=xu;mi({target:"Array",stat:!0,forced:!Au((function(e){Array.from(e)}))},{from:Fu});var Bu=Sr.includes,zu=Wl;mi({target:"Array",proto:!0},{includes:function(e){return Bu(this,e,arguments.length>1?arguments[1]:void 0)}}),zu("includes");var ju,Qu,Mu,Pu=!Y((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),Eu=v,Du=ot,Ou=ue,_u=rt,qu=Pu,$u=Jn("IE_PROTO"),ed=Eu.Object,td=ed.prototype,nd=qu?ed.getPrototypeOf:function(e){var t=_u(e);if(Du(t,$u))return t[$u];var n=t.constructor;return Ou(n)&&t instanceof n?n.prototype:t instanceof ed?td:null},rd=Y,id=ue,cd=nd,od=bn.exports,ad=Vt("iterator"),ld=!1;[].keys&&("next"in(Mu=[].keys())?(Qu=cd(cd(Mu)))!==Object.prototype&&(ju=Qu):ld=!0);var ud=null==ju||rd((function(){var e={};return ju[ad].call(e)!==e}));ud&&(ju={}),id(ju[ad])||od(ju,ad,(function(){return this}));var dd={IteratorPrototype:ju,BUGGY_SAFARI_ITERATORS:ld},sd=dd.IteratorPrototype,md=nc,Zd=F,hd=Jc,bd=au,pd=function(){return this},Id=function(e,t,n,r){var i=t+" Iterator";return e.prototype=md(sd,{next:Zd(+!r,n)}),hd(e,i,!1),bd[i]=pd,e},gd=v,yd=ue,Xd=gd.String,Gd=gd.TypeError,Vd=function(e){if("object"==c(e)||yd(e))return e;throw Gd("Can't set "+Xd(e)+" as a prototype")},fd=P,Wd=nn,Rd=Vd,Cd=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=fd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Wd(n),Rd(r),t?e(n,r):n.__proto__=r,n}}():void 0),vd=mi,Sd=H,Yd=er,Jd=ue,Kd=Id,Nd=nd,Ld=Cd,Hd=Jc,xd=hn,kd=bn.exports,Ud=au,wd=Yd.PROPER,Td=Yd.CONFIGURABLE,Ad=dd.IteratorPrototype,Fd=dd.BUGGY_SAFARI_ITERATORS,Bd=Vt("iterator"),zd=function(){return this},jd=function(e,t,n,r,i,c,o){Kd(n,t,r);var a,l,u,d=function(e){if(e===i&&b)return b;if(!Fd&&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[Bd]||Z["@@iterator"]||i&&Z[i],b=!Fd&&h||d(i),p="Array"==t&&Z.entries||h;if(p&&(a=Nd(p.call(new e)))!==Object.prototype&&a.next&&(Nd(a)!==Ad&&(Ld?Ld(a,Ad):Jd(a[Bd])||kd(a,Bd,zd)),Hd(a,s,!0)),wd&&"values"==i&&h&&"values"!==h.name&&(Td?xd(Z,"name","values"):(m=!0,b=function(){return Sd(h,this)})),i)if(l={values:d("values"),keys:c?b:d("keys"),entries:d("entries")},o)for(u in l)(Fd||m||!(u in Z))&&kd(Z,u,l[u]);else vd({target:t,proto:!0,forced:Fd||m},l);return Z[Bd]!==b&&kd(Z,Bd,b,{name:i}),Ud[t]=b,l},Qd=le,Md=Wl,Pd=au,Ed=En,Dd=Ot.f,Od=jd,_d=J,qd=Ed.set,$d=Ed.getterFor("Array Iterator"),es=Od(Array,"Array",(function(e,t){qd(this,{type:"Array Iterator",target:Qd(e),index:0,kind:t})}),(function(){var e=$d(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"),ts=Pd.Arguments=Pd.Array;if(Md("keys"),Md("values"),Md("entries"),_d&&"values"!==ts.name)try{Dd(ts,"name",{value:"values"})}catch(e){}var ns=Y,rs=function(e,t){var n=[][e];return!!n&&ns((function(){n.call(null,t||function(){return 1},1)}))},is=mi,cs=re,os=le,as=rs,ls=P([].join),us=cs!=Object,ds=as("join",",");is({target:"Array",proto:!0,forced:us||!ds},{join:function(e){return ls(os(this),void 0===e?",":e)}});var ss=so.map;mi({target:"Array",proto:!0,forced:!qa("map")},{map:function(e){return ss(this,e,arguments.length>1?arguments[1]:void 0)}});var ms=mi,Zs=Y,hs=Ec,bs=ac,ps=v.Array;ms({target:"Array",stat:!0,forced:Zs((function(){function e(){}return!(ps.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(hs(this)?this:ps)(t);t>e;)bs(n,e,arguments[e++]);return n.length=t,n}});var Is=mi,gs=v,ys=yi,Xs=Ec,Gs=se,Vs=gr,fs=fr,Ws=le,Rs=ac,Cs=Vt,vs=yc,Ss=qa("slice"),Ys=Cs("species"),Js=gs.Array,Ks=Math.max;Is({target:"Array",proto:!0,forced:!Ss},{slice:function(e,t){var n,r,i,c=Ws(this),o=fs(c),a=Vs(e,o),l=Vs(void 0===t?o:t,o);if(ys(c)&&(n=c.constructor,(Xs(n)&&(n===Js||ys(n.prototype))||Gs(n)&&null===(n=n[Ys]))&&(n=void 0),n===Js||void 0===n))return vs(c,a,l);for(r=new(void 0===n?Js:n)(Ks(l-a,0)),i=0;a<l;a++,i++)a in c&&Rs(r,i,c[a]);return r.length=i,r}});var Ns=Zc,Ls=Math.floor,Hs=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},xs=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},ks=function e(t,n){var r=t.length,i=Ls(r/2);return r<8?Hs(t,n):xs(t,e(Ns(t,0,i),n),e(Ns(t,i),n),n)},Us=Ie.match(/firefox\/(\d+)/i),ws=!!Us&&+Us[1],Ts=/MSIE|Trident/.test(Ie),As=Ie.match(/AppleWebKit\/(\d+)\./),Fs=!!As&&+As[1],Bs=mi,zs=P,js=Ae,Qs=rt,Ms=fr,Ps=Ni,Es=Y,Ds=ks,Os=rs,_s=ws,qs=Ts,$s=We,em=Fs,tm=[],nm=zs(tm.sort),rm=zs(tm.push),im=Es((function(){tm.sort(void 0)})),cm=Es((function(){tm.sort(null)})),om=Os("sort"),am=!Es((function(){if($s)return $s<70;if(!(_s&&_s>3)){if(qs)return!0;if(em)return em<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++)tm.push({k:t+r,v:n})}for(tm.sort((function(e,t){return t.v-e.v})),r=0;r<tm.length;r++)t=tm[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Bs({target:"Array",proto:!0,forced:im||!cm||!om||!am},{sort:function(e){void 0!==e&&js(e);var t=Qs(this);if(am)return void 0===e?nm(t):nm(t,e);var n,r,i=[],c=Ms(t);for(r=0;r<c;r++)r in t&&rm(i,t[r]);for(Ds(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:Ps(t)>Ps(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var lm=be,um=Ot,dm=J,sm=Vt("species"),mm=function(e){var t=lm(e),n=um.f;dm&&t&&!t[sm]&&n(t,sm,{configurable:!0,get:function(){return this}})};mm("Array");var Zm=mi,hm=v,bm=gr,pm=hr,Im=fr,gm=rt,ym=no,Xm=ac,Gm=qa("splice"),Vm=hm.TypeError,fm=Math.max,Wm=Math.min;Zm({target:"Array",proto:!0,forced:!Gm},{splice:function(e,t){var n,r,i,c,o,a,l=gm(this),u=Im(l),d=bm(e,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=Wm(fm(pm(t),0),u-d)),u+n-r>9007199254740991)throw Vm("Maximum allowed length exceeded");for(i=ym(l,r),c=0;c<r;c++)(o=d+c)in l&&Xm(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}}),Wl("flat"),Wl("flatMap");var Rm="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Cm=bn.exports,vm=function(e,t,n){for(var r in t)Cm(e,r,t[r],n);return e},Sm=pe,Ym=v.TypeError,Jm=function(e,t){if(Sm(t,e))return e;throw Ym("Incorrect invocation")},Km=hr,Nm=Gr,Lm=v.RangeError,Hm=function(e){if(void 0===e)return 0;var t=Km(e),n=Nm(t);if(t!==n)throw Lm("Wrong length or index");return n},xm=v.Array,km=Math.abs,Um=Math.pow,wm=Math.floor,Tm=Math.log,Am=Math.LN2,Fm={pack:function(e,t,n){var r,i,c,o=xm(n),a=8*n-t-1,l=(1<<a)-1,u=l>>1,d=23===t?Um(2,-24)-Um(2,-77):0,s=e<0||0===e&&1/e<0?1:0,m=0;for((e=km(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=wm(Tm(e)/Am),e*(c=Um(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?d/c:d*Um(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*Um(2,t),r+=u):(i=e*Um(2,u-1)*Um(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+=Um(2,t),d-=o}return(u?-1:1)*n*Um(2,d-t)}},Bm=v,zm=P,jm=J,Qm=Rm,Mm=er,Pm=hn,Em=vm,Dm=Y,Om=Jm,_m=hr,qm=Gr,$m=Hm,eZ=Fm,tZ=nd,nZ=Cd,rZ=sr.f,iZ=Ot.f,cZ=Yl,oZ=Zc,aZ=Jc,lZ=Mm.PROPER,uZ=Mm.CONFIGURABLE,dZ=En.get,sZ=En.set,mZ=Bm.ArrayBuffer,ZZ=mZ,hZ=ZZ&&ZZ.prototype,bZ=Bm.DataView,pZ=bZ&&bZ.prototype,IZ=Object.prototype,gZ=Bm.Array,yZ=Bm.RangeError,XZ=zm(cZ),GZ=zm([].reverse),VZ=eZ.pack,fZ=eZ.unpack,WZ=function(e){return[255&e]},RZ=function(e){return[255&e,e>>8&255]},CZ=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},vZ=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},SZ=function(e){return VZ(e,23,4)},YZ=function(e){return VZ(e,52,8)},JZ=function(e,t){iZ(e.prototype,t,{get:function(){return dZ(this)[t]}})},KZ=function(e,t,n,r){var i=$m(n),c=dZ(e);if(i+t>c.byteLength)throw yZ("Wrong index");var o=dZ(c.buffer).bytes,a=i+c.byteOffset,l=oZ(o,a,a+t);return r?l:GZ(l)},NZ=function(e,t,n,r,i,c){var o=$m(n),a=dZ(e);if(o+t>a.byteLength)throw yZ("Wrong index");for(var l=dZ(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(Qm){var LZ=lZ&&"ArrayBuffer"!==mZ.name;if(Dm((function(){mZ(1)}))&&Dm((function(){new mZ(-1)}))&&!Dm((function(){return new mZ,new mZ(1.5),new mZ(NaN),LZ&&!uZ})))LZ&&uZ&&Pm(mZ,"name","ArrayBuffer");else{(ZZ=function(e){return Om(this,hZ),new mZ($m(e))}).prototype=hZ;for(var HZ,xZ=rZ(mZ),kZ=0;xZ.length>kZ;)(HZ=xZ[kZ++])in ZZ||Pm(ZZ,HZ,mZ[HZ]);hZ.constructor=ZZ}nZ&&tZ(pZ)!==IZ&&nZ(pZ,IZ);var UZ=new bZ(new ZZ(2)),wZ=zm(pZ.setInt8);UZ.setInt8(0,2147483648),UZ.setInt8(1,2147483649),!UZ.getInt8(0)&&UZ.getInt8(1)||Em(pZ,{setInt8:function(e,t){wZ(this,e,t<<24>>24)},setUint8:function(e,t){wZ(this,e,t<<24>>24)}},{unsafe:!0})}else ZZ=function(e){Om(this,hZ);var t=$m(e);sZ(this,{bytes:XZ(gZ(t),0),byteLength:t}),jm||(this.byteLength=t)},hZ=ZZ.prototype,bZ=function(e,t,n){Om(this,pZ),Om(e,hZ);var r=dZ(e).byteLength,i=_m(t);if(i<0||i>r)throw yZ("Wrong offset");if(i+(n=void 0===n?r-i:qm(n))>r)throw yZ("Wrong length");sZ(this,{buffer:e,byteLength:n,byteOffset:i}),jm||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},pZ=bZ.prototype,jm&&(JZ(ZZ,"byteLength"),JZ(bZ,"buffer"),JZ(bZ,"byteLength"),JZ(bZ,"byteOffset")),Em(pZ,{getInt8:function(e){return KZ(this,1,e)[0]<<24>>24},getUint8:function(e){return KZ(this,1,e)[0]},getInt16:function(e){var t=KZ(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=KZ(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return vZ(KZ(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return vZ(KZ(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return fZ(KZ(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return fZ(KZ(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){NZ(this,1,e,WZ,t)},setUint8:function(e,t){NZ(this,1,e,WZ,t)},setInt16:function(e,t){NZ(this,2,e,RZ,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){NZ(this,2,e,RZ,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){NZ(this,4,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){NZ(this,4,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){NZ(this,4,e,SZ,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){NZ(this,8,e,YZ,t,arguments.length>2?arguments[2]:void 0)}});aZ(ZZ,"ArrayBuffer"),aZ(bZ,"DataView");var TZ={ArrayBuffer:ZZ,DataView:bZ},AZ=mm,FZ=TZ.ArrayBuffer;mi({global:!0,forced:v.ArrayBuffer!==FZ},{ArrayBuffer:FZ}),AZ("ArrayBuffer");var BZ=nn,zZ=Pe,jZ=v.TypeError,QZ=ot,MZ=bn.exports,PZ=function(e){if(BZ(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw jZ("Incorrect hint");return zZ(this,e)},EZ=Vt("toPrimitive"),DZ=Date.prototype;QZ(DZ,EZ)||MZ(DZ,EZ,PZ);var OZ=ue,_Z=se,qZ=Ot,$Z=nd,eh=Vt("hasInstance"),th=Function.prototype;eh in th||qZ.f(th,eh,{value:function(e){if(!OZ(this)||!_Z(e))return!1;var t=this.prototype;if(!_Z(t))return e instanceof this;for(;e=$Z(e);)if(t===e)return!0;return!1}});var nh=J,rh=er.EXISTS,ih=P,ch=Ot.f,oh=Function.prototype,ah=ih(oh.toString),lh=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,uh=ih(lh.exec);nh&&!rh&&ch(oh,"name",{configurable:!0,get:function(){try{return uh(lh,ah(this))[1]}catch(e){return""}}}),mi({global:!0},{globalThis:v});var dh=mi,sh=be,mh=Ii,Zh=P,hh=Y,bh=v.Array,ph=sh("JSON","stringify"),Ih=Zh(/./.exec),gh=Zh("".charAt),yh=Zh("".charCodeAt),Xh=Zh("".replace),Gh=Zh(1..toString),Vh=/[\uD800-\uDFFF]/g,fh=/^[\uD800-\uDBFF]$/,Wh=/^[\uDC00-\uDFFF]$/,Rh=function(e,t,n){var r=gh(n,t-1),i=gh(n,t+1);return Ih(fh,e)&&!Ih(Wh,i)||Ih(Wh,e)&&!Ih(fh,r)?"\\u"+Gh(yh(e,0),16):e},Ch=hh((function(){return'"\\udf06\\ud834"'!==ph("\udf06\ud834")||'"\\udead"'!==ph("\udead")}));ph&&dh({target:"JSON",stat:!0,forced:Ch},{stringify:function(e,t,n){for(var r=0,i=arguments.length,c=bh(i);r<i;r++)c[r]=arguments[r];var o=mh(ph,null,c);return"string"==typeof o?Xh(o,Vh,Rh):o}}),Jc(v.JSON,"JSON",!0);var vh={exports:{}},Sh=Y((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),Yh=Y,Jh=se,Kh=_,Nh=Sh,Lh=Object.isExtensible,Hh=Yh((function(){Lh(1)}))||Nh?function(e){return!!Jh(e)&&((!Nh||"ArrayBuffer"!=Kh(e))&&(!Lh||Lh(e)))}:Lh,xh=!Y((function(){return Object.isExtensible(Object.preventExtensions({}))})),kh=mi,Uh=P,wh=Kn,Th=se,Ah=ot,Fh=Ot.f,Bh=sr,zh=rc,jh=Hh,Qh=xh,Mh=!1,Ph=st("meta"),Eh=0,Dh=function(e){Fh(e,Ph,{value:{objectID:"O"+Eh++,weakData:{}}})},Oh=vh.exports={enable:function(){Oh.enable=function(){},Mh=!0;var e=Bh.f,t=Uh([].splice),n={};n[Ph]=1,e(n).length&&(Bh.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===Ph){t(r,i,1);break}return r},kh({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:zh.f}))},fastKey:function(e,t){if(!Th(e))return"symbol"==c(e)?e:("string"==typeof e?"S":"P")+e;if(!Ah(e,Ph)){if(!jh(e))return"F";if(!t)return"E";Dh(e)}return e[Ph].objectID},getWeakData:function(e,t){if(!Ah(e,Ph)){if(!jh(e))return!0;if(!t)return!1;Dh(e)}return e[Ph].weakData},onFreeze:function(e){return Qh&&Mh&&jh(e)&&!Ah(e,Ph)&&Dh(e),e}};wh[Ph]=!0;var _h=Hc,qh=H,$h=nn,eb=ke,tb=su,nb=fr,rb=pe,ib=fu,cb=pu,ob=iu,ab=v.TypeError,lb=function(e,t){this.stopped=e,this.result=t},ub=lb.prototype,db=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=_h(t,s),p=function(e){return r&&ob(r,"normal",e),new lb(!0,e)},I=function(e){return m?($h(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=cb(e)))throw ab(eb(e)+" is not iterable");if(tb(i)){for(o=0,a=nb(e);a>o;o++)if((l=I(e[o]))&&rb(ub,l))return l;return new lb(!1)}r=ib(e,i)}for(u=r.next;!(d=qh(u,r)).done;){try{l=I(d.value)}catch(e){ob(r,"throw",e)}if("object"==c(l)&&l&&rb(ub,l))return l}return new lb(!1)},sb=ue,mb=se,Zb=Cd,hb=function(e,t,n){var r,i;return Zb&&sb(r=t.constructor)&&r!==n&&mb(i=r.prototype)&&i!==n.prototype&&Zb(e,i),e},bb=mi,pb=v,Ib=P,gb=ii,yb=bn.exports,Xb=vh.exports,Gb=db,Vb=Jm,fb=ue,Wb=se,Rb=Y,Cb=Au,vb=Jc,Sb=hb,Yb=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",o=pb[e],a=o&&o.prototype,l=o,u={},d=function(e){var t=Ib(a[e]);yb(a,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!Wb(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!Wb(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!Wb(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(gb(e,!fb(o)||!(i||a.forEach&&!Rb((function(){(new o).entries().next()})))))l=n.getConstructor(t,e,r,c),Xb.enable();else if(gb(e,!0)){var s=new l,m=s[c](i?{}:-0,1)!=s,Z=Rb((function(){s.has(1)})),h=Cb((function(e){new o(e)})),b=!i&&Rb((function(){for(var e=new o,t=5;t--;)e[c](t,t);return!e.has(-0)}));h||((l=t((function(e,t){Vb(e,a);var n=Sb(new o,e,l);return null!=t&&Gb(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,bb({global:!0,forced:l!=o},u),vb(l,e),i||n.setStrong(l,e,r),l},Jb=Ot.f,Kb=nc,Nb=vm,Lb=Hc,Hb=Jm,xb=db,kb=jd,Ub=mm,wb=J,Tb=vh.exports.fastKey,Ab=En.set,Fb=En.getterFor,Bb={getConstructor:function(e,t,n,r){var i=e((function(e,i){Hb(e,c),Ab(e,{type:t,index:Kb(null),first:void 0,last:void 0,size:0}),wb||(e.size=0),null!=i&&xb(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=Fb(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=Tb(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=a),r&&(r.next=a),wb?c.size++:e.size++,"F"!==i&&(c.index[i]=a)),e},l=function(e,t){var n,r=o(e),i=Tb(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return Nb(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,wb?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),wb?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=o(this),r=Lb(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)}}),Nb(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)}}),wb&&Jb(c,"size",{get:function(){return o(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=Fb(t),c=Fb(r);kb(e,t,(function(e,t){Ab(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),Ub(t)}};Yb("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bb);var zb=Math.log,jb=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:zb(1+e)},Qb=mi,Mb=jb,Pb=Math.acosh,Eb=Math.log,Db=Math.sqrt,Ob=Math.LN2;Qb({target:"Math",stat:!0,forced:!Pb||710!=Math.floor(Pb(Number.MAX_VALUE))||Pb(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Eb(e)+Ob:Mb(e-1+Db(e-1)*Db(e+1))}});var _b=mi,qb=Math.asinh,$b=Math.log,ep=Math.sqrt;_b({target:"Math",stat:!0,forced:!(qb&&1/qb(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):$b(t+ep(t*t+1)):t}});var tp=mi,np=Math.atanh,rp=Math.log;tp({target:"Math",stat:!0,forced:!(np&&1/np(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:rp((1+e)/(1-e))/2}});var ip=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},cp=mi,op=ip,ap=Math.abs,lp=Math.pow;cp({target:"Math",stat:!0},{cbrt:function(e){return op(e=+e)*lp(ap(e),1/3)}});var up=mi,dp=Math.floor,sp=Math.log,mp=Math.LOG2E;up({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-dp(sp(e+.5)*mp):32}});var Zp=Math.expm1,hp=Math.exp,bp=!Zp||Zp(10)>22025.465794806718||Zp(10)<22025.465794806718||-2e-17!=Zp(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:hp(e)-1}:Zp,pp=mi,Ip=bp,gp=Math.cosh,yp=Math.abs,Xp=Math.E;pp({target:"Math",stat:!0,forced:!gp||gp(710)===1/0},{cosh:function(e){var t=Ip(yp(e)-1)+1;return(t+1/(t*Xp*Xp))*(Xp/2)}});var Gp=bp;mi({target:"Math",stat:!0,forced:Gp!=Math.expm1},{expm1:Gp});var Vp=ip,fp=Math.abs,Wp=Math.pow,Rp=Wp(2,-52),Cp=Wp(2,-23),vp=Wp(2,127)*(2-Cp),Sp=Wp(2,-126),Yp=Math.fround||function(e){var t,n,r=fp(e),i=Vp(e);return r<Sp?i*function(e){return e+1/Rp-1/Rp}(r/Sp/Cp)*Sp*Cp:(n=(t=(1+Cp/Rp)*r)-(t-r))>vp||n!=n?i*(1/0):i*n};mi({target:"Math",stat:!0},{fround:Yp});var Jp=mi,Kp=Math.hypot,Np=Math.abs,Lp=Math.sqrt;Jp({target:"Math",stat:!0,forced:!!Kp&&Kp(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=Np(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*Lp(i)}});var Hp=mi,xp=Y,kp=Math.imul;Hp({target:"Math",stat:!0,forced:xp((function(){return-5!=kp(4294967295,5)||2!=kp.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 Up=Math.log,wp=Math.LOG10E;mi({target:"Math",stat:!0},{log10:Math.log10||function(e){return Up(e)*wp}}),mi({target:"Math",stat:!0},{log1p:jb});var Tp=mi,Ap=Math.log,Fp=Math.LN2;Tp({target:"Math",stat:!0},{log2:function(e){return Ap(e)/Fp}}),mi({target:"Math",stat:!0},{sign:ip});var Bp=mi,zp=Y,jp=bp,Qp=Math.abs,Mp=Math.exp,Pp=Math.E;Bp({target:"Math",stat:!0,forced:zp((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return Qp(e=+e)<1?(jp(e)-jp(-e))/2:(Mp(e-1)-Mp(-e-1))*(Pp/2)}});var Ep=mi,Dp=bp,Op=Math.exp;Ep({target:"Math",stat:!0},{tanh:function(e){var t=Dp(e=+e),n=Dp(-e);return t==1/0?1:n==1/0?-1:(t-n)/(Op(e)+Op(-e))}}),Jc(Math,"Math",!0);var _p=mi,qp=Math.ceil,$p=Math.floor;_p({target:"Math",stat:!0},{trunc:function(e){return(e>0?$p:qp)(e)}});var eI=P(1..valueOf),tI="\t\n\v\f\r                 \u2028\u2029\ufeff",nI=ce,rI=Ni,iI=P("".replace),cI="[\t\n\v\f\r                 \u2028\u2029\ufeff]",oI=RegExp("^"+cI+cI+"*"),aI=RegExp(cI+cI+"*$"),lI=function(e){return function(t){var n=rI(nI(t));return 1&e&&(n=iI(n,oI,"")),2&e&&(n=iI(n,aI,"")),n}},uI={start:lI(1),end:lI(2),trim:lI(3)},dI=J,sI=v,mI=P,ZI=ii,hI=bn.exports,bI=ot,pI=hb,II=pe,gI=He,yI=Kt,XI=Y,GI=sr.f,VI=S.f,fI=Ot.f,WI=eI,RI=uI.trim,CI=sI.Number,vI=CI.prototype,SI=sI.TypeError,YI=mI("".slice),JI=mI("".charCodeAt),KI=function(e){var t=yI(e,"number");return"bigint"==typeof t?t:NI(t)},NI=function(e){var t,n,r,i,c,o,a,l,u=yI(e,"number");if(gI(u))throw SI("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=RI(u),43===(t=JI(u,0))||45===t){if(88===(n=JI(u,2))||120===n)return NaN}else if(48===t){switch(JI(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=YI(u,2)).length,a=0;a<o;a++)if((l=JI(c,a))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(ZI("Number",!CI(" 0o1")||!CI("0b1")||CI("+0x1"))){for(var LI,HI=function(e){var t=arguments.length<1?0:CI(KI(e)),n=this;return II(vI,n)&&XI((function(){WI(n)}))?pI(Object(t),n,HI):t},xI=dI?GI(CI):"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(","),kI=0;xI.length>kI;kI++)bI(CI,LI=xI[kI])&&!bI(HI,LI)&&fI(HI,LI,VI(CI,LI));HI.prototype=vI,vI.constructor=HI,hI(sI,"Number",HI)}mi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var UI=v.isFinite;mi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&UI(e)}});var wI=se,TI=Math.floor,AI=Number.isInteger||function(e){return!wI(e)&&isFinite(e)&&TI(e)===e};mi({target:"Number",stat:!0},{isInteger:AI}),mi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var FI=mi,BI=AI,zI=Math.abs;FI({target:"Number",stat:!0},{isSafeInteger:function(e){return BI(e)&&zI(e)<=9007199254740991}}),mi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),mi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var jI=v,QI=Y,MI=Ni,PI=uI.trim,EI=P("".charAt),DI=jI.parseFloat,OI=jI.Symbol,_I=OI&&OI.iterator,qI=1/DI("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||_I&&!QI((function(){DI(Object(_I))}))?function(e){var t=PI(MI(e)),n=DI(t);return 0===n&&"-"==EI(t,0)?-0:n}:DI;mi({target:"Number",stat:!0,forced:Number.parseFloat!=qI},{parseFloat:qI});var $I=v,eg=Y,tg=P,ng=Ni,rg=uI.trim,ig=$I.parseInt,cg=$I.Symbol,og=cg&&cg.iterator,ag=/^[+-]?0x/i,lg=tg(ag.exec),ug=8!==ig("\t\n\v\f\r                 \u2028\u2029\ufeff08")||22!==ig("\t\n\v\f\r                 \u2028\u2029\ufeff0x16")||og&&!eg((function(){ig(Object(og))}))?function(e,t){var n=rg(ng(e));return ig(n,t>>>0||(lg(ag,n)?16:10))}:ig,dg=ug;mi({target:"Number",stat:!0,forced:Number.parseInt!=dg},{parseInt:dg});var sg=hr,mg=Ni,Zg=ce,hg=v.RangeError,bg=function(e){var t=mg(Zg(this)),n="",r=sg(e);if(r<0||r==1/0)throw hg("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},pg=mi,Ig=v,gg=P,yg=hr,Xg=eI,Gg=bg,Vg=Y,fg=Ig.RangeError,Wg=Ig.String,Rg=Math.floor,Cg=gg(Gg),vg=gg("".slice),Sg=gg(1..toFixed),Yg=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},Jg=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=Rg(i/1e7)},Kg=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=Rg(r/t),r=r%t*1e7},Ng=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=Wg(e[t]);n=""===n?r:n+Cg("0",7-r.length)+r}return n};pg({target:"Number",proto:!0,forced:Vg((function(){return"0.000"!==Sg(8e-5,3)||"1"!==Sg(.9,0)||"1.25"!==Sg(1.255,2)||"1000000000000000128"!==Sg(0xde0b6b3a7640080,0)}))||!Vg((function(){Sg({})}))},{toFixed:function(e){var t,n,r,i,c=Xg(this),o=yg(e),a=[0,0,0,0,0,0],l="",u="0";if(o<0||o>20)throw fg("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return Wg(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*Yg(2,69,1))-69,n=t<0?c*Yg(2,-t,1):c/Yg(2,t,1),n*=4503599627370496,(t=52-t)>0){for(Jg(a,0,n),r=o;r>=7;)Jg(a,1e7,0),r-=7;for(Jg(a,Yg(10,r,1),0),r=t-1;r>=23;)Kg(a,1<<23),r-=23;Kg(a,1<<r),Jg(a,1,1),Kg(a,2),u=Ng(a)}else Jg(a,0,n),Jg(a,1<<-t,0),u=Ng(a)+Cg("0",o);return u=o>0?l+((i=u.length)<=o?"0."+Cg("0",o-i)+u:vg(u,0,i-o)+"."+vg(u,i-o)):l+u}});var Lg=J,Hg=P,xg=H,kg=Y,Ug=ki,wg=wr,Tg=x,Ag=rt,Fg=re,Bg=Object.assign,zg=Object.defineProperty,jg=Hg([].concat),Qg=!Bg||kg((function(){if(Lg&&1!==Bg({b:1},Bg(zg({},"a",{enumerable:!0,get:function(){zg(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!=Bg({},e)[n]||Ug(Bg({},t)).join("")!=r}))?function(e,t){for(var n=Ag(e),r=arguments.length,i=1,c=wg.f,o=Tg.f;r>i;)for(var a,l=Fg(arguments[i++]),u=c?jg(Ug(l),c(l)):Ug(l),d=u.length,s=0;d>s;)a=u[s++],Lg&&!xg(o,l,a)||(n[a]=l[a]);return n}:Bg,Mg=Qg;mi({target:"Object",stat:!0,forced:Object.assign!==Mg},{assign:Mg});var Pg=v,Eg=Fs,Dg=!Y((function(){if(!(Eg&&Eg<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete Pg[e]}})),Og=Ae,_g=rt,qg=Ot;J&&mi({target:"Object",proto:!0,forced:Dg},{__defineGetter__:function(e,t){qg.f(_g(this),e,{get:Og(t),enumerable:!0,configurable:!0})}});var $g=Ae,ey=rt,ty=Ot;J&&mi({target:"Object",proto:!0,forced:Dg},{__defineSetter__:function(e,t){ty.f(ey(this),e,{set:$g(t),enumerable:!0,configurable:!0})}});var ny=J,ry=P,iy=ki,cy=le,oy=ry(x.f),ay=ry([].push),ly=function(e){return function(t){for(var n,r=cy(t),i=iy(r),c=i.length,o=0,a=[];c>o;)n=i[o++],ny&&!oy(r,n)||ay(a,e?[n,r[n]]:r[n]);return a}},uy={entries:ly(!0),values:ly(!1)},dy=uy.entries;mi({target:"Object",stat:!0},{entries:function(e){return dy(e)}});var sy=mi,my=xh,Zy=Y,hy=se,by=vh.exports.onFreeze,py=Object.freeze;sy({target:"Object",stat:!0,forced:Zy((function(){py(1)})),sham:!my},{freeze:function(e){return py&&hy(e)?py(by(e)):e}});var Iy=db,gy=ac;mi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return Iy(e,(function(e,n){gy(t,e,n)}),{AS_ENTRIES:!0}),t}});var yy=mi,Xy=Y,Gy=le,Vy=S.f,fy=J,Wy=Xy((function(){Vy(1)}));yy({target:"Object",stat:!0,forced:!fy||Wy,sham:!fy},{getOwnPropertyDescriptor:function(e,t){return Vy(Gy(e),t)}});var Ry=jr,Cy=le,vy=S,Sy=ac;mi({target:"Object",stat:!0,sham:!J},{getOwnPropertyDescriptors:function(e){for(var t,n,r=Cy(e),i=vy.f,c=Ry(r),o={},a=0;c.length>a;)void 0!==(n=i(r,t=c[a++]))&&Sy(o,t,n);return o}});var Yy=mi,Jy=Y,Ky=rc.f;Yy({target:"Object",stat:!0,forced:Jy((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:Ky});var Ny=rt,Ly=nd,Hy=Pu;mi({target:"Object",stat:!0,forced:Y((function(){Ly(1)})),sham:!Hy},{getPrototypeOf:function(e){return Ly(Ny(e))}});var xy=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};mi({target:"Object",stat:!0},{is:xy});var ky=Hh;mi({target:"Object",stat:!0,forced:Object.isExtensible!==ky},{isExtensible:ky});var Uy=mi,wy=Y,Ty=se,Ay=_,Fy=Sh,By=Object.isFrozen;Uy({target:"Object",stat:!0,forced:wy((function(){By(1)}))||Fy},{isFrozen:function(e){return!Ty(e)||(!(!Fy||"ArrayBuffer"!=Ay(e))||!!By&&By(e))}});var zy=mi,jy=Y,Qy=se,My=_,Py=Sh,Ey=Object.isSealed;zy({target:"Object",stat:!0,forced:jy((function(){Ey(1)}))||Py},{isSealed:function(e){return!Qy(e)||(!(!Py||"ArrayBuffer"!=My(e))||!!Ey&&Ey(e))}});var Dy=rt,Oy=ki;mi({target:"Object",stat:!0,forced:Y((function(){Oy(1)}))},{keys:function(e){return Oy(Dy(e))}});var _y=mi,qy=J,$y=Dg,eX=rt,tX=Ht,nX=nd,rX=S.f;qy&&_y({target:"Object",proto:!0,forced:$y},{__lookupGetter__:function(e){var t,n=eX(this),r=tX(e);do{if(t=rX(n,r))return t.get}while(n=nX(n))}});var iX=mi,cX=J,oX=Dg,aX=rt,lX=Ht,uX=nd,dX=S.f;cX&&iX({target:"Object",proto:!0,forced:oX},{__lookupSetter__:function(e){var t,n=aX(this),r=lX(e);do{if(t=dX(n,r))return t.set}while(n=uX(n))}});var sX=mi,mX=se,ZX=vh.exports.onFreeze,hX=xh,bX=Y,pX=Object.preventExtensions;sX({target:"Object",stat:!0,forced:bX((function(){pX(1)})),sham:!hX},{preventExtensions:function(e){return pX&&mX(e)?pX(ZX(e)):e}});var IX=mi,gX=se,yX=vh.exports.onFreeze,XX=xh,GX=Y,VX=Object.seal;IX({target:"Object",stat:!0,forced:GX((function(){VX(1)})),sham:!XX},{seal:function(e){return VX&&gX(e)?VX(yX(e)):e}});var fX=Yi,WX=Gi?{}.toString:function(){return"[object "+fX(this)+"]"},RX=Gi,CX=bn.exports,vX=WX;RX||CX(Object.prototype,"toString",vX,{unsafe:!0});var SX=uy.values;mi({target:"Object",stat:!0},{values:function(e){return SX(e)}});var YX,JX,KX,NX,LX=v.Promise,HX=Ec,xX=ke,kX=v.TypeError,UX=function(e){if(HX(e))return e;throw kX(xX(e)+" is not a constructor")},wX=nn,TX=UX,AX=Vt("species"),FX=function(e,t){var n,r=wX(e).constructor;return void 0===r||null==(n=wX(r)[AX])?t:TX(n)},BX=v.TypeError,zX=function(e,t){if(e<t)throw BX("Not enough arguments");return e},jX=/(?:ipad|iphone|ipod).*applewebkit/i.test(Ie),QX="process"==_(v.process),MX=v,PX=Ii,EX=Hc,DX=ue,OX=ot,_X=Y,qX=ji,$X=yc,eG=wt,tG=zX,nG=jX,rG=QX,iG=MX.setImmediate,cG=MX.clearImmediate,oG=MX.process,aG=MX.Dispatch,lG=MX.Function,uG=MX.MessageChannel,dG=MX.String,sG=0,mG={};try{YX=MX.location}catch(e){}var ZG=function(e){if(OX(mG,e)){var t=mG[e];delete mG[e],t()}},hG=function(e){return function(){ZG(e)}},bG=function(e){ZG(e.data)},pG=function(e){MX.postMessage(dG(e),YX.protocol+"//"+YX.host)};iG&&cG||(iG=function(e){tG(arguments.length,1);var t=DX(e)?e:lG(e),n=$X(arguments,1);return mG[++sG]=function(){PX(t,void 0,n)},JX(sG),sG},cG=function(e){delete mG[e]},rG?JX=function(e){oG.nextTick(hG(e))}:aG&&aG.now?JX=function(e){aG.now(hG(e))}:uG&&!nG?(NX=(KX=new uG).port2,KX.port1.onmessage=bG,JX=EX(NX.postMessage,NX)):MX.addEventListener&&DX(MX.postMessage)&&!MX.importScripts&&YX&&"file:"!==YX.protocol&&!_X(pG)?(JX=pG,MX.addEventListener("message",bG,!1)):JX="onreadystatechange"in eG("script")?function(e){qX.appendChild(eG("script")).onreadystatechange=function(){qX.removeChild(this),ZG(e)}}:function(e){setTimeout(hG(e),0)});var IG,gG,yG,XG,GG,VG,fG,WG,RG={set:iG,clear:cG},CG=v,vG=/ipad|iphone|ipod/i.test(Ie)&&void 0!==CG.Pebble,SG=/web0s(?!.*chrome)/i.test(Ie),YG=v,JG=Hc,KG=S.f,NG=RG.set,LG=jX,HG=vG,xG=SG,kG=QX,UG=YG.MutationObserver||YG.WebKitMutationObserver,wG=YG.document,TG=YG.process,AG=YG.Promise,FG=KG(YG,"queueMicrotask"),BG=FG&&FG.value;BG||(IG=function(){var e,t;for(kG&&(e=TG.domain)&&e.exit();gG;){t=gG.fn,gG=gG.next;try{t()}catch(e){throw gG?XG():yG=void 0,e}}yG=void 0,e&&e.enter()},LG||kG||xG||!UG||!wG?!HG&&AG&&AG.resolve?((fG=AG.resolve(void 0)).constructor=AG,WG=JG(fG.then,fG),XG=function(){WG(IG)}):kG?XG=function(){TG.nextTick(IG)}:(NG=JG(NG,YG),XG=function(){NG(IG)}):(GG=!0,VG=wG.createTextNode(""),new UG(IG).observe(VG,{characterData:!0}),XG=function(){VG.data=GG=!GG}));var zG=BG||function(e){var t={fn:e,next:void 0};yG&&(yG.next=t),gG||(gG=t,XG()),yG=t},jG={},QG=Ae,MG=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=QG(t),this.reject=QG(n)};jG.f=function(e){return new MG(e)};var PG=nn,EG=se,DG=jG,OG=function(e,t){if(PG(e),EG(t)&&t.constructor===e)return t;var n=DG.f(e);return(0,n.resolve)(t),n.promise},_G=v,qG=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},$G=function(){this.head=null,this.tail=null};$G.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 eV,tV,nV,rV,iV=$G,cV="object"==("undefined"==typeof window?"undefined":c(window)),oV=mi,aV=v,lV=be,uV=H,dV=LX,sV=bn.exports,mV=vm,ZV=Cd,hV=Jc,bV=mm,pV=Ae,IV=ue,gV=se,yV=Jm,XV=Vn,GV=db,VV=Au,fV=FX,WV=RG.set,RV=zG,CV=OG,vV=function(e,t){var n=_G.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},SV=jG,YV=qG,JV=iV,KV=En,NV=ii,LV=cV,HV=QX,xV=We,kV=Vt("species"),UV="Promise",wV=KV.getterFor(UV),TV=KV.set,AV=KV.getterFor(UV),FV=dV&&dV.prototype,BV=dV,zV=FV,jV=aV.TypeError,QV=aV.document,MV=aV.process,PV=SV.f,EV=PV,DV=!!(QV&&QV.createEvent&&aV.dispatchEvent),OV=IV(aV.PromiseRejectionEvent),_V=!1,qV=NV(UV,(function(){var e=XV(BV),t=e!==String(BV);if(!t&&66===xV)return!0;if(xV>=51&&/native code/.test(e))return!1;var n=new BV((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[kV]=r,!(_V=n.then((function(){}))instanceof r)||!t&&LV&&!OV})),$V=qV||!VV((function(e){BV.all(e).catch((function(){}))})),ef=function(e){var t;return!(!gV(e)||!IV(t=e.then))&&t},tf=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&&af(t),t.rejection=1),!0===a?n=c:(d&&d.enter(),n=a(c),d&&(d.exit(),i=!0)),n===e.promise?u(jV("Promise-chain cycle")):(r=ef(n))?uV(r,n,l,u):l(n)):u(c)}catch(e){d&&!i&&d.exit(),u(e)}},nf=function(e,t){e.notified||(e.notified=!0,RV((function(){for(var n,r=e.reactions;n=r.get();)tf(n,e);e.notified=!1,t&&!e.rejection&&cf(e)})))},rf=function(e,t,n){var r,i;DV?((r=QV.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),aV.dispatchEvent(r)):r={promise:t,reason:n},!OV&&(i=aV["on"+e])?i(r):"unhandledrejection"===e&&vV("Unhandled promise rejection",n)},cf=function(e){uV(WV,aV,(function(){var t,n=e.facade,r=e.value;if(of(e)&&(t=YV((function(){HV?MV.emit("unhandledRejection",r,n):rf("unhandledrejection",n,r)})),e.rejection=HV||of(e)?2:1,t.error))throw t.value}))},of=function(e){return 1!==e.rejection&&!e.parent},af=function(e){uV(WV,aV,(function(){var t=e.facade;HV?MV.emit("rejectionHandled",t):rf("rejectionhandled",t,e.value)}))},lf=function(e,t,n){return function(r){e(t,r,n)}},uf=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,nf(e,!0))},df=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw jV("Promise can't be resolved itself");var i=ef(n);i?RV((function(){var r={done:!1};try{uV(i,n,lf(e,r,t),lf(uf,r,t))}catch(e){uf(r,e,t)}})):(t.value=n,t.state=1,nf(t,!1))}catch(e){uf({done:!1},e,t)}}};if(qV&&(zV=(BV=function(e){yV(this,zV),pV(e),uV(eV,this);var t=wV(this);try{e(lf(df,t),lf(uf,t))}catch(e){uf(t,e)}}).prototype,(eV=function(e){TV(this,{type:UV,done:!1,notified:!1,parent:!1,reactions:new JV,rejection:!1,state:0,value:void 0})}).prototype=mV(zV,{then:function(e,t){var n=AV(this),r=PV(fV(this,BV));return n.parent=!0,r.ok=!IV(e)||e,r.fail=IV(t)&&t,r.domain=HV?MV.domain:void 0,0==n.state?n.reactions.add(r):RV((function(){tf(r,n)})),r.promise},catch:function(e){return this.then(void 0,e)}}),tV=function(){var e=new eV,t=wV(e);this.promise=e,this.resolve=lf(df,t),this.reject=lf(uf,t)},SV.f=PV=function(e){return e===BV||e===nV?new tV(e):EV(e)},IV(dV)&&FV!==Object.prototype)){rV=FV.then,_V||(sV(FV,"then",(function(e,t){var n=this;return new BV((function(e,t){uV(rV,n,e,t)})).then(e,t)}),{unsafe:!0}),sV(FV,"catch",zV.catch,{unsafe:!0}));try{delete FV.constructor}catch(e){}ZV&&ZV(FV,zV)}oV({global:!0,wrap:!0,forced:qV},{Promise:BV}),hV(BV,UV,!1),bV(UV),nV=lV(UV),oV({target:UV,stat:!0,forced:qV},{reject:function(e){var t=PV(this);return uV(t.reject,void 0,e),t.promise}}),oV({target:UV,stat:!0,forced:qV},{resolve:function(e){return CV(this,e)}}),oV({target:UV,stat:!0,forced:$V},{all:function(e){var t=this,n=PV(t),r=n.resolve,i=n.reject,c=YV((function(){var n=pV(t.resolve),c=[],o=0,a=1;GV(e,(function(e){var l=o++,u=!1;a++,uV(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},race:function(e){var t=this,n=PV(t),r=n.reject,i=YV((function(){var i=pV(t.resolve);GV(e,(function(e){uV(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var sf=H,mf=Ae,Zf=jG,hf=qG,bf=db;mi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=Zf.f(t),r=n.resolve,i=n.reject,c=hf((function(){var n=mf(t.resolve),i=[],c=0,o=1;bf(e,(function(e){var a=c++,l=!1;o++,sf(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 pf=mi,If=LX,gf=Y,yf=be,Xf=ue,Gf=FX,Vf=OG,ff=bn.exports;if(pf({target:"Promise",proto:!0,real:!0,forced:!!If&&gf((function(){If.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=Gf(this,yf("Promise")),n=Xf(e);return this.then(n?function(n){return Vf(t,e()).then((function(){return n}))}:e,n?function(n){return Vf(t,e()).then((function(){throw n}))}:e)}}),Xf(If)){var Wf=yf("Promise").prototype.finally;If.prototype.finally!==Wf&&ff(If.prototype,"finally",Wf,{unsafe:!0})}var Rf=Ii,Cf=Ae,vf=nn;mi({target:"Reflect",stat:!0,forced:!Y((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return Rf(Cf(e),t,vf(n))}});var Sf=P,Yf=Ae,Jf=se,Kf=ot,Nf=yc,Lf=K,Hf=v.Function,xf=Sf([].concat),kf=Sf([].join),Uf={},wf=function(e,t,n){if(!Kf(Uf,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";Uf[t]=Hf("C,a","return new C("+kf(r,",")+")")}return Uf[t](e,n)},Tf=Lf?Hf.bind:function(e){var t=Yf(this),n=t.prototype,r=Nf(arguments,1),i=function(){var n=xf(r,Nf(arguments));return this instanceof i?wf(t,n.length,n):t.apply(e,n)};return Jf(n)&&(i.prototype=n),i},Af=mi,Ff=Ii,Bf=Tf,zf=UX,jf=nn,Qf=se,Mf=nc,Pf=Y,Ef=be("Reflect","construct"),Df=Object.prototype,Of=[].push,_f=Pf((function(){function e(){}return!(Ef((function(){}),[],e)instanceof e)})),qf=!Pf((function(){Ef((function(){}))})),$f=_f||qf;Af({target:"Reflect",stat:!0,forced:$f,sham:$f},{construct:function(e,t){zf(e),jf(t);var n=arguments.length<3?e:zf(arguments[2]);if(qf&&!_f)return Ef(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 Ff(Of,r,t),new(Ff(Bf,e,r))}var i=n.prototype,c=Mf(Qf(i)?i:Df),o=Ff(e,c,t);return Qf(o)?o:c}});var eW=J,tW=nn,nW=Ht,rW=Ot;mi({target:"Reflect",stat:!0,forced:Y((function(){Reflect.defineProperty(rW.f({},1,{value:1}),1,{value:2})})),sham:!eW},{defineProperty:function(e,t,n){tW(e);var r=nW(t);tW(n);try{return rW.f(e,r,n),!0}catch(e){return!1}}});var iW=mi,cW=nn,oW=S.f;iW({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=oW(cW(e),t);return!(n&&!n.configurable)&&delete e[t]}});var aW=ot,lW=function(e){return void 0!==e&&(aW(e,"value")||aW(e,"writable"))},uW=H,dW=se,sW=nn,mW=lW,ZW=S,hW=nd;mi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return sW(t)===c?t[n]:(r=ZW.f(t,n))?mW(r)?r.value:void 0===r.get?void 0:uW(r.get,c):dW(i=hW(t))?e(i,n,c):void 0}});var bW=nn,pW=S;mi({target:"Reflect",stat:!0,sham:!J},{getOwnPropertyDescriptor:function(e,t){return pW.f(bW(e),t)}});var IW=nn,gW=nd;mi({target:"Reflect",stat:!0,sham:!Pu},{getPrototypeOf:function(e){return gW(IW(e))}}),mi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var yW=nn,XW=Hh;mi({target:"Reflect",stat:!0},{isExtensible:function(e){return yW(e),XW(e)}}),mi({target:"Reflect",stat:!0},{ownKeys:jr});var GW=be,VW=nn;mi({target:"Reflect",stat:!0,sham:!xh},{preventExtensions:function(e){VW(e);try{var t=GW("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var fW=mi,WW=H,RW=nn,CW=se,vW=lW,SW=Ot,YW=S,JW=nd,KW=F;var NW=Y((function(){var e=function(){},t=SW.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));fW({target:"Reflect",stat:!0,forced:NW},{set:function e(t,n,r){var i,c,o,a=arguments.length<4?t:arguments[3],l=YW.f(RW(t),n);if(!l){if(CW(c=JW(t)))return e(c,n,r,a);l=KW(0)}if(vW(l)){if(!1===l.writable||!CW(a))return!1;if(i=YW.f(a,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,SW.f(a,n,i)}else SW.f(a,n,KW(0,r))}else{if(void 0===(o=l.set))return!1;WW(o,a,r)}return!0}});var LW=nn,HW=Vd,xW=Cd;xW&&mi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){LW(e),HW(t);try{return xW(e,t),!0}catch(e){return!1}}});var kW=se,UW=_,wW=Vt("match"),TW=function(e){var t;return kW(e)&&(void 0!==(t=e[wW])?!!t:"RegExp"==UW(e))},AW=nn,FW=function(){var e=AW(this),t="";return 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},BW=Y,zW=v.RegExp,jW=BW((function(){var e=zW("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),QW=jW||BW((function(){return!zW("a","y").sticky})),MW=jW||BW((function(){var e=zW("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),PW={BROKEN_CARET:MW,MISSED_STICKY:QW,UNSUPPORTED_Y:jW},EW=Y,DW=v.RegExp,OW=EW((function(){var e=DW(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),_W=Y,qW=v.RegExp,$W=_W((function(){var e=qW("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),eR=J,tR=v,nR=P,rR=ii,iR=hb,cR=hn,oR=Ot.f,aR=sr.f,lR=pe,uR=TW,dR=Ni,sR=FW,mR=PW,ZR=bn.exports,hR=Y,bR=ot,pR=En.enforce,IR=mm,gR=OW,yR=$W,XR=Vt("match"),GR=tR.RegExp,VR=GR.prototype,fR=tR.SyntaxError,WR=nR(sR),RR=nR(VR.exec),CR=nR("".charAt),vR=nR("".replace),SR=nR("".indexOf),YR=nR("".slice),JR=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,KR=/a/g,NR=/a/g,LR=new GR(KR)!==KR,HR=mR.MISSED_STICKY,xR=mR.UNSUPPORTED_Y,kR=eR&&(!LR||HR||gR||yR||hR((function(){return NR[XR]=!1,GR(KR)!=KR||GR(NR)==NR||"/a/i"!=GR(KR,"i")})));if(rR("RegExp",kR)){for(var UR=function(e,t){var n,r,i,c,o,a,l=lR(VR,this),u=uR(e),d=void 0===t,s=[],m=e;if(!l&&u&&d&&e.constructor===UR)return e;if((u||lR(VR,e))&&(e=e.source,d&&(t="flags"in m?m.flags:WR(m))),e=void 0===e?"":dR(e),t=void 0===t?"":dR(t),m=e,gR&&"dotAll"in KR&&(r=!!t&&SR(t,"s")>-1)&&(t=vR(t,/s/g,"")),n=t,HR&&"sticky"in KR&&(i=!!t&&SR(t,"y")>-1)&&xR&&(t=vR(t,/y/g,"")),yR&&(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=CR(e,r)))t+=CR(e,++r);else if("]"===t)a=!1;else if(!a)switch(!0){case"["===t:a=!0;break;case"("===t:RR(JR,YR(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===d||bR(o,d))throw new fR("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=iR(GR(e,t),l?this:VR,UR),(r||i||s.length)&&(a=pR(o),r&&(a.dotAll=!0,a.raw=UR(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=CR(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+CR(e,++r);return i}(e),n)),i&&(a.sticky=!0),s.length&&(a.groups=s)),e!==m)try{cR(o,"source",""===m?"(?:)":m)}catch(e){}return o},wR=function(e){e in UR||oR(UR,e,{configurable:!0,get:function(){return GR[e]},set:function(t){GR[e]=t}})},TR=aR(GR),AR=0;TR.length>AR;)wR(TR[AR++]);VR.constructor=UR,UR.prototype=VR,ZR(tR,"RegExp",UR)}IR("RegExp");var FR=H,BR=P,zR=Ni,jR=FW,QR=PW,MR=Ee.exports,PR=nc,ER=En.get,DR=OW,OR=$W,_R=MR("native-string-replace",String.prototype.replace),qR=RegExp.prototype.exec,$R=qR,eC=BR("".charAt),tC=BR("".indexOf),nC=BR("".replace),rC=BR("".slice),iC=function(){var e=/a/,t=/b*/g;return FR(qR,e,"a"),FR(qR,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),cC=QR.BROKEN_CARET,oC=void 0!==/()??/.exec("")[1];(iC||oC||cC||DR||OR)&&($R=function(e){var t,n,r,i,c,o,a,l=this,u=ER(l),d=zR(e),s=u.raw;if(s)return s.lastIndex=l.lastIndex,t=FR($R,s,d),l.lastIndex=s.lastIndex,t;var m=u.groups,Z=cC&&l.sticky,h=FR(jR,l),b=l.source,p=0,I=d;if(Z&&(h=nC(h,"y",""),-1===tC(h,"g")&&(h+="g"),I=rC(d,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==eC(d,l.lastIndex-1))&&(b="(?: "+b+")",I=" "+I,p++),n=new RegExp("^(?:"+b+")",h)),oC&&(n=new RegExp("^"+b+"$(?!\\s)",h)),iC&&(r=l.lastIndex),i=FR(qR,Z?n:l,I),Z?i?(i.input=rC(i.input,p),i[0]=rC(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:iC&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),oC&&i&&i.length>1&&FR(_R,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=PR(null),c=0;c<m.length;c++)o[(a=m[c])[0]]=i[a[1]];return i});var aC=$R;mi({target:"RegExp",proto:!0,forced:/./.exec!==aC},{exec:aC});var lC=J,uC=Ot,dC=FW,sC=Y,mC=RegExp.prototype;lC&&sC((function(){return"sy"!==Object.getOwnPropertyDescriptor(mC,"flags").get.call({dotAll:!0,sticky:!0})}))&&uC.f(mC,"flags",{configurable:!0,get:dC});var ZC=v,hC=J,bC=PW.MISSED_STICKY,pC=_,IC=Ot.f,gC=En.get,yC=RegExp.prototype,XC=ZC.TypeError;hC&&bC&&IC(yC,"sticky",{configurable:!0,get:function(){if(this!==yC){if("RegExp"===pC(this))return!!gC(this).sticky;throw XC("Incompatible receiver, RegExp required")}}});var GC,VC,fC=mi,WC=v,RC=H,CC=P,vC=ue,SC=se,YC=(GC=!1,(VC=/[ac]/).exec=function(){return GC=!0,/./.exec.apply(this,arguments)},!0===VC.test("abc")&&GC),JC=WC.Error,KC=CC(/./.test);fC({target:"RegExp",proto:!0,forced:!YC},{test:function(e){var t=this.exec;if(!vC(t))return KC(this,e);var n=RC(t,this,e);if(null!==n&&!SC(n))throw new JC("RegExp exec method returned something other than an Object or null");return!!n}});var NC=P,LC=er.PROPER,HC=bn.exports,xC=nn,kC=pe,UC=Ni,wC=Y,TC=FW,AC=RegExp.prototype,FC=AC.toString,BC=NC(TC),zC=wC((function(){return"/a/b"!=FC.call({source:"a",flags:"b"})})),jC=LC&&"toString"!=FC.name;(zC||jC)&&HC(RegExp.prototype,"toString",(function(){var e=xC(this),t=UC(e.source),n=e.flags;return"/"+t+"/"+UC(void 0===n&&kC(AC,e)&&!("flags"in AC)?BC(e):n)}),{unsafe:!0}),Yb("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Bb);var QC=P,MC=hr,PC=Ni,EC=ce,DC=QC("".charAt),OC=QC("".charCodeAt),_C=QC("".slice),qC=function(e){return function(t,n){var r,i,c=PC(EC(t)),o=MC(n),a=c.length;return o<0||o>=a?e?"":void 0:(r=OC(c,o))<55296||r>56319||o+1===a||(i=OC(c,o+1))<56320||i>57343?e?DC(c,o):r:e?_C(c,o,o+2):i-56320+(r-55296<<10)+65536}},$C={codeAt:qC(!1),charAt:qC(!0)},ev=$C.codeAt;mi({target:"String",proto:!0},{codePointAt:function(e){return ev(this,e)}});var tv,nv=TW,rv=v.TypeError,iv=function(e){if(nv(e))throw rv("The method doesn't accept regular expressions");return e},cv=Vt("match"),ov=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[cv]=!1,"/./"[e](t)}catch(e){}}return!1},av=mi,lv=P,uv=S.f,dv=Gr,sv=Ni,mv=iv,Zv=ce,hv=ov,bv=lv("".endsWith),pv=lv("".slice),Iv=Math.min,gv=hv("endsWith");av({target:"String",proto:!0,forced:!!(gv||(tv=uv(String.prototype,"endsWith"),!tv||tv.writable))&&!gv},{endsWith:function(e){var t=sv(Zv(this));mv(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:Iv(dv(n),r),c=sv(e);return bv?bv(t,c,i):pv(t,i-c.length,i)===c}});var yv=mi,Xv=P,Gv=gr,Vv=v.RangeError,fv=String.fromCharCode,Wv=String.fromCodePoint,Rv=Xv([].join);yv({target:"String",stat:!0,forced:!!Wv&&1!=Wv.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],Gv(t,1114111)!==t)throw Vv(t+" is not a valid code point");n[i]=t<65536?fv(t):fv(55296+((t-=65536)>>10),t%1024+56320)}return Rv(n,"")}});var Cv=mi,vv=iv,Sv=ce,Yv=Ni,Jv=ov,Kv=P("".indexOf);Cv({target:"String",proto:!0,forced:!Jv("includes")},{includes:function(e){return!!~Kv(Yv(Sv(this)),Yv(vv(e)),arguments.length>1?arguments[1]:void 0)}});var Nv=$C.charAt,Lv=Ni,Hv=En,xv=jd,kv=Hv.set,Uv=Hv.getterFor("String Iterator");xv(String,"String",(function(e){kv(this,{type:"String Iterator",string:Lv(e),index:0})}),(function(){var e,t=Uv(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=Nv(n,r),t.index+=e.length,{value:e,done:!1})}));var wv=P,Tv=bn.exports,Av=aC,Fv=Y,Bv=Vt,zv=hn,jv=Bv("species"),Qv=RegExp.prototype,Mv=function(e,t,n,r){var i=Bv(e),c=!Fv((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),o=c&&!Fv((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[jv]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!o||n){var a=wv(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var o=wv(e),l=t.exec;return l===Av||l===Qv.exec?c&&!i?{done:!0,value:a(t,n,r)}:{done:!0,value:o(n,t,r)}:{done:!1}}));Tv(String.prototype,e,l[0]),Tv(Qv,i,l[1])}r&&zv(Qv[i],"sham",!0)},Pv=$C.charAt,Ev=function(e,t,n){return t+(n?Pv(e,t).length:1)},Dv=H,Ov=nn,_v=ue,qv=_,$v=aC,eS=v.TypeError,tS=function(e,t){var n=e.exec;if(_v(n)){var r=Dv(n,e,t);return null!==r&&Ov(r),r}if("RegExp"===qv(e))return Dv($v,e,t);throw eS("RegExp#exec called on incompatible receiver")},nS=H,rS=nn,iS=Gr,cS=Ni,oS=ce,aS=Be,lS=Ev,uS=tS;Mv("match",(function(e,t,n){return[function(t){var n=oS(this),r=null==t?void 0:aS(t,e);return r?nS(r,t,n):new RegExp(t)[e](cS(n))},function(e){var r=rS(this),i=cS(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return uS(r,i);var o=r.unicode;r.lastIndex=0;for(var a,l=[],u=0;null!==(a=uS(r,i));){var d=cS(a[0]);l[u]=d,""===d&&(r.lastIndex=lS(i,iS(r.lastIndex),o)),u++}return 0===u?null:l}]}));var dS=mi,sS=v,mS=H,ZS=P,hS=Id,bS=ce,pS=Gr,IS=Ni,gS=nn,yS=pe,XS=TW,GS=FW,VS=Be,fS=bn.exports,WS=Y,RS=FX,CS=Ev,vS=tS,SS=En,YS=Vt("matchAll"),JS=SS.set,KS=SS.getterFor("RegExp String Iterator"),NS=RegExp.prototype,LS=sS.TypeError,HS=ZS(GS),xS=ZS("".indexOf),kS=ZS("".matchAll),US=!!kS&&!WS((function(){kS("a",/./)})),wS=hS((function(e,t,n,r){JS(this,{type:"RegExp String Iterator",regexp:e,string:t,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var e=KS(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=vS(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===IS(r[0])&&(t.lastIndex=CS(n,pS(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),TS=function(e){var t,n,r,i,c,o,a=gS(this),l=IS(e);return t=RS(a,RegExp),void 0===(n=a.flags)&&yS(NS,a)&&!("flags"in NS)&&(n=HS(a)),r=void 0===n?"":IS(n),i=new t(t===RegExp?a.source:a,r),c=!!~xS(r,"g"),o=!!~xS(r,"u"),i.lastIndex=pS(a.lastIndex),new wS(i,l,c,o)};dS({target:"String",proto:!0,forced:US},{matchAll:function(e){var t,n,r,i=bS(this);if(null!=e){if(XS(e)&&(t=IS(bS("flags"in NS?e.flags:HS(e))),!~xS(t,"g")))throw LS("`.matchAll` does not allow non-global regexes");if(US)return kS(i,e);if(r=VS(e,YS))return mS(r,e,i)}else if(US)return kS(i,e);return n=IS(i),new RegExp(e,"g")[YS](n)}}),YS in NS||fS(NS,YS,TS);var AS=P,FS=Gr,BS=Ni,zS=ce,jS=AS(bg),QS=AS("".slice),MS=Math.ceil,PS=function(e){return function(t,n,r){var i,c,o=BS(zS(t)),a=FS(n),l=o.length,u=void 0===r?" ":BS(r);return a<=l||""==u?o:((c=jS(u,MS((i=a-l)/u.length))).length>i&&(c=QS(c,0,i)),e?o+c:c+o)}},ES={start:PS(!1),end:PS(!0)},DS=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Ie),OS=ES.end;mi({target:"String",proto:!0,forced:DS},{padEnd:function(e){return OS(this,e,arguments.length>1?arguments[1]:void 0)}});var _S=ES.start;mi({target:"String",proto:!0,forced:DS},{padStart:function(e){return _S(this,e,arguments.length>1?arguments[1]:void 0)}});var qS=mi,$S=P,eY=le,tY=rt,nY=Ni,rY=fr,iY=$S([].push),cY=$S([].join);qS({target:"String",stat:!0},{raw:function(e){for(var t=eY(tY(e).raw),n=rY(t),r=arguments.length,i=[],c=0;n>c;){if(iY(i,nY(t[c++])),c===n)return cY(i,"");c<r&&iY(i,nY(arguments[c]))}}}),mi({target:"String",proto:!0},{repeat:bg});var oY=P,aY=rt,lY=Math.floor,uY=oY("".charAt),dY=oY("".replace),sY=oY("".slice),mY=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ZY=/\$([$&'`]|\d{1,2})/g,hY=Ii,bY=H,pY=P,IY=Mv,gY=Y,yY=nn,XY=ue,GY=hr,VY=Gr,fY=Ni,WY=ce,RY=Ev,CY=Be,vY=function(e,t,n,r,i,c){var o=n+e.length,a=r.length,l=ZY;return void 0!==i&&(i=aY(i),l=mY),dY(c,l,(function(c,l){var u;switch(uY(l,0)){case"$":return"$";case"&":return e;case"`":return sY(t,0,n);case"'":return sY(t,o);case"<":u=i[sY(l,1,-1)];break;default:var d=+l;if(0===d)return c;if(d>a){var s=lY(d/10);return 0===s?c:s<=a?void 0===r[s-1]?uY(l,1):r[s-1]+uY(l,1):c}u=r[d-1]}return void 0===u?"":u}))},SY=tS,YY=Vt("replace"),JY=Math.max,KY=Math.min,NY=pY([].concat),LY=pY([].push),HY=pY("".indexOf),xY=pY("".slice),kY="$0"==="a".replace(/./,"$0"),UY=!!/./[YY]&&""===/./[YY]("a","$0"),wY=!gY((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));IY("replace",(function(e,t,n){var r=UY?"$":"$0";return[function(e,n){var r=WY(this),i=null==e?void 0:CY(e,YY);return i?bY(i,e,r,n):bY(t,fY(r),e,n)},function(e,i){var c=yY(this),o=fY(e);if("string"==typeof i&&-1===HY(i,r)&&-1===HY(i,"$<")){var a=n(t,c,o,i);if(a.done)return a.value}var l=XY(i);l||(i=fY(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=SY(c,o);if(null===m)break;if(LY(s,m),!u)break;""===fY(m[0])&&(c.lastIndex=RY(o,VY(c.lastIndex),d))}for(var Z,h="",b=0,p=0;p<s.length;p++){for(var I=fY((m=s[p])[0]),g=JY(KY(GY(m.index),o.length),0),y=[],X=1;X<m.length;X++)LY(y,void 0===(Z=m[X])?Z:String(Z));var G=m.groups;if(l){var V=NY([I],y,g,o);void 0!==G&&LY(V,G);var f=fY(hY(i,void 0,V))}else f=vY(I,o,g,y,G,i);g>=b&&(h+=xY(o,b,g)+f,b=g+I.length)}return h+xY(o,b)}]}),!wY||!kY||UY);var TY=H,AY=nn,FY=ce,BY=xy,zY=Ni,jY=Be,QY=tS;Mv("search",(function(e,t,n){return[function(t){var n=FY(this),r=null==t?void 0:jY(t,e);return r?TY(r,t,n):new RegExp(t)[e](zY(n))},function(e){var r=AY(this),i=zY(e),c=n(t,r,i);if(c.done)return c.value;var o=r.lastIndex;BY(o,0)||(r.lastIndex=0);var a=QY(r,i);return BY(r.lastIndex,o)||(r.lastIndex=o),null===a?-1:a.index}]}));var MY=Ii,PY=H,EY=P,DY=Mv,OY=TW,_Y=nn,qY=ce,$Y=FX,eJ=Ev,tJ=Gr,nJ=Ni,rJ=Be,iJ=Zc,cJ=tS,oJ=aC,aJ=Y,lJ=PW.UNSUPPORTED_Y,uJ=Math.min,dJ=[].push,sJ=EY(/./.exec),mJ=EY(dJ),ZJ=EY("".slice),hJ=!aJ((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]}));DY("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=nJ(qY(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!OY(e))return PY(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=PY(oJ,s,r))&&!((o=s.lastIndex)>d&&(mJ(l,ZJ(r,d,c.index)),c.length>1&&c.index<r.length&&MY(dJ,l,iJ(c,1)),a=c[0].length,d=o,l.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!a&&sJ(s,"")||mJ(l,""):mJ(l,ZJ(r,d)),l.length>i?iJ(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:PY(t,this,e,n)}:t,[function(t,n){var i=qY(this),c=null==t?void 0:rJ(t,e);return c?PY(c,t,i,n):PY(r,nJ(i),t,n)},function(e,i){var c=_Y(this),o=nJ(e),a=n(r,c,o,i,r!==t);if(a.done)return a.value;var l=$Y(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(lJ?"g":"y"),s=new l(lJ?"^(?:"+c.source+")":c,d),m=void 0===i?4294967295:i>>>0;if(0===m)return[];if(0===o.length)return null===cJ(s,o)?[o]:[];for(var Z=0,h=0,b=[];h<o.length;){s.lastIndex=lJ?0:h;var p,I=cJ(s,lJ?ZJ(o,h):o);if(null===I||(p=uJ(tJ(s.lastIndex+(lJ?h:0)),o.length))===Z)h=eJ(o,h,u);else{if(mJ(b,ZJ(o,Z,h)),b.length===m)return b;for(var g=1;g<=I.length-1;g++)if(mJ(b,I[g]),b.length===m)return b;h=Z=p}}return mJ(b,ZJ(o,Z)),b}]}),!hJ,lJ);var bJ=mi,pJ=P,IJ=S.f,gJ=Gr,yJ=Ni,XJ=iv,GJ=ce,VJ=ov,fJ=pJ("".startsWith),WJ=pJ("".slice),RJ=Math.min,CJ=VJ("startsWith"),vJ=!CJ&&!!function(){var e=IJ(String.prototype,"startsWith");return e&&!e.writable}();bJ({target:"String",proto:!0,forced:!vJ&&!CJ},{startsWith:function(e){var t=yJ(GJ(this));XJ(e);var n=gJ(RJ(arguments.length>1?arguments[1]:void 0,t.length)),r=yJ(e);return fJ?fJ(t,r,n):WJ(t,n,n+r.length)===r}});var SJ=er.PROPER,YJ=Y,JJ=tI,KJ=function(e){return YJ((function(){return!!JJ[e]()||"​…᠎"!=="​…᠎"[e]()||SJ&&JJ[e].name!==e}))},NJ=uI.trim;mi({target:"String",proto:!0,forced:KJ("trim")},{trim:function(){return NJ(this)}});var LJ=mi,HJ=uI.end,xJ=KJ("trimEnd"),kJ=xJ?function(){return HJ(this)}:"".trimEnd;LJ({target:"String",proto:!0,name:"trimEnd",forced:xJ},{trimEnd:kJ,trimRight:kJ});var UJ=mi,wJ=uI.start,TJ=KJ("trimStart"),AJ=TJ?function(){return wJ(this)}:"".trimStart;UJ({target:"String",proto:!0,name:"trimStart",forced:TJ},{trimStart:AJ,trimLeft:AJ});var FJ=ce,BJ=Ni,zJ=/"/g,jJ=P("".replace),QJ=function(e,t,n,r){var i=BJ(FJ(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+jJ(BJ(r),zJ,"&quot;")+'"'),c+">"+i+"</"+t+">"},MJ=Y,PJ=function(e){return MJ((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},EJ=QJ;mi({target:"String",proto:!0,forced:PJ("anchor")},{anchor:function(e){return EJ(this,"a","name",e)}});var DJ=QJ;mi({target:"String",proto:!0,forced:PJ("big")},{big:function(){return DJ(this,"big","","")}});var OJ=QJ;mi({target:"String",proto:!0,forced:PJ("blink")},{blink:function(){return OJ(this,"blink","","")}});var _J=QJ;mi({target:"String",proto:!0,forced:PJ("bold")},{bold:function(){return _J(this,"b","","")}});var qJ=QJ;mi({target:"String",proto:!0,forced:PJ("fixed")},{fixed:function(){return qJ(this,"tt","","")}});var $J=QJ;mi({target:"String",proto:!0,forced:PJ("fontcolor")},{fontcolor:function(e){return $J(this,"font","color",e)}});var eK=QJ;mi({target:"String",proto:!0,forced:PJ("fontsize")},{fontsize:function(e){return eK(this,"font","size",e)}});var tK=QJ;mi({target:"String",proto:!0,forced:PJ("italics")},{italics:function(){return tK(this,"i","","")}});var nK=QJ;mi({target:"String",proto:!0,forced:PJ("link")},{link:function(e){return nK(this,"a","href",e)}});var rK=QJ;mi({target:"String",proto:!0,forced:PJ("small")},{small:function(){return rK(this,"small","","")}});var iK=QJ;mi({target:"String",proto:!0,forced:PJ("strike")},{strike:function(){return iK(this,"strike","","")}});var cK=QJ;mi({target:"String",proto:!0,forced:PJ("sub")},{sub:function(){return cK(this,"sub","","")}});var oK=QJ;mi({target:"String",proto:!0,forced:PJ("sup")},{sup:function(){return oK(this,"sup","","")}});var aK,lK,uK,dK={exports:{}},sK=Rm,mK=J,ZK=v,hK=ue,bK=se,pK=ot,IK=Yi,gK=ke,yK=hn,XK=bn.exports,GK=Ot.f,VK=pe,fK=nd,WK=Cd,RK=Vt,CK=st,vK=ZK.Int8Array,SK=vK&&vK.prototype,YK=ZK.Uint8ClampedArray,JK=YK&&YK.prototype,KK=vK&&fK(vK),NK=SK&&fK(SK),LK=Object.prototype,HK=ZK.TypeError,xK=RK("toStringTag"),kK=CK("TYPED_ARRAY_TAG"),UK=CK("TYPED_ARRAY_CONSTRUCTOR"),wK=sK&&!!WK&&"Opera"!==IK(ZK.opera),TK=!1,AK={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},FK={BigInt64Array:8,BigUint64Array:8},BK=function(e){if(!bK(e))return!1;var t=IK(e);return pK(AK,t)||pK(FK,t)};for(aK in AK)(uK=(lK=ZK[aK])&&lK.prototype)?yK(uK,UK,lK):wK=!1;for(aK in FK)(uK=(lK=ZK[aK])&&lK.prototype)&&yK(uK,UK,lK);if((!wK||!hK(KK)||KK===Function.prototype)&&(KK=function(){throw HK("Incorrect invocation")},wK))for(aK in AK)ZK[aK]&&WK(ZK[aK],KK);if((!wK||!NK||NK===LK)&&(NK=KK.prototype,wK))for(aK in AK)ZK[aK]&&WK(ZK[aK].prototype,NK);if(wK&&fK(JK)!==NK&&WK(JK,NK),mK&&!pK(NK,xK))for(aK in TK=!0,GK(NK,xK,{get:function(){return bK(this)?this[kK]:void 0}}),AK)ZK[aK]&&yK(ZK[aK],kK,aK);var zK={NATIVE_ARRAY_BUFFER_VIEWS:wK,TYPED_ARRAY_CONSTRUCTOR:UK,TYPED_ARRAY_TAG:TK&&kK,aTypedArray:function(e){if(BK(e))return e;throw HK("Target is not a typed array")},aTypedArrayConstructor:function(e){if(hK(e)&&(!WK||VK(KK,e)))return e;throw HK(gK(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(mK){if(n)for(var i in AK){var c=ZK[i];if(c&&pK(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}NK[e]&&!n||XK(NK,e,n?t:wK&&SK[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(mK){if(WK){if(n)for(r in AK)if((i=ZK[r])&&pK(i,e))try{delete i[e]}catch(e){}if(KK[e]&&!n)return;try{return XK(KK,e,n?t:wK&&KK[e]||t)}catch(e){}}for(r in AK)!(i=ZK[r])||i[e]&&!n||XK(i,e,t)}},isView:function(e){if(!bK(e))return!1;var t=IK(e);return"DataView"===t||pK(AK,t)||pK(FK,t)},isTypedArray:BK,TypedArray:KK,TypedArrayPrototype:NK},jK=v,QK=Y,MK=Au,PK=zK.NATIVE_ARRAY_BUFFER_VIEWS,EK=jK.ArrayBuffer,DK=jK.Int8Array,OK=!PK||!QK((function(){DK(1)}))||!QK((function(){new DK(-1)}))||!MK((function(e){new DK,new DK(null),new DK(1.5),new DK(e)}),!0)||QK((function(){return 1!==new DK(new EK(2),1,void 0).length})),_K=hr,qK=v.RangeError,$K=function(e){var t=_K(e);if(t<0)throw qK("The argument can't be less than 0");return t},eN=v.RangeError,tN=function(e,t){var n=$K(e);if(n%t)throw eN("Wrong offset");return n},nN=Hc,rN=H,iN=UX,cN=rt,oN=fr,aN=fu,lN=pu,uN=su,dN=zK.aTypedArrayConstructor,sN=function(e){var t,n,r,i,c,o,a=iN(this),l=cN(e),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,m=lN(l);if(m&&!uN(m))for(o=(c=aN(l,m)).next,l=[];!(i=rN(o,c)).done;)l.push(i.value);for(s&&u>2&&(d=nN(d,arguments[2])),n=oN(l),r=new(dN(a))(n),t=0;n>t;t++)r[t]=s?d(l[t],t):l[t];return r},mN=mi,ZN=v,hN=H,bN=J,pN=OK,IN=zK,gN=TZ,yN=Jm,XN=F,GN=hn,VN=AI,fN=Gr,WN=Hm,RN=tN,CN=Ht,vN=ot,SN=Yi,YN=se,JN=He,KN=nc,NN=pe,LN=Cd,HN=sr.f,xN=sN,kN=so.forEach,UN=mm,wN=Ot,TN=S,AN=hb,FN=En.get,BN=En.set,zN=wN.f,jN=TN.f,QN=Math.round,MN=ZN.RangeError,PN=gN.ArrayBuffer,EN=PN.prototype,DN=gN.DataView,ON=IN.NATIVE_ARRAY_BUFFER_VIEWS,_N=IN.TYPED_ARRAY_CONSTRUCTOR,qN=IN.TYPED_ARRAY_TAG,$N=IN.TypedArray,eL=IN.TypedArrayPrototype,tL=IN.aTypedArrayConstructor,nL=IN.isTypedArray,rL=function(e,t){tL(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},iL=function(e,t){zN(e,t,{get:function(){return FN(this)[t]}})},cL=function(e){var t;return NN(EN,e)||"ArrayBuffer"==(t=SN(e))||"SharedArrayBuffer"==t},oL=function(e,t){return nL(e)&&!JN(t)&&t in e&&VN(+t)&&t>=0},aL=function(e,t){return t=CN(t),oL(e,t)?XN(2,e[t]):jN(e,t)},lL=function(e,t,n){return t=CN(t),!(oL(e,t)&&YN(n)&&vN(n,"value"))||vN(n,"get")||vN(n,"set")||n.configurable||vN(n,"writable")&&!n.writable||vN(n,"enumerable")&&!n.enumerable?zN(e,t,n):(e[t]=n.value,e)};bN?(ON||(TN.f=aL,wN.f=lL,iL(eL,"buffer"),iL(eL,"byteOffset"),iL(eL,"byteLength"),iL(eL,"length")),mN({target:"Object",stat:!0,forced:!ON},{getOwnPropertyDescriptor:aL,defineProperty:lL}),dK.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,o="set"+e,a=ZN[i],l=a,u=l&&l.prototype,d={},s=function(e,t){zN(e,t,{get:function(){return function(e,t){var n=FN(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=FN(e);n&&(i=(i=QN(i))<0?0:i>255?255:255&i),c.view[o](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};ON?pN&&(l=t((function(e,t,n,i){return yN(e,u),AN(YN(t)?cL(t)?void 0!==i?new a(t,RN(n,r),i):void 0!==n?new a(t,RN(n,r)):new a(t):nL(t)?rL(l,t):hN(xN,l,t):new a(WN(t)),e,l)})),LN&&LN(l,$N),kN(HN(a),(function(e){e in l||GN(l,e,a[e])})),l.prototype=u):(l=t((function(e,t,n,i){yN(e,u);var c,o,a,d=0,m=0;if(YN(t)){if(!cL(t))return nL(t)?rL(l,t):hN(xN,l,t);c=t,m=RN(n,r);var Z=t.byteLength;if(void 0===i){if(Z%r)throw MN("Wrong length");if((o=Z-m)<0)throw MN("Wrong length")}else if((o=fN(i)*r)+m>Z)throw MN("Wrong length");a=o/r}else a=WN(t),c=new PN(o=a*r);for(BN(e,{buffer:c,byteOffset:m,byteLength:o,length:a,view:new DN(c)});d<a;)s(e,d++)})),LN&&LN(l,$N),u=l.prototype=KN(eL)),u.constructor!==l&&GN(u,"constructor",l),GN(u,_N,l),qN&&GN(u,qN,i),d[i]=l,mN({global:!0,forced:l!=a,sham:!ON},d),"BYTES_PER_ELEMENT"in l||GN(l,"BYTES_PER_ELEMENT",r),"BYTES_PER_ELEMENT"in u||GN(u,"BYTES_PER_ELEMENT",r),UN(i)}):dK.exports=function(){},(0,dK.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,dK.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,dK.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var uL=zK,dL=P(yl),sL=uL.aTypedArray;(0,uL.exportTypedArrayMethod)("copyWithin",(function(e,t){return dL(sL(this),e,t,arguments.length>2?arguments[2]:void 0)}));var mL=so.every,ZL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("every",(function(e){return mL(ZL(this),e,arguments.length>1?arguments[1]:void 0)}));var hL=H,bL=Yl,pL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return hL(bL,pL(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var IL=fr,gL=FX,yL=zK.TYPED_ARRAY_CONSTRUCTOR,XL=zK.aTypedArrayConstructor,GL=function(e){return XL(gL(e,e[yL]))},VL=function(e,t){for(var n=0,r=IL(t),i=new e(r);r>n;)i[n]=t[n++];return i},fL=GL,WL=so.filter,RL=function(e,t){return VL(fL(e),t)},CL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("filter",(function(e){var t=WL(CL(this),e,arguments.length>1?arguments[1]:void 0);return RL(this,t)}));var vL=so.find,SL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("find",(function(e){return vL(SL(this),e,arguments.length>1?arguments[1]:void 0)}));var YL=so.findIndex,JL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("findIndex",(function(e){return YL(JL(this),e,arguments.length>1?arguments[1]:void 0)}));var KL=so.forEach,NL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("forEach",(function(e){KL(NL(this),e,arguments.length>1?arguments[1]:void 0)})),(0,zK.exportTypedArrayStaticMethod)("from",sN,OK);var LL=Sr.includes,HL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("includes",(function(e){return LL(HL(this),e,arguments.length>1?arguments[1]:void 0)}));var xL=Sr.indexOf,kL=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("indexOf",(function(e){return xL(kL(this),e,arguments.length>1?arguments[1]:void 0)}));var UL=v,wL=Y,TL=P,AL=zK,FL=es,BL=Vt("iterator"),zL=UL.Uint8Array,jL=TL(FL.values),QL=TL(FL.keys),ML=TL(FL.entries),PL=AL.aTypedArray,EL=AL.exportTypedArrayMethod,DL=zL&&zL.prototype,OL=!wL((function(){DL[BL].call([1])})),_L=!!DL&&DL.values&&DL[BL]===DL.values&&"values"===DL.values.name,qL=function(){return jL(PL(this))};EL("entries",(function(){return ML(PL(this))}),OL),EL("keys",(function(){return QL(PL(this))}),OL),EL("values",qL,OL||!_L,{name:"values"}),EL(BL,qL,OL||!_L,{name:"values"});var $L=zK.aTypedArray,eH=zK.exportTypedArrayMethod,tH=P([].join);eH("join",(function(e){return tH($L(this),e)}));var nH=Ii,rH=le,iH=hr,cH=fr,oH=rs,aH=Math.min,lH=[].lastIndexOf,uH=!!lH&&1/[1].lastIndexOf(1,-0)<0,dH=oH("lastIndexOf"),sH=uH||!dH?function(e){if(uH)return nH(lH,this,arguments)||0;var t=rH(this),n=cH(t),r=n-1;for(arguments.length>1&&(r=aH(r,iH(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:lH,mH=Ii,ZH=sH,hH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return mH(ZH,hH(this),t>1?[e,arguments[1]]:[e])}));var bH=so.map,pH=GL,IH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("map",(function(e){return bH(IH(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(pH(e))(t)}))}));var gH=zK.aTypedArrayConstructor;(0,zK.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(gH(this))(t);t>e;)n[e]=arguments[e++];return n}),OK);var yH=Ae,XH=rt,GH=re,VH=fr,fH=v.TypeError,WH=function(e){return function(t,n,r,i){yH(n);var c=XH(t),o=GH(c),a=VH(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 fH("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}},RH={left:WH(!1),right:WH(!0)},CH=RH.left,vH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return CH(vH(this),e,t,t>1?arguments[1]:void 0)}));var SH=RH.right,YH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return SH(YH(this),e,t,t>1?arguments[1]:void 0)}));var JH=zK.aTypedArray,KH=zK.exportTypedArrayMethod,NH=Math.floor;KH("reverse",(function(){for(var e,t=this,n=JH(t).length,r=NH(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var LH=v,HH=H,xH=zK,kH=fr,UH=tN,wH=rt,TH=Y,AH=LH.RangeError,FH=LH.Int8Array,BH=FH&&FH.prototype,zH=BH&&BH.set,jH=xH.aTypedArray,QH=xH.exportTypedArrayMethod,MH=!TH((function(){var e=new Uint8ClampedArray(2);return HH(zH,e,{length:1,0:3},1),3!==e[1]})),PH=MH&&xH.NATIVE_ARRAY_BUFFER_VIEWS&&TH((function(){var e=new FH(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));QH("set",(function(e){jH(this);var t=UH(arguments.length>1?arguments[1]:void 0,1),n=wH(e);if(MH)return HH(zH,this,n,t);var r=this.length,i=kH(n),c=0;if(i+t>r)throw AH("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!MH||PH);var EH=GL,DH=yc,OH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("slice",(function(e,t){for(var n=DH(OH(this),e,t),r=EH(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 _H=so.some,qH=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("some",(function(e){return _H(qH(this),e,arguments.length>1?arguments[1]:void 0)}));var $H=v,ex=P,tx=Y,nx=Ae,rx=ks,ix=zK,cx=ws,ox=Ts,ax=We,lx=Fs,ux=$H.Array,dx=ix.aTypedArray,sx=ix.exportTypedArrayMethod,mx=$H.Uint16Array,Zx=mx&&ex(mx.prototype.sort),hx=!(!Zx||tx((function(){Zx(new mx(2),null)}))&&tx((function(){Zx(new mx(2),{})}))),bx=!!Zx&&!tx((function(){if(ax)return ax<74;if(cx)return cx<67;if(ox)return!0;if(lx)return lx<602;var e,t,n=new mx(516),r=ux(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(Zx(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));sx("sort",(function(e){return void 0!==e&&nx(e),bx?Zx(this,e):rx(dx(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))}),!bx||hx);var px=Gr,Ix=gr,gx=GL,yx=zK.aTypedArray;(0,zK.exportTypedArrayMethod)("subarray",(function(e,t){var n=yx(this),r=n.length,i=Ix(e,r);return new(gx(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,px((void 0===t?r:Ix(t,r))-i))}));var Xx=Ii,Gx=zK,Vx=Y,fx=yc,Wx=v.Int8Array,Rx=Gx.aTypedArray,Cx=Gx.exportTypedArrayMethod,vx=[].toLocaleString,Sx=!!Wx&&Vx((function(){vx.call(new Wx(1))}));Cx("toLocaleString",(function(){return Xx(vx,Sx?fx(Rx(this)):Rx(this),fx(arguments))}),Vx((function(){return[1,2].toLocaleString()!=new Wx([1,2]).toLocaleString()}))||!Vx((function(){Wx.prototype.toLocaleString.call([1,2])})));var Yx=zK.exportTypedArrayMethod,Jx=Y,Kx=P,Nx=v.Uint8Array,Lx=Nx&&Nx.prototype||{},Hx=[].toString,xx=Kx([].join);Jx((function(){Hx.call({})}))&&(Hx=function(){return xx(this)});var kx=Lx.toString!=Hx;Yx("toString",Hx,kx);var Ux=P,wx=vm,Tx=vh.exports.getWeakData,Ax=nn,Fx=se,Bx=Jm,zx=db,jx=ot,Qx=En.set,Mx=En.getterFor,Px=so.find,Ex=so.findIndex,Dx=Ux([].splice),Ox=0,_x=function(e){return e.frozen||(e.frozen=new qx)},qx=function(){this.entries=[]},$x=function(e,t){return Px(e.entries,(function(e){return e[0]===t}))};qx.prototype={get:function(e){var t=$x(this,e);if(t)return t[1]},has:function(e){return!!$x(this,e)},set:function(e,t){var n=$x(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ex(this.entries,(function(t){return t[0]===e}));return~t&&Dx(this.entries,t,1),!!~t}};var ek,tk={getConstructor:function(e,t,n,r){var i=e((function(e,i){Bx(e,c),Qx(e,{type:t,id:Ox++,frozen:void 0}),null!=i&&zx(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,o=Mx(t),a=function(e,t,n){var r=o(e),i=Tx(Ax(t),!0);return!0===i?_x(r).set(t,n):i[r.id]=n,e};return wx(c,{delete:function(e){var t=o(this);if(!Fx(e))return!1;var n=Tx(e);return!0===n?_x(t).delete(e):n&&jx(n,t.id)&&delete n[t.id]},has:function(e){var t=o(this);if(!Fx(e))return!1;var n=Tx(e);return!0===n?_x(t).has(e):n&&jx(n,t.id)}}),wx(c,n?{get:function(e){var t=o(this);if(Fx(e)){var n=Tx(e);return!0===n?_x(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}},nk=v,rk=P,ik=vm,ck=vh.exports,ok=Yb,ak=tk,lk=se,uk=Hh,dk=En.enforce,sk=Cn,mk=!nk.ActiveXObject&&"ActiveXObject"in nk,Zk=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},hk=ok("WeakMap",Zk,ak);if(sk&&mk){ek=ak.getConstructor(Zk,"WeakMap",!0),ck.enable();var bk=hk.prototype,pk=rk(bk.delete),Ik=rk(bk.has),gk=rk(bk.get),yk=rk(bk.set);ik(bk,{delete:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),pk(this,e)||t.frozen.delete(e)}return pk(this,e)},has:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),Ik(this,e)||t.frozen.has(e)}return Ik(this,e)},get:function(e){if(lk(e)&&!uk(e)){var t=dk(this);return t.frozen||(t.frozen=new ek),Ik(this,e)?gk(this,e):t.frozen.get(e)}return gk(this,e)},set:function(e,t){if(lk(e)&&!uk(e)){var n=dk(this);n.frozen||(n.frozen=new ek),Ik(this,e)?yk(this,e,t):n.frozen.set(e,t)}else yk(this,e,t);return this}})}Yb("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),tk);var Xk={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},Gk=wt("span").classList,Vk=Gk&&Gk.constructor&&Gk.constructor.prototype,fk=Vk===Object.prototype?void 0:Vk,Wk=so.forEach,Rk=v,Ck=Xk,vk=fk,Sk=rs("forEach")?[].forEach:function(e){return Wk(this,e,arguments.length>1?arguments[1]:void 0)},Yk=hn,Jk=function(e){if(e&&e.forEach!==Sk)try{Yk(e,"forEach",Sk)}catch(t){e.forEach=Sk}};for(var Kk in Ck)Ck[Kk]&&Jk(Rk[Kk]&&Rk[Kk].prototype);Jk(vk);var Nk=v,Lk=Xk,Hk=fk,xk=es,kk=hn,Uk=Vt,wk=Uk("iterator"),Tk=Uk("toStringTag"),Ak=xk.values,Fk=function(e,t){if(e){if(e[wk]!==Ak)try{kk(e,wk,Ak)}catch(t){e[wk]=Ak}if(e[Tk]||kk(e,Tk,t),Lk[t])for(var n in xk)if(e[n]!==xk[n])try{kk(e,n,xk[n])}catch(t){e[n]=xk[n]}}};for(var Bk in Lk)Fk(Nk[Bk]&&Nk[Bk].prototype,Bk);Fk(Hk,"DOMTokenList");var zk=v,jk=RG;mi({global:!0,bind:!0,enumerable:!0,forced:!zk.setImmediate||!zk.clearImmediate},{setImmediate:jk.set,clearImmediate:jk.clear});var Qk=mi,Mk=zG,Pk=Ae,Ek=zX,Dk=QX,Ok=v.process;Qk({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){Ek(arguments.length,1),Pk(e);var t=Dk&&Ok.domain;Mk(t?t.bind(e):e)}});var _k=Y,qk=Vt("iterator"),$k=!_k((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[qk]||"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})),eU=P,tU=/[^\0-\u007E]/,nU=/[.\u3002\uFF0E\uFF61]/g,rU="Overflow: input needs wider integers to process",iU=v.RangeError,cU=eU(nU.exec),oU=Math.floor,aU=String.fromCharCode,lU=eU("".charCodeAt),uU=eU([].join),dU=eU([].push),sU=eU("".replace),mU=eU("".split),ZU=eU("".toLowerCase),hU=function(e){return e+22+75*(e<26)},bU=function(e,t,n){var r=0;for(e=n?oU(e/700):e>>1,e+=oU(e/t);e>455;)e=oU(e/35),r+=36;return oU(r+36*e/(e+38))},pU=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=lU(e,n++);if(i>=55296&&i<=56319&&n<r){var c=lU(e,n++);56320==(64512&c)?dU(t,((1023&i)<<10)+(1023&c)+65536):(dU(t,i),n--)}else dU(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&&dU(t,aU(r));var l=t.length,u=l;for(l&&dU(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>oU((2147483647-o)/s))throw iU(rU);for(o+=(d-c)*s,c=d,n=0;n<e.length;n++){if((r=e[n])<c&&++o>2147483647)throw iU(rU);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;dU(t,aU(hU(h+b%p))),m=oU(b/p),Z+=36}dU(t,aU(hU(m))),a=bU(o,s,u==l),o=0,u++}}o++,c++}return uU(t,"")},IU=mi,gU=v,yU=be,XU=H,GU=P,VU=$k,fU=bn.exports,WU=vm,RU=Jc,CU=Id,vU=En,SU=Jm,YU=ue,JU=ot,KU=Hc,NU=Yi,LU=nn,HU=se,xU=Ni,kU=nc,UU=F,wU=fu,TU=pu,AU=zX,FU=ks,BU=Vt("iterator"),zU=vU.set,jU=vU.getterFor("URLSearchParams"),QU=vU.getterFor("URLSearchParamsIterator"),MU=yU("fetch"),PU=yU("Request"),EU=yU("Headers"),DU=PU&&PU.prototype,OU=EU&&EU.prototype,_U=gU.RegExp,qU=gU.TypeError,$U=gU.decodeURIComponent,ew=gU.encodeURIComponent,tw=GU("".charAt),nw=GU([].join),rw=GU([].push),iw=GU("".replace),cw=GU([].shift),ow=GU([].splice),aw=GU("".split),lw=GU("".slice),uw=/\+/g,dw=Array(4),sw=function(e){return dw[e-1]||(dw[e-1]=_U("((?:%[\\da-f]{2}){"+e+"})","gi"))},mw=function(e){try{return $U(e)}catch(t){return e}},Zw=function(e){var t=iw(e,uw," "),n=4;try{return $U(t)}catch(e){for(;n;)t=iw(t,sw(n--),mw);return t}},hw=/[!'()~]|%20/g,bw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},pw=function(e){return bw[e]},Iw=function(e){return iw(ew(e),hw,pw)},gw=CU((function(e,t){zU(this,{type:"URLSearchParamsIterator",iterator:wU(jU(e).entries),kind:t})}),"Iterator",(function(){var e=QU(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),yw=function(e){this.entries=[],this.url=null,void 0!==e&&(HU(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===tw(e,0)?lw(e,1):e:xU(e)))};yw.prototype={type:"URLSearchParams",bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,o,a,l=TU(e);if(l)for(n=(t=wU(e,l)).next;!(r=XU(n,t)).done;){if(c=(i=wU(LU(r.value))).next,(o=XU(c,i)).done||(a=XU(c,i)).done||!XU(c,i).done)throw qU("Expected sequence with length 2");rw(this.entries,{key:xU(o.value),value:xU(a.value)})}else for(var u in e)JU(e,u)&&rw(this.entries,{key:u,value:xU(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=aw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=aw(t,"="),rw(this.entries,{key:Zw(cw(n)),value:Zw(nw(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],rw(n,Iw(e.key)+"="+Iw(e.value));return nw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var Xw=function(){SU(this,Gw);var e=arguments.length>0?arguments[0]:void 0;zU(this,new yw(e))},Gw=Xw.prototype;if(WU(Gw,{append:function(e,t){AU(arguments.length,2);var n=jU(this);rw(n.entries,{key:xU(e),value:xU(t)}),n.updateURL()},delete:function(e){AU(arguments.length,1);for(var t=jU(this),n=t.entries,r=xU(e),i=0;i<n.length;)n[i].key===r?ow(n,i,1):i++;t.updateURL()},get:function(e){AU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){AU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=[],i=0;i<t.length;i++)t[i].key===n&&rw(r,t[i].value);return r},has:function(e){AU(arguments.length,1);for(var t=jU(this).entries,n=xU(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){AU(arguments.length,1);for(var n,r=jU(this),i=r.entries,c=!1,o=xU(e),a=xU(t),l=0;l<i.length;l++)(n=i[l]).key===o&&(c?ow(i,l--,1):(c=!0,n.value=a));c||rw(i,{key:o,value:a}),r.updateURL()},sort:function(){var e=jU(this);FU(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=jU(this).entries,r=KU(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 gw(this,"keys")},values:function(){return new gw(this,"values")},entries:function(){return new gw(this,"entries")}},{enumerable:!0}),fU(Gw,BU,Gw.entries,{name:"entries"}),fU(Gw,"toString",(function(){return jU(this).serialize()}),{enumerable:!0}),RU(Xw,"URLSearchParams"),IU({global:!0,forced:!VU},{URLSearchParams:Xw}),!VU&&YU(EU)){var Vw=GU(OU.has),fw=GU(OU.set),Ww=function(e){if(HU(e)){var t,n=e.body;if("URLSearchParams"===NU(n))return t=e.headers?new EU(e.headers):new EU,Vw(t,"content-type")||fw(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),kU(e,{body:UU(0,xU(n)),headers:UU(0,t)})}return e};if(YU(MU)&&IU({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return MU(e,arguments.length>1?Ww(arguments[1]):{})}}),YU(PU)){var Rw=function(e){return SU(this,DU),new PU(e,arguments.length>1?Ww(arguments[1]):{})};DU.constructor=Rw,Rw.prototype=DU,IU({global:!0,forced:!0},{Request:Rw})}}var Cw,vw={URLSearchParams:Xw,getState:jU},Sw=mi,Yw=J,Jw=$k,Kw=v,Nw=Hc,Lw=P,Hw=Li.f,xw=bn.exports,kw=Jm,Uw=ot,ww=Qg,Tw=xu,Aw=Zc,Fw=$C.codeAt,Bw=function(e){var t,n,r=[],i=mU(sU(ZU(e),nU,"."),".");for(t=0;t<i.length;t++)n=i[t],dU(r,cU(tU,n)?"xn--"+pU(n):n);return uU(r,".")},zw=Ni,jw=Jc,Qw=zX,Mw=vw,Pw=En,Ew=Pw.set,Dw=Pw.getterFor("URL"),Ow=Mw.URLSearchParams,_w=Mw.getState,qw=Kw.URL,$w=Kw.TypeError,eT=Kw.parseInt,tT=Math.floor,nT=Math.pow,rT=Lw("".charAt),iT=Lw(/./.exec),cT=Lw([].join),oT=Lw(1..toString),aT=Lw([].pop),lT=Lw([].push),uT=Lw("".replace),dT=Lw([].shift),sT=Lw("".split),mT=Lw("".slice),ZT=Lw("".toLowerCase),hT=Lw([].unshift),bT=/[a-z]/i,pT=/[\d+-.a-z]/i,IT=/\d/,gT=/^0x/i,yT=/^[0-7]+$/,XT=/^\d+$/,GT=/^[\da-f]+$/i,VT=/[\0\t\n\r #%/:<>?@[\\\]^|]/,fT=/[\0\t\n\r #/:<>?@[\\\]^|]/,WT=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,RT=/[\t\n\r]/g,CT=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)hT(t,e%256),e=tT(e/256);return cT(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+=oT(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},vT={},ST=ww({},vT,{" ":1,'"':1,"<":1,">":1,"`":1}),YT=ww({},ST,{"#":1,"?":1,"{":1,"}":1}),JT=ww({},YT,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),KT=function(e,t){var n=Fw(e,0);return n>32&&n<127&&!Uw(t,e)?e:encodeURIComponent(e)},NT={ftp:21,file:null,http:80,https:443,ws:80,wss:443},LT=function(e,t){var n;return 2==e.length&&iT(bT,rT(e,0))&&(":"==(n=rT(e,1))||!t&&"|"==n)},HT=function(e){var t;return e.length>1&&LT(mT(e,0,2))&&(2==e.length||"/"===(t=rT(e,2))||"\\"===t||"?"===t||"#"===t)},xT=function(e){return"."===e||"%2e"===ZT(e)},kT={},UT={},wT={},TT={},AT={},FT={},BT={},zT={},jT={},QT={},MT={},PT={},ET={},DT={},OT={},_T={},qT={},$T={},eA={},tA={},nA={},rA=function e(t,n,r){var i,c,o,a=zw(t);if(n){if(c=this.parse(a))throw $w(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(a,null,i))throw $w(c);(o=_w(new Ow)).bindURL(this),this.searchParams=o}};rA.prototype={type:"URL",parse:function(e,t,n){var r,i,c,o,a,l=this,u=t||kT,d=0,s="",m=!1,Z=!1,h=!1;for(e=zw(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=uT(e,WT,"")),e=uT(e,RT,""),r=Tw(e);d<=r.length;){switch(i=r[d],u){case kT:if(!i||!iT(bT,i)){if(t)return"Invalid scheme";u=wT;continue}s+=ZT(i),u=UT;break;case UT:if(i&&(iT(pT,i)||"+"==i||"-"==i||"."==i))s+=ZT(i);else{if(":"!=i){if(t)return"Invalid scheme";s="",u=wT,d=0;continue}if(t&&(l.isSpecial()!=Uw(NT,s)||"file"==s&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=s,t)return void(l.isSpecial()&&NT[l.scheme]==l.port&&(l.port=null));s="","file"==l.scheme?u=DT:l.isSpecial()&&n&&n.scheme==l.scheme?u=TT:l.isSpecial()?u=zT:"/"==r[d+1]?(u=AT,d++):(l.cannotBeABaseURL=!0,lT(l.path,""),u=eA)}break;case wT:if(!n||n.cannotBeABaseURL&&"#"!=i)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=Aw(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=nA;break}u="file"==n.scheme?DT:FT;continue;case TT:if("/"!=i||"/"!=r[d+1]){u=FT;continue}u=jT,d++;break;case AT:if("/"==i){u=QT;break}u=$T;continue;case FT:if(l.scheme=n.scheme,i==Cw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Aw(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=BT;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Aw(n.path),l.query="",u=tA;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Aw(n.path),l.path.length--,u=$T;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=Aw(n.path),l.query=n.query,l.fragment="",u=nA}break;case BT:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=$T;continue}u=QT}else u=jT;break;case zT:if(u=jT,"/"!=i||"/"!=rT(s,d+1))continue;d++;break;case jT:if("/"!=i&&"\\"!=i){u=QT;continue}break;case QT:if("@"==i){m&&(s="%40"+s),m=!0,c=Tw(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||h){var I=KT(p,JT);h?l.password+=I:l.username+=I}else h=!0}s=""}else if(i==Cw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==s)return"Invalid authority";d-=Tw(s).length+1,s="",u=MT}else s+=i;break;case MT:case PT:if(t&&"file"==l.scheme){u=_T;continue}if(":"!=i||Z){if(i==Cw||"/"==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=qT,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=ET,t==PT)return}break;case ET:if(!iT(IT,i)){if(i==Cw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=s){var g=eT(s,10);if(g>65535)return"Invalid port";l.port=l.isSpecial()&&g===NT[l.scheme]?null:g,s=""}if(t)return;u=qT;continue}return"Invalid port"}s+=i;break;case DT:if(l.scheme="file","/"==i||"\\"==i)u=OT;else{if(!n||"file"!=n.scheme){u=$T;continue}if(i==Cw)l.host=n.host,l.path=Aw(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=Aw(n.path),l.query="",u=tA;else{if("#"!=i){HT(cT(Aw(r,d),""))||(l.host=n.host,l.path=Aw(n.path),l.shortenPath()),u=$T;continue}l.host=n.host,l.path=Aw(n.path),l.query=n.query,l.fragment="",u=nA}}break;case OT:if("/"==i||"\\"==i){u=_T;break}n&&"file"==n.scheme&&!HT(cT(Aw(r,d),""))&&(LT(n.path[0],!0)?lT(l.path,n.path[0]):l.host=n.host),u=$T;continue;case _T:if(i==Cw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&LT(s))u=$T;else if(""==s){if(l.host="",t)return;u=qT}else{if(o=l.parseHost(s))return o;if("localhost"==l.host&&(l.host=""),t)return;s="",u=qT}continue}s+=i;break;case qT:if(l.isSpecial()){if(u=$T,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=Cw&&(u=$T,"/"!=i))continue}else l.fragment="",u=nA;else l.query="",u=tA;break;case $T:if(i==Cw||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(a=ZT(a=s))||"%2e."===a||".%2e"===a||"%2e%2e"===a?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||lT(l.path,"")):xT(s)?"/"==i||"\\"==i&&l.isSpecial()||lT(l.path,""):("file"==l.scheme&&!l.path.length&&LT(s)&&(l.host&&(l.host=""),s=rT(s,0)+":"),lT(l.path,s)),s="","file"==l.scheme&&(i==Cw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)dT(l.path);"?"==i?(l.query="",u=tA):"#"==i&&(l.fragment="",u=nA)}else s+=KT(i,YT);break;case eA:"?"==i?(l.query="",u=tA):"#"==i?(l.fragment="",u=nA):i!=Cw&&(l.path[0]+=KT(i,vT));break;case tA:t||"#"!=i?i!=Cw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":KT(i,vT)):(l.fragment="",u=nA);break;case nA:i!=Cw&&(l.fragment+=KT(i,ST))}d++}},parseHost:function(e){var t,n,r;if("["==rT(e,0)){if("]"!=rT(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 rT(e,s)};if(":"==m()){if(":"!=rT(e,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&iT(GT,m());)t=16*t+eT(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(!iT(IT,m()))return;for(;iT(IT,m());){if(c=eT(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}(mT(e,1,-1)),!t)return"Invalid host";this.host=t}else if(this.isSpecial()){if(e=Bw(e),iT(VT,e))return"Invalid host";if(t=function(e){var t,n,r,i,c,o,a,l=sT(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"==rT(i,0)&&(c=iT(gT,i)?16:8,i=mT(i,8==c?1:2)),""===i)o=0;else{if(!iT(10==c?XT:8==c?yT:GT,i))return e;o=eT(i,c)}lT(n,o)}for(r=0;r<t;r++)if(o=n[r],r==t-1){if(o>=nT(256,5-t))return null}else if(o>255)return null;for(a=aT(n),r=0;r<n.length;r++)a+=n[r]*nT(256,3-r);return a}(e),null===t)return"Invalid host";this.host=t}else{if(iT(fT,e))return"Invalid host";for(t="",n=Tw(e),r=0;r<n.length;r++)t+=KT(n[r],vT);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return Uw(NT,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&LT(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+=CT(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?o[0]:o.length?"/"+cT(o,"/"):"",null!==a&&(u+="?"+a),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw $w(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new iA(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+CT(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(zw(e)+":",kT)},getUsername:function(){return this.username},setUsername:function(e){var t=Tw(zw(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=KT(t[n],JT)}},getPassword:function(){return this.password},setPassword:function(e){var t=Tw(zw(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=KT(t[n],JT)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?CT(e):CT(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,MT)},getHostname:function(){var e=this.host;return null===e?"":CT(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,PT)},getPort:function(){var e=this.port;return null===e?"":zw(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=zw(e))?this.port=null:this.parse(e,ET))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+cT(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,qT))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=zw(e))?this.query=null:("?"==rT(e,0)&&(e=mT(e,1)),this.query="",this.parse(e,tA)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=zw(e))?("#"==rT(e,0)&&(e=mT(e,1)),this.fragment="",this.parse(e,nA)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var iA=function(e){var t=kw(this,cA),n=Qw(arguments.length,1)>1?arguments[1]:void 0,r=Ew(t,new rA(e,!1,n));Yw||(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())},cA=iA.prototype,oA=function(e,t){return{get:function(){return Dw(this)[e]()},set:t&&function(e){return Dw(this)[t](e)},configurable:!0,enumerable:!0}};if(Yw&&Hw(cA,{href:oA("serialize","setHref"),origin:oA("getOrigin"),protocol:oA("getProtocol","setProtocol"),username:oA("getUsername","setUsername"),password:oA("getPassword","setPassword"),host:oA("getHost","setHost"),hostname:oA("getHostname","setHostname"),port:oA("getPort","setPort"),pathname:oA("getPathname","setPathname"),search:oA("getSearch","setSearch"),searchParams:oA("getSearchParams"),hash:oA("getHash","setHash")}),xw(cA,"toJSON",(function(){return Dw(this).serialize()}),{enumerable:!0}),xw(cA,"toString",(function(){return Dw(this).serialize()}),{enumerable:!0}),qw){var aA=qw.createObjectURL,lA=qw.revokeObjectURL;aA&&xw(iA,"createObjectURL",Nw(aA,qw)),lA&&xw(iA,"revokeObjectURL",Nw(lA,qw))}jw(iA,"URL"),Sw({global:!0,forced:!Jw,sham:!Yw},{URL:iA});var uA,dA=H;function sA(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())}))}
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 mw(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())}))}mi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return dw(URL.prototype.toString,this)}}),function(e){e.formPost="form_post",e.query="query"}(uw||(uw={}));var Zw,hw="{{token}}",bw="{{username}}",pw="{{scope}}",Iw="{{clientID}}",gw="{{clientSecret}}";!function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(Zw||(Zw={}));var yw,Xw="refresh_token_timer",Gw="pkce_code_verifier",Vw="#",fw=["RS256","RS512","RS384","PS256"],Ww="code",Cw="session_state",vw="sign_out_url",Rw="sign_out_success",Sw="state",Yw="openid";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(yw||(yw={}));var Kw=function(e){m(n,I(Error));var t=X(n);function n(e,r,i,c,a,o){var u;return l(this,n),(u=t.call(this,null!=c?c:null==o?void 0:o.message)).name=u.constructor.name,u.code=e,u.file=r,u.method=i,u.description=a,u.error=o,Object.setPrototypeOf(g(u),(this instanceof n?this.constructor:void 0).prototype),u}return d(n)}(),Jw=function(e){m(n,Kw);var t=X(n);function n(e,r,i,c,a,o,u,d,s){var m;return l(this,n),(m=t.call(this,e,r,i,c,a)).name=m.constructor.name,m.code=e,m.file=r,m.method=i,m.description=a,m.networkErrorCode=o,m.networkErrorMessage=u,m.status=d,m.networkErrorData=s,m}return d(n)}(),Lw=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(V(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}();Lw.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 Nw,Hw,xw=function(){function e(t,n){var r=this;l(this,e),this._dataLayer=t,this._config=function(){return mw(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 mw(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:"resolveWellKnownEndpoint",value:function(){return mw(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._config();case 2:return t=e.sent,e.abrupt("return",t.wellKnownEndpoint?t.serverOrigin+t.wellKnownEndpoint:t.serverOrigin+"/oauth2/token/.well-known/openid-configuration");case 4:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpoints",value:function(e){return mw(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.overrideWellEndpointConfig&&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:"resolveFallbackEndpoints",value:function(){return mw(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:return(n=e.sent).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]:""})),r={authorization_endpoint:n.serverOrigin+"/oauth2/authorize",end_session_endpoint:n.serverOrigin+"/oidc/logout",jwks_uri:n.serverOrigin+"/oauth2/jwks",check_session_iframe:n.serverOrigin+"/oidc/checksession",revocation_endpoint:n.serverOrigin+"/oauth2/revoke",token_endpoint:n.serverOrigin+"/oauth2/token"},e.abrupt("return",Object.assign(Object.assign({},t),r));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i=this;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:return r=t.sent,t.abrupt("return",n&&0!==n.trim().length?fetch(n,{credentials:r.sendCookiesInRequests?yw.Include:yw.SameOrigin}).then((function(t){return mw(i,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(200===t.status){n.next=2;break}return n.abrupt("return",Promise.reject(new Kw("AUTH_HELPER-VIT-NR02","authentication-helper","validateIdToken","Invalid response status received for jwks request.","The request sent to get the jwks returned "+t.status+" , which is invalid.")));case 2:return n.next=4,this._oidcProviderMetaData();case 4:return r=n.sent.issuer,n.next=7,this.resolveWellKnownEndpoint();case 7:if(i=n.sent.split("/.well-known")[0],r&&r===i){n.next=10;break}return n.abrupt("return",Promise.resolve(!1));case 10:return n.next=12,t.json();case 12:return c=n.sent,n.abrupt("return",this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],c.keys).then((function(t){return mw(a,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=this._cryptoHelper,n.t1=e,n.t2=t,n.next=5,this._config();case 5:return n.t3=n.sent.clientID,n.t4=r,n.t5=this._cryptoHelper.decodeIDToken(e).sub,n.next=10,this._config();case 10:return n.t6=n.sent.clockTolerance,n.abrupt("return",n.t0.isValidIdToken.call(n.t0,n.t1,n.t2,n.t3,n.t4,n.t5,n.t6).then((function(e){return e})).catch((function(e){return Promise.reject(new Kw("AUTH_HELPER-VIT-ES03","authentication-helper","validateIdToken",void 0,void 0,e))})));case 12:case"end":return n.stop()}}),n,this)})))})).catch((function(e){return Promise.reject(new Kw("AUTH_HELPER-VIT-ES04","authentication-helper","validateIdToken",void 0,void 0,e))})));case 14:case"end":return n.stop()}}),n,this)})))})).catch((function(e){var t,n,r;return Promise.reject(new Jw("AUTH_HELPER-VIT-NR05","authentication-helper","validateIdToken","Request to jwks endpoint failed.","The request sent to get the jwks from the server failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})):Promise.reject(new Kw("AUTH_HELPER-VIT-NF01","authentication-helper","validateIdToken","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 7:case"end":return t.stop()}}),t,this)})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),a=Lw.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},Lw.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return mw(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 mw(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 mw(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){n.next=2;break}return n.abrupt("return",Promise.reject(new Kw("AUTH_HELPER-HTR-NR01","authentication-helper","handleTokenResponse","Invalid response status received for token request.","The request sent to get the token returned "+e.status+" , which is invalid.")));case 2:return n.next=4,e.json();case 4:return r=n.sent,n.next=7,this._config();case 7:if(!n.sent.validateIDToken){n.next=9;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(e){return mw(c,void 0,void 0,regeneratorRuntime.mark((function n(){var i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=5;break}return n.next=3,this._dataLayer.setSessionData(r,t);case 3:return i={accessToken:r.access_token,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.abrupt("return",Promise.resolve(i));case 5:return n.abrupt("return",Promise.reject(new Kw("AUTH_HELPER-HTR-IV02","authentication-helper","handleTokenResponse","The id token returned is not valid.","The id token returned has failed the validation check.")));case 6:case"end":return n.stop()}}),n,this)})))})).catch((function(e){return Promise.reject(new Kw("AUTH_HELPER-HAT-ES03","authentication-helper","handleTokenResponse",void 0,void 0,e))})));case 9:return i={accessToken:r.access_token,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=12,this._dataLayer.setSessionData(r,t);case 12:return n.abrupt("return",Promise.resolve(i));case 13:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return mw(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}(),kw=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 this._cryptoUtils.parseJwk(c)}}catch(e){i.e(e)}finally{i.f()}return Promise.reject(new Kw("CRYPTO_UTIL-GTFTIT-IV01","crypto-utils","getJWKForTheIdToken","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,fw,n,r,i,c).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(new Kw("CRYPTO_UTIL-IVIT-IV02","crypto-utils","isValidIdToken","Validating ID token failed",e))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new Kw("CRYPTO_UTIL-DIT-IV01","crypto-utils","decodeIDToken","Decoding ID token failed.",e)}}}]),e}(),Uw=function(){function e(t,n){var r=this;l(this,e),this._cryptoUtils=n,this._cryptoHelper=new kw(n),this._authenticationHelper=new xw(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return mw(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 mw(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 mw(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,d,s,m,Z,h,b,p,I,g;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 Kw("AUTH_CORE-GAU-NF01","authentication-core","getAuthorizationURL","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)).searchParams.append("response_type","code"),l.searchParams.append("client_id",o.clientID),u="openid",o.scope&&o.scope.length>0&&(o.scope.includes("openid")||o.scope.push("openid"),u=o.scope.join(" ")),l.searchParams.append("scope",u),l.searchParams.append("redirect_uri",o.signInRedirectURL),o.responseMode&&l.searchParams.append("response_mode",o.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(d=c.sent,!o.enablePKCE){c.next=21;break}return s=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),m=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(s),c.next=19,this._dataLayer.setTemporaryDataParameter(d,s,t);case 19:l.searchParams.append("code_challenge_method","S256"),l.searchParams.append("code_challenge",m);case 21:if(o.prompt&&l.searchParams.append("prompt",o.prompt),Z=e)for(h=0,b=Object.entries(Z);h<b.length;h++)p=G(b[h],2),I=p[0],g=p[1],""!=I&&""!=g&&"state"!==I&&l.searchParams.append(I,g.toString());return c.abrupt("return",(l.searchParams.append("state",Lw.generateStateParamForRequestCorrelation(d,Z?null===(i=Z.state)||void 0===i?void 0:i.toString():"")),l.toString()));case 25:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return mw(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l,u=this;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}return i.abrupt("return",Promise.reject(new Kw("AUTH_CORE-RAT1-NF01","authentication-core","requestAccessToken","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(Lw.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(Lw.extractPKCEKeyFromStateParam(n),r);case 29:return i.abrupt("return",fetch(c,{body:o.join("&"),credentials:a.sendCookiesInRequests?yw.Include:yw.SameOrigin,headers:new Headers(Lw.getTokenRequestHeaders()),method:"POST"}).then((function(e){return u._authenticationHelper.handleTokenResponse(e,r).then((function(e){return e})).catch((function(e){return Promise.reject(new Kw("AUTH_CORE-RAT1-ES02","authentication-core","requestAccessToken",void 0,void 0,e))}))})).catch((function(e){var t,n,r;return Promise.reject(new Jw("AUTH_CORE-RAT1-NR03","authentication-core","requestAccessToken","Requesting access token failed","The request to get the access token from the server failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 30:case"end":return i.stop()}}),i,this)})))}},{key:"refreshAccessToken",value:function(e){return mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a=this;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}return t.abrupt("return",Promise.reject(new Kw("AUTH_CORE-RAT2-NF01","authentication-core","refreshAccessToken","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}return t.abrupt("return",Promise.reject(new Kw("AUTH_CORE-RAT2-NF02","authentication-core","refreshAccessToken","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=[],t.abrupt("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)),fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?yw.Include:yw.SameOrigin,headers:new Headers(Lw.getTokenRequestHeaders()),method:"POST"}).then((function(t){return a._authenticationHelper.handleTokenResponse(t,e).then((function(e){return e})).catch((function(e){return Promise.reject(new Kw("AUTH_CORE-RAT2-ES03","authentication-core","refreshAccessToken",void 0,void 0,e))}))})).catch((function(e){var t,n,r;return Promise.reject(new Jw("AUTH_CORE-RAT2-NR03","authentication-core","refreshAccessToken","Refresh access token request failed.","The request to refresh the access token failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))}))));case 15:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(e){return mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c=this;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}return t.abrupt("return",Promise.reject(new Kw("AUTH_CORE-RAT3-NF01","authentication-core","revokeAccessToken","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.abrupt("return",fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?yw.Include:yw.SameOrigin,headers:new Headers(Lw.getTokenRequestHeaders()),method:"POST"}).then((function(t){return 200!==t.status?Promise.reject(new Kw("AUTH_CORE-RAT3-NR02","authentication-core","revokeAccessToken","Invalid response status received for revoke access token request.","The request sent to revoke the access token returned "+t.status+" , which is invalid.")):(c._authenticationHelper.clearUserSessionData(e),Promise.resolve(t))})).catch((function(e){var t,n,r;return Promise.reject(new Jw("AUTH_CORE-RAT3-NR03","authentication-core","revokeAccessToken","The request to revoke access token failed.","The request sent to revoke the access token failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 19:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(e,t){return mw(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u=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}return n.abrupt("return",Promise.reject(new Kw("AUTH_CORE-RCG-NF01","authentication-core","requestCustomGrant","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 mw(u,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({},Lw.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?yw.Include:yw.SameOrigin,headers:new Headers(o),method:"POST"},n.abrupt("return",fetch(c,l).then((function(n){return 200!==n.status?Promise.reject(new Kw("AUTH_CORE-RCG-NR02","authentication-core","requestCustomGrant","Invalid response status received for the custom grant request.","The request sent to get the custom grant returned "+n.status+" , which is invalid.")):e.returnsSession?u._authenticationHelper.handleTokenResponse(n,t).then((function(e){return e})).catch((function(e){return Promise.reject(new Kw("AUTH_CORE-RCG-ES03","authentication-core","requestCustomGrant",void 0,void 0,e))})):Promise.resolve(n)})).catch((function(e){var t,n,r;return Promise.reject(new Jw("AUTH_CORE-RCG-NR04","authentication-core","requestCustomGrant","The custom grant request failed.","The request sent to get the custom grant failed.",null!==(t=null==e?void 0:e.code)&&void 0!==t?t:"",null==e?void 0:e.message,null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status,null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.body))})));case 25:case"end":return n.stop()}}),n,this)})))}},{key:"getBasicUserInfo",value:function(e){return mw(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 mw(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 mw(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 mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=!e,!t.t0){t.next=5;break}return t.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:t.t0=t.sent;case 5:if(!t.t0){t.next=7;break}return t.abrupt("return",Promise.resolve(!0));case 7:return t.next=9,this._authenticationHelper.resolveWellKnownEndpoint();case 9:return n=t.sent,t.abrupt("return",fetch(n).then((function(e){return mw(r,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(200===e.status){t.next=4;break}t.t0=Promise.reject(new Kw("AUTH_CORE-GOPM-NR01","authentication-core","getOIDCProviderMetaData","Invalid response status received for OIDC provider meta data request.","The request sent to the well-known endpoint to get the OIDC provider meta data returned "+e.status+" , which is invalid.")),t.next=17;break;case 4:return t.t1=this._dataLayer,t.t2=this._authenticationHelper,t.next=8,e.json();case 8:return t.t3=t.sent,t.next=11,t.t2.resolveEndpoints.call(t.t2,t.t3);case 11:return t.t4=t.sent,t.next=14,t.t1.setOIDCProviderMetaData.call(t.t1,t.t4);case 14:return t.next=16,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 16:t.t0=Promise.resolve(!0);case 17:return t.abrupt("return",t.t0);case 18:case"end":return t.stop()}}),t,this)})))})).catch((function(){return mw(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=this._dataLayer,e.next=3,this._authenticationHelper.resolveFallbackEndpoints();case 3:return e.t1=e.sent,e.next=6,e.t0.setOIDCProviderMetaData.call(e.t0,e.t1);case 6:return e.next=8,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e,this)})))})));case 11:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return mw(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._oidcProviderMetaData();case 2:return t=e.sent,e.t0=t.authorization_endpoint,e.t1=t.check_session_iframe,e.t2=t.end_session_endpoint,e.t3=t.introspection_endpoint,e.t4=t.issuer,e.t5=t.jwks_uri,e.t6=t.registration_endpoint,e.t7=t.revocation_endpoint,e.t8=t.token_endpoint,e.t9=t.userinfo_endpoint,e.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return e.t10=e.sent,e.abrupt("return",{authorizationEndpoint:e.t0,checkSessionIframe:e.t1,endSessionEndpoint:e.t2,introspectionEndpoint:e.t3,issuer:e.t4,jwksUri:e.t5,registrationEndpoint:e.t6,revocationEndpoint:e.t7,tokenEndpoint:e.t8,userinfoEndpoint:e.t9,wellKnownEndpoint:e.t10});case 17:case"end":return e.stop()}}),e,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return mw(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 Kw("AUTH_CORE-GSOU-NF01","authentication-core","getSignOutURL","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 Kw("AUTH_CORE-GSOU-NF02","authentication-core","getSignOutURL","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 Kw("AUTH_CORE-GSOU-NF03","authentication-core","getSignOutURL","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 mw(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 mw(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 mw(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 mw(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(Lw.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 mw(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(Lw.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 mw(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:if(!e.overrideWellEndpointConfig){t.next=13;break}if(t.t0=null==e?void 0:e.endpoints,!t.t0){t.next=11;break}return t.t1=this._dataLayer,t.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return t.t2=t.sent,t.next=11,t.t1.setOIDCProviderMetaData.call(t.t1,t.t2);case 11:t.next=17;break;case 13:if(t.t3=null==e?void 0:e.endpoints,!t.t3){t.next=17;break}return t.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return t.stop()}}),t,this)})))}}]),e}(),Fw=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 mw(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 mw(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 mw(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 mw(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(Zw.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return mw(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(Zw.OIDCProviderMetaData),e);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"setTemporaryData",value:function(e,t){return mw(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(Zw.TemporaryData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionData",value:function(e,t){return mw(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(Zw.SessionData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigData",value:function(){var e;return mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return mw(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(Zw.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return mw(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(Zw.TemporaryData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(e){return mw(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(Zw.SessionData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(e){return mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.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 mw(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(Zw.ConfigData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,t){return mw(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(Zw.OIDCProviderMetaData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(e,t,n){return mw(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(Zw.TemporaryData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionDataParameter",value:function(e,t,n){return mw(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(Zw.SessionData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigDataParameter",value:function(e){return mw(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(Zw.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return mw(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(Zw.OIDCProviderMetaData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,t){return mw(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(Zw.TemporaryData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionDataParameter",value:function(e,t){return mw(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(Zw.SessionData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}}]),e}(),Aw={clockTolerance:300,enablePKCE:!0,responseMode:uw.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},ww=function(){
15
+ ***************************************************************************** */function mA(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 dA(URL.prototype.toString,this)}}),function(e){e.formPost="form_post",e.query="query"}(uA||(uA={}));var ZA,hA="{{token}}",bA="{{username}}",pA="{{scope}}",IA="{{clientID}}",gA="{{clientSecret}}";!function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(ZA||(ZA={}));var yA,XA="refresh_token_timer",GA="pkce_code_verifier",VA="#",fA=["RS256","RS512","RS384","PS256"],WA="code",RA="session_state",CA="sign_out_url",vA="sign_out_success",SA="state",YA="openid";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(yA||(yA={}));var JA=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)})),KA=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(V(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}();KA.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 NA,LA,HA=function(){function e(t,n){var r=this;l(this,e),this._dataLayer=t,this._config=function(){return mA(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 mA(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:"resolveWellKnownEndpoint",value:function(){var e;return mA(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:return n=t.sent,r=n.wellKnownEndpoint||(null===(e=null==n?void 0:n.endpoints)||void 0===e?void 0:e.wellKnownEndpoint),i=n.baseUrl||n.serverOrigin,t.abrupt("return",r||i+"/oauth2/token/.well-known/openid-configuration");case 6:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpoints",value:function(e){return mA(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.overrideWellEndpointConfig&&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 mA(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 JA("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 mA(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||n.serverOrigin){e.next=7;break}throw new JA("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 mA(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 JA("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?yA.Include:yA.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new JA("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=JA,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=KA.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},KA.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return mA(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 mA(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 mA(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=JA,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 mA(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 mA(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}(),xA=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=R(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 JA("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,fA,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new JA("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new JA("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),kA=function(){function e(t,n){var r=this;l(this,e),this._cryptoUtils=n,this._cryptoHelper=new xA(n),this._authenticationHelper=new HA(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return mA(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 mA(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 mA(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o,a,l,u,d,s,m,Z,h,b,p,I,g;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 JA("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)).searchParams.append("response_type","code"),l.searchParams.append("client_id",a.clientID),u="openid",a.scope&&a.scope.length>0&&(a.scope.includes("openid")||a.scope.push("openid"),u=a.scope.join(" ")),l.searchParams.append("scope",u),l.searchParams.append("redirect_uri",a.signInRedirectURL),a.responseMode&&l.searchParams.append("response_mode",a.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(d=c.sent,!a.enablePKCE){c.next=21;break}return s=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),m=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(s),c.next=19,this._dataLayer.setTemporaryDataParameter(d,s,t);case 19:l.searchParams.append("code_challenge_method","S256"),l.searchParams.append("code_challenge",m);case 21:if(a.prompt&&l.searchParams.append("prompt",a.prompt),Z=e)for(h=0,b=Object.entries(Z);h<b.length;h++)p=G(b[h],2),I=p[0],g=p[1],""!=I&&""!=g&&"state"!==I&&l.searchParams.append(I,g.toString());return c.abrupt("return",(l.searchParams.append("state",KA.generateStateParamForRequestCorrelation(d,Z?null===(i=Z.state)||void 0===i?void 0:i.toString():"")),l.toString()));case 25:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return mA(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 JA("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(KA.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(KA.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:a.join("&"),credentials:o.sendCookiesInRequests?yA.Include:yA.SameOrigin,headers:new Headers(KA.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new JA("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=JA,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 mA(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 JA("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 JA("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?yA.Include:yA.SameOrigin,headers:new Headers(KA.getTokenRequestHeaders()),method:"POST"});case 18:o=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new JA("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=JA,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 mA(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 JA("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?yA.Include:yA.SameOrigin,headers:new Headers(KA.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new JA("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=JA,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 mA(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 JA("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 mA(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({},KA.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?yA.Include:yA.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 JA("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=JA,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 mA(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 mA(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 mA(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){var t;return mA(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._config();case 2:if(r=n.sent,n.t0=!e,!n.t0){n.next=8;break}return n.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:n.t0=n.sent;case 8:if(!n.t0){n.next=10;break}return n.abrupt("return",Promise.resolve());case 10:if(!(i=r.wellKnownEndpoint||(null===(t=null==r?void 0:r.endpoints)||void 0===t?void 0:t.wellKnownEndpoint))){n.next=36;break}return n.prev=12,n.next=15,fetch(i);case 15:if(200===(c=n.sent).status&&c.ok){n.next=18;break}throw new Error;case 18:n.next=23;break;case 20:throw n.prev=20,n.t1=n.catch(12),new JA("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return n.t2=this._dataLayer,n.t3=this._authenticationHelper,n.next=27,c.json();case 27:return n.t4=n.sent,n.next=30,n.t3.resolveEndpoints.call(n.t3,n.t4);case 30:return n.t5=n.sent,n.next=33,n.t2.setOIDCProviderMetaData.call(n.t2,n.t5);case 33:return n.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return n.abrupt("return",Promise.resolve());case 36:if(!r.baseUrl&&!r.serverOrigin){n.next=52;break}return n.prev=37,n.t6=this._dataLayer,n.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return n.t7=n.sent,n.next=44,n.t6.setOIDCProviderMetaData.call(n.t6,n.t7);case 44:n.next=49;break;case 46:throw n.prev=46,n.t8=n.catch(37),new JA("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=n.t8?n.t8:"Resolving endpoints by base url failed.");case 49:return n.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return n.abrupt("return",Promise.resolve());case 52:return n.prev=52,n.t9=this._dataLayer,n.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return n.t10=n.sent,n.next=59,n.t9.setOIDCProviderMetaData.call(n.t9,n.t10);case 59:n.next=64;break;case 61:throw n.prev=61,n.t11=n.catch(52),new JA("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=n.t11?n.t11:"Resolving endpoints by explicitly failed.");case 64:return n.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return n.abrupt("return",Promise.resolve());case 67:case"end":return n.stop()}}),n,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,o,a,l,u;return mA(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.t0=null!==(e=s.authorization_endpoint)&&void 0!==e?e:"",d.t1=null!==(t=s.check_session_iframe)&&void 0!==t?t:"",d.t2=null!==(n=s.end_session_endpoint)&&void 0!==n?n:"",d.t3=null!==(r=s.introspection_endpoint)&&void 0!==r?r:"",d.t4=null!==(i=s.issuer)&&void 0!==i?i:"",d.t5=null!==(c=s.jwks_uri)&&void 0!==c?c:"",d.t6=null!==(o=s.registration_endpoint)&&void 0!==o?o:"",d.t7=null!==(a=s.revocation_endpoint)&&void 0!==a?a:"",d.t8=null!==(l=s.token_endpoint)&&void 0!==l?l:"",d.t9=null!==(u=s.userinfo_endpoint)&&void 0!==u?u:"",d.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return d.t10=d.sent,d.abrupt("return",{authorizationEndpoint:d.t0,checkSessionIframe:d.t1,endSessionEndpoint:d.t2,introspectionEndpoint:d.t3,issuer:d.t4,jwksUri:d.t5,registrationEndpoint:d.t6,revocationEndpoint:d.t7,tokenEndpoint:d.t8,userinfoEndpoint:d.t9,wellKnownEndpoint:d.t10});case 17:case"end":return d.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return mA(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 JA("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 JA("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 JA("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 mA(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 mA(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 mA(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 mA(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(KA.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 mA(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(KA.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 mA(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:if(!e.overrideWellEndpointConfig){t.next=13;break}if(t.t0=null==e?void 0:e.endpoints,!t.t0){t.next=11;break}return t.t1=this._dataLayer,t.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return t.t2=t.sent,t.next=11,t.t1.setOIDCProviderMetaData.call(t.t1,t.t2);case 11:t.next=17;break;case 13:if(t.t3=null==e?void 0:e.endpoints,!t.t3){t.next=17;break}return t.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return t.stop()}}),t,this)})))}}]),e}(),UA=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 mA(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 mA(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 mA(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 mA(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(ZA.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return mA(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(ZA.OIDCProviderMetaData),e);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"setTemporaryData",value:function(e,t){return mA(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(ZA.TemporaryData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionData",value:function(e,t){return mA(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(ZA.SessionData,t),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigData",value:function(){var e;return mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return mA(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(ZA.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return mA(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(ZA.TemporaryData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(e){return mA(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(ZA.SessionData,e));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(e){return mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.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 mA(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(ZA.ConfigData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,t){return mA(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(ZA.OIDCProviderMetaData),e,t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(e,t,n){return mA(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(ZA.TemporaryData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionDataParameter",value:function(e,t,n){return mA(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(ZA.SessionData,n),e,t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigDataParameter",value:function(e){return mA(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(ZA.ConfigData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return mA(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(ZA.OIDCProviderMetaData),e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,t){return mA(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(ZA.TemporaryData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionDataParameter",value:function(e,t){return mA(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(ZA.SessionData,t),e);case 2:case"end":return n.stop()}}),n,this)})))}}]),e}(),wA={clockTolerance:300,enablePKCE:!0,responseMode:uA.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},TA=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 Fw("instance_".concat(e._instanceID),t),this._authenticationCore=new Uw(this._dataLayer,n)}
30
+ function e(t,n){l(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new UA("instance_".concat(e._instanceID),t),this._authenticationCore=new kA(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 mw(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({},Aw),e),{scope:[].concat(V(null!==(t=Aw.scope)&&void 0!==t?t:[]),V(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==Aw?void 0:Aw.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}
49
+ */return d(e,[{key:"initialize",value:function(e){var t,n,r;return mA(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({},wA),e),{scope:[].concat(V(null!==(t=wA.scope)&&void 0!==t?t:[]),V(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==wA?void 0:wA.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 mw(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)})))}
90
+ */},{key:"getAuthorizationURL",value:function(e,t){return mA(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 mw(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)})))}
116
+ */},{key:"requestAccessToken",value:function(e,t,n,r){return mA(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 mw(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)})))}
135
+ */},{key:"signOut",value:function(e){return mA(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 mw(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)})))}
156
+ */},{key:"getSignOutURL",value:function(e){return mA(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 mw(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)})))}
172
+ */},{key:"getOIDCServiceEndpoints",value:function(){return mA(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 mw(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)})))}
191
+ */},{key:"getDecodedIDToken",value:function(e){return mA(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 mw(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)})))}
210
+ */},{key:"getIDToken",value:function(e){return mA(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 mw(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)})))}
229
+ */},{key:"getBasicUserInfo",value:function(e){return mA(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 mw(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)})))}
297
+ */},{key:"getAccessToken",value:function(e){return mA(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 mw(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)})))}
356
+ */},{key:"isAuthenticated",value:function(e){return mA(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 mw(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)})))}
376
+ */},{key:"getPKCECode",value:function(e,t){return mA(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 mw(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)})))}
395
+ */},{key:"setPKCECode",value:function(e,t,n){return mA(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 mw(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}
433
+ function(e){return mA(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 mw(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"}(Nw||(Nw={})),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"}(Hw||(Hw={}));var Tw,Bw,zw,jw,Pw,Qw,Mw,Ew,Dw,Ow,_w,qw,$w,eT,tT,nT,rT,iT="Y2hlY2tTZXNzaW9u",cT=function(e){m(n,I(Error));var t=X(n);function n(e,r,i,c,a,o){var u;return l(this,n),(u=t.call(this,null!=c?c:null==o?void 0:o.message)).name=u.constructor.name,u.code=e,u.file=r,u.method=i,u.error=o,u.description=a,Object.setPrototypeOf(g(u),(this instanceof n?this.constructor:void 0).prototype),u}return d(n)}(),aT=function(){function e(t){l(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return d(e,[{key:"refreshAccessTokenAutomatically",value:function(){return sw(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 sw(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(Xw,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return sw(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(Xw);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(Xw);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}(),oT=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(vw,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(vw))&&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(ww.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(ww.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")!==Rw}},{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 sw(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}(),lT=(qw=function(e,t,n,r,i,c,a){Tw=e,Bw=t,zw=n,Pw=c,Qw=i,_w=a,(jw=r)>-1&&$w(),Qw>-1&&(i=setInterval((function(){nT()}),1e3*Qw))},$w=function(){return sw(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 sw(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,zw();case 2:r=t.sent,Boolean(Tw)&&Boolean(r)&&(i="".concat(Tw," ").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,Bw));case 4:case"end":return t.stop()}}),t)})))},Bw&&Tw&&Pw){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=Bw+"?client_id="+Tw+"&redirect_uri="+Pw,e.next=9,r();case 9:Ew=setInterval(r,1e3*jw),tT();case 11:case"end":return e.stop()}}),e)})))},eT=function(){clearInterval(Ew),clearInterval(void 0)},tT=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return sw(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=Bw)&&!((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,Mw();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&nT();case 13:case"end":return n.stop()}}),n)})))}),!1)},nT=function(){return sw(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"),!oT.canSendPromptNoneRequest()){e.next=10;break}return oT.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)&&(Ow(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))},Dw!==Nw.BrowserMemory&&Dw!==Nw.WebWorker||null===window||void 0===window||window.addEventListener("message",i),e.next=8,_w({prompt:"none",state:iT});case 8:c=e.sent,r.src=c;case 10:case"end":return e.stop()}}),e)})))},rT=function(e){return sw(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(Cw),a=window.parent.parent,null===i||!i.includes(iT)&&!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),oT.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=14,oT.waitTillPageRedirect();case 14:return t.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),Dw!==Nw.LocalStorage&&Dw!==Nw.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 oT.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=29,oT.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),oT.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=39,oT.waitTillPageRedirect();case 39:return t.abrupt("return",!0);case 40:return oT.setPromptNoneRequestSent(!1),t.next=43,Mw();case 43:return a.location.href=t.sent,window.location.href="about:blank",t.next=47,oT.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 sw(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),Mw=e,Dw=t,Ow=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:qw,receivePromptNoneResponse:rT,reset:eT});case 16:case"end":return r.stop()}}),r)})))}),uT={exports:{}},dT=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)}},sT=dT,mT=Object.prototype.toString;function ZT(e){return Array.isArray(e)}function hT(e){return void 0===e}function bT(e){return"[object ArrayBuffer]"===mT.call(e)}function pT(e){return null!==e&&"object"===c(e)}function IT(e){if("[object Object]"!==mT.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function gT(e){return"[object Function]"===mT.call(e)}function yT(e,t){if(null!=e)if("object"!==c(e)&&(e=[e]),ZT(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 XT={isArray:ZT,isArrayBuffer:bT,isBuffer:function(e){return null!==e&&!hT(e)&&null!==e.constructor&&!hT(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===mT.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&bT(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:pT,isPlainObject:IT,isUndefined:hT,isDate:function(e){return"[object Date]"===mT.call(e)},isFile:function(e){return"[object File]"===mT.call(e)},isBlob:function(e){return"[object Blob]"===mT.call(e)},isFunction:gT,isStream:function(e){return pT(e)&&gT(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===mT.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:yT,merge:function e(){var t={};function n(n,r){IT(t[r])&&IT(n)?t[r]=e(t[r],n):IT(n)?t[r]=e({},n):ZT(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)yT(arguments[r],n);return t},extend:function(e,t,n){return yT(t,(function(t,r){e[r]=n&&"function"==typeof t?sT(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}},GT=XT;function VT(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var fT=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(GT.isURLSearchParams(t))r=t.toString();else{var i=[];GT.forEach(t,(function(e,t){null!=e&&(GT.isArray(e)?t+="[]":e=[e],GT.forEach(e,(function(e){GT.isDate(e)?e=e.toISOString():GT.isObject(e)&&(e=JSON.stringify(e)),i.push(VT(t)+"="+VT(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},WT=XT;function CT(){this.handlers=[]}CT.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},CT.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},CT.prototype.forEach=function(e){WT.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var vT=CT,RT="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function ST(){throw new Error("setTimeout has not been defined")}function YT(){throw new Error("clearTimeout has not been defined")}var KT=ST,JT=YT;function LT(e){if(KT===setTimeout)return setTimeout(e,0);if((KT===ST||!KT)&&setTimeout)return KT=setTimeout,setTimeout(e,0);try{return KT(e,0)}catch(t){try{return KT.call(null,e,0)}catch(t){return KT.call(this,e,0)}}}"function"==typeof RT.setTimeout&&(KT=setTimeout),"function"==typeof RT.clearTimeout&&(JT=clearTimeout);var NT,HT=[],xT=!1,kT=-1;function UT(){xT&&NT&&(xT=!1,NT.length?HT=NT.concat(HT):kT=-1,HT.length&&FT())}function FT(){if(!xT){var e=LT(UT);xT=!0;for(var t=HT.length;t;){for(NT=HT,HT=[];++kT<t;)NT&&NT[kT].run();kT=-1,t=HT.length}NT=null,xT=!1,function(e){if(JT===clearTimeout)return clearTimeout(e);if((JT===YT||!JT)&&clearTimeout)return JT=clearTimeout,clearTimeout(e);try{JT(e)}catch(t){try{return JT.call(null,e)}catch(t){return JT.call(this,e)}}}(e)}}function AT(e,t){this.fun=e,this.array=t}AT.prototype.run=function(){this.fun.apply(null,this.array)};function wT(){}var TT=wT,BT=wT,zT=wT,jT=wT,PT=wT,QT=wT,MT=wT;var ET=RT.performance||{},DT=ET.now||ET.mozNow||ET.msNow||ET.oNow||ET.webkitNow||function(){return(new Date).getTime()};var OT=new Date;var _T={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];HT.push(new AT(e,t)),1!==HT.length||xT||LT(FT)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:TT,addListener:BT,once:zT,off:jT,removeListener:PT,removeAllListeners:QT,emit:MT,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*DT.call(ET),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-OT)/1e3}},qT=_T,$T=XT,eB=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},tB=eB,nB=function(e,t,n,r,i){var c=new Error(e);return tB(c,t,n,r,i)},rB=nB,iB=XT,cB=iB.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var a=[];a.push(e+"="+encodeURIComponent(t)),iB.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),iB.isString(r)&&a.push("path="+r),iB.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(){}},aB=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},oB=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},lB=XT,uB=["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"],dB=XT,sB=dB.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=dB.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function mB(e){this.message=e}mB.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},mB.prototype.__CANCEL__=!0;var ZB=mB,hB=XT,bB=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(rB("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},pB=cB,IB=fT,gB=function(e,t){return e&&!aB(t)?oB(e,t):t},yB=function(e){var t,n,r,i={};return e?(lB.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=lB.trim(e.substr(0,r)).toLowerCase(),n=lB.trim(e.substr(r+1)),t){if(i[t]&&uB.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},XB=sB,GB=nB,VB=LB,fB=ZB,WB=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)}hB.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=gB(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?yB(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};bB((function(e){t(e),o()}),(function(e){n(e),o()}),i),l=null}}if(l.open(e.method.toUpperCase(),IB(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(GB("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(GB("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||VB.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(GB(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},hB.isStandardBrowserEnv()){var Z=(e.withCredentials||XB(s))&&e.xsrfCookieName?pB.read(e.xsrfCookieName):void 0;Z&&(c[e.xsrfHeaderName]=Z)}"setRequestHeader"in l&&hB.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),hB.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 fB("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)}))},CB=XT,vB=function(e,t){$T.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},RB=eB,SB={"Content-Type":"application/x-www-form-urlencoded"};function YB(e,t){!CB.isUndefined(e)&&CB.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var KB,JB={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==qT&&"[object process]"===Object.prototype.toString.call(qT))&&(KB=WB),KB),transformRequest:[function(e,t){return vB(t,"Accept"),vB(t,"Content-Type"),CB.isFormData(e)||CB.isArrayBuffer(e)||CB.isBuffer(e)||CB.isStream(e)||CB.isFile(e)||CB.isBlob(e)?e:CB.isArrayBufferView(e)?e.buffer:CB.isURLSearchParams(e)?(YB(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):CB.isObject(e)||t&&"application/json"===t["Content-Type"]?(YB(t,"application/json"),function(e,t,n){if(CB.isString(e))try{return(t||JSON.parse)(e),CB.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||JB.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&CB.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw RB(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, */*"}}};CB.forEach(["delete","get","head"],(function(e){JB.headers[e]={}})),CB.forEach(["post","put","patch"],(function(e){JB.headers[e]=CB.merge(SB)}));var LB=JB,NB=XT,HB=LB,xB=function(e){return!(!e||!e.__CANCEL__)},kB=XT,UB=function(e,t,n){var r=this||HB;return NB.forEach(n,(function(n){e=n.call(r,e,t)})),e},FB=xB,AB=LB,wB=ZB;function TB(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new wB("canceled")}var BB=XT,zB=function(e,t){t=t||{};var n={};function r(e,t){return BB.isPlainObject(e)&&BB.isPlainObject(t)?BB.merge(e,t):BB.isPlainObject(t)?BB.merge({},t):BB.isArray(t)?t.slice():t}function i(n){return BB.isUndefined(t[n])?BB.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!BB.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return BB.isUndefined(t[n])?BB.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 BB.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);BB.isUndefined(r)&&t!==o||(n[e]=r)})),n},jB="0.26.0",PB=jB,QB={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){QB[e]=function(n){return c(n)===e||"a"+(t<1?"n ":" ")+e}}));var MB={};QB.transitional=function(e,t,n){function r(e,t){return"[Axios v"+PB+"] 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&&!MB[i]&&(MB[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 EB={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:QB},DB=XT,OB=fT,_B=vT,qB=function(e){return TB(e),e.headers=e.headers||{},e.data=UB.call(e,e.data,e.headers,e.transformRequest),e.headers=kB.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),kB.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||AB.adapter)(e).then((function(t){return TB(e),t.data=UB.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return FB(t)||(TB(e),t&&t.response&&(t.response.data=UB.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},$B=zB,ez=EB,tz=ez.validators;function nz(e){this.defaults=e,this.interceptors={request:new _B,response:new _B}}nz.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=$B(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:tz.transitional(tz.boolean),forcedJSONParsing:tz.transitional(tz.boolean),clarifyTimeoutError:tz.transitional(tz.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=[qB,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=qB(l)}catch(e){return Promise.reject(e)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},nz.prototype.getUri=function(e){return e=$B(this.defaults,e),OB(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},DB.forEach(["delete","get","head","options"],(function(e){nz.prototype[e]=function(t,n){return this.request($B(n||{},{method:e,url:t,data:(n||{}).data}))}})),DB.forEach(["post","put","patch"],(function(e){nz.prototype[e]=function(t,n,r){return this.request($B(r||{},{method:e,url:t,data:n}))}}));var rz=nz,iz=ZB;function cz(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 iz(e),t(n.reason))}))}cz.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},cz.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},cz.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},cz.source=function(){var e,t=new cz((function(t){e=t}));return{token:t,cancel:e}};var az=cz,oz=XT,lz=XT,uz=dT,dz=rz,sz=zB;var mz=function e(t){var n=new dz(t),r=uz(dz.prototype.request,n);return lz.extend(r,dz.prototype,n),lz.extend(r,n),r.create=function(n){return e(sz(t,n))},r}(LB);mz.Axios=dz,mz.Cancel=ZB,mz.CancelToken=az,mz.isCancel=xB,mz.VERSION=jB,mz.all=function(e){return Promise.all(e)},mz.spread=function(e){return function(t){return e.apply(null,t)}},mz.isAxiosError=function(e){return oz.isObject(e)&&!0===e.isAxiosError},uT.exports=mz,uT.exports.default=mz;var Zz,hz=uT.exports;var bz=Zz=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 sw(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),Zz.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 Zz.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 Zz.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 sw(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Zz.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){Zz.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){Zz.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zz.DEFAULT_HANDLER_DISABLE_TIMEOUT;Zz.isHandlerEnabled=!1,setTimeout((function(){Zz.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=hz.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new Zz),this.axiosInstance.interceptors.request.use((function(t){return sw(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=hz.all,this.axiosInstance.spread=hz.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}();bz.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,bz=Zz=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){}],bz);var pz=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return sw(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 sw(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 sw(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}(),Iz=function(){function e(){l(this,e),this._data=new Map}return d(e,[{key:"setData",value:function(e,t){return sw(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 sw(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 sw(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}(),gz=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return sw(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 sw(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 sw(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}(),yz=[],Xz=[],Gz="undefined"!=typeof Uint8Array?Uint8Array:Array,Vz=!1;function fz(){Vz=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)yz[t]=e[t],Xz[e.charCodeAt(t)]=t;Xz["-".charCodeAt(0)]=62,Xz["_".charCodeAt(0)]=63}function Wz(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(yz[(i=r)>>18&63]+yz[i>>12&63]+yz[i>>6&63]+yz[63&i]);return c.join("")}function Cz(e){var t;Vz||fz();for(var n=e.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(Wz(e,o,o+a>l?l:o+a));return 1===r?(t=e[n-1],i+=yz[t>>2],i+=yz[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=yz[t>>10],i+=yz[t>>4&63],i+=yz[t<<2&63],i+="="),c.push(i),c.join("")}function vz(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 Rz(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 Sz={}.toString,Yz=Array.isArray||function(e){return"[object Array]"==Sz.call(e)};Nz.TYPED_ARRAY_SUPPORT=void 0===RT.TYPED_ARRAY_SUPPORT||RT.TYPED_ARRAY_SUPPORT;var Kz=Jz();function Jz(){return Nz.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Lz(e,t){if(Jz()<t)throw new RangeError("Invalid typed array length");return Nz.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Nz.prototype:(null===e&&(e=new Nz(t)),e.length=t),e}function Nz(e,t,n){if(!(Nz.TYPED_ARRAY_SUPPORT||this instanceof Nz))return new Nz(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 kz(this,e)}return Hz(this,e,t,n)}function Hz(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);Nz.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Nz.prototype:e=Uz(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Nz.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|wz(t,n),i=(e=Lz(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(Az(t)){var n=0|Fz(t.length);return 0===(e=Lz(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?Lz(e,0):Uz(e,t);if("Buffer"===t.type&&Yz(t.data))return Uz(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function xz(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 kz(e,t){if(xz(t),e=Lz(e,t<0?0:0|Fz(t)),!Nz.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function Uz(e,t){var n=t.length<0?0:0|Fz(t.length);e=Lz(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function Fz(e){if(e>=Jz())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Jz().toString(16)+" bytes");return 0|e}function Az(e){return!(null==e||!e._isBuffer)}function wz(e,t){if(Az(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 mj(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Zj(e).length;default:if(r)return mj(e).length;t=(""+t).toLowerCase(),r=!0}}function Tz(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 tj(this,t,n);case"utf8":case"utf-8":return qz(this,t,n);case"ascii":return $z(this,t,n);case"latin1":case"binary":return ej(this,t,n);case"base64":return _z(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return nj(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Bz(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function zz(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=Nz.from(t,r)),Az(t))return 0===t.length?-1:jz(e,t,n,r,i);if("number"==typeof t)return t&=255,Nz.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):jz(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function jz(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 Pz(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 Qz(e,t,n,r){return hj(mj(t,e.length-n),e,n,r)}function Mz(e,t,n,r){return hj(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function Ez(e,t,n,r){return Mz(e,t,n,r)}function Dz(e,t,n,r){return hj(Zj(t),e,n,r)}function Oz(e,t,n,r){return hj(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 _z(e,t,n){return 0===t&&n===e.length?Cz(e):Cz(e.slice(t,n))}function qz(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)}Nz.poolSize=8192,Nz._augment=function(e){return e.__proto__=Nz.prototype,e},Nz.from=function(e,t,n){return Hz(null,e,t,n)},Nz.TYPED_ARRAY_SUPPORT&&(Nz.prototype.__proto__=Uint8Array.prototype,Nz.__proto__=Uint8Array),Nz.alloc=function(e,t,n){return function(e,t,n,r){return xz(t),t<=0?Lz(e,t):void 0!==n?"string"==typeof r?Lz(e,t).fill(n,r):Lz(e,t).fill(n):Lz(e,t)}(null,e,t,n)},Nz.allocUnsafe=function(e){return kz(null,e)},Nz.allocUnsafeSlow=function(e){return kz(null,e)},Nz.isBuffer=bj,Nz.compare=function(e,t){if(!Az(e)||!Az(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},Nz.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}},Nz.concat=function(e,t){if(!Yz(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Nz.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=Nz.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!Az(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},Nz.byteLength=wz,Nz.prototype._isBuffer=!0,Nz.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)Bz(this,t,t+1);return this},Nz.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)Bz(this,t,t+3),Bz(this,t+1,t+2);return this},Nz.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)Bz(this,t,t+7),Bz(this,t+1,t+6),Bz(this,t+2,t+5),Bz(this,t+3,t+4);return this},Nz.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?qz(this,0,e):Tz.apply(this,arguments)},Nz.prototype.equals=function(e){if(!Az(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Nz.compare(this,e)},Nz.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+">"},Nz.prototype.compare=function(e,t,n,r,i){if(!Az(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},Nz.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},Nz.prototype.indexOf=function(e,t,n){return zz(this,e,t,n,!0)},Nz.prototype.lastIndexOf=function(e,t,n){return zz(this,e,t,n,!1)},Nz.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 Pz(this,e,t,n);case"utf8":case"utf-8":return Qz(this,e,t,n);case"ascii":return Mz(this,e,t,n);case"latin1":case"binary":return Ez(this,e,t,n);case"base64":return Dz(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Oz(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},Nz.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function $z(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 tj(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+=sj(e[c]);return i}function nj(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 rj(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 ij(e,t,n,r,i,c){if(!Az(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 cj(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 aj(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 lj(e,t,n,r,i){return i||oj(e,0,n,4),Rz(e,t,n,r,23,4),n+4}function uj(e,t,n,r,i){return i||oj(e,0,n,8),Rz(e,t,n,r,52,8),n+8}Nz.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),Nz.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Nz.prototype;else{var i=t-e;n=new Nz(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},Nz.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||rj(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},Nz.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||rj(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},Nz.prototype.readUInt8=function(e,t){return t||rj(e,1,this.length),this[e]},Nz.prototype.readUInt16LE=function(e,t){return t||rj(e,2,this.length),this[e]|this[e+1]<<8},Nz.prototype.readUInt16BE=function(e,t){return t||rj(e,2,this.length),this[e]<<8|this[e+1]},Nz.prototype.readUInt32LE=function(e,t){return t||rj(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Nz.prototype.readUInt32BE=function(e,t){return t||rj(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Nz.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||rj(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},Nz.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||rj(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},Nz.prototype.readInt8=function(e,t){return t||rj(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Nz.prototype.readInt16LE=function(e,t){t||rj(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Nz.prototype.readInt16BE=function(e,t){t||rj(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Nz.prototype.readInt32LE=function(e,t){return t||rj(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Nz.prototype.readInt32BE=function(e,t){return t||rj(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Nz.prototype.readFloatLE=function(e,t){return t||rj(e,4,this.length),vz(this,e,!0,23,4)},Nz.prototype.readFloatBE=function(e,t){return t||rj(e,4,this.length),vz(this,e,!1,23,4)},Nz.prototype.readDoubleLE=function(e,t){return t||rj(e,8,this.length),vz(this,e,!0,52,8)},Nz.prototype.readDoubleBE=function(e,t){return t||rj(e,8,this.length),vz(this,e,!1,52,8)},Nz.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||ij(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},Nz.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||ij(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},Nz.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,1,255,0),Nz.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Nz.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,2,65535,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):cj(this,e,t,!0),t+2},Nz.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,2,65535,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):cj(this,e,t,!1),t+2},Nz.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,4,4294967295,0),Nz.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):aj(this,e,t,!0),t+4},Nz.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,4,4294967295,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):aj(this,e,t,!1),t+4},Nz.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);ij(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},Nz.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);ij(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},Nz.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,1,127,-128),Nz.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Nz.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,2,32767,-32768),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):cj(this,e,t,!0),t+2},Nz.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,2,32767,-32768),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):cj(this,e,t,!1),t+2},Nz.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,4,2147483647,-2147483648),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):aj(this,e,t,!0),t+4},Nz.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||ij(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):aj(this,e,t,!1),t+4},Nz.prototype.writeFloatLE=function(e,t,n){return lj(this,e,t,!0,n)},Nz.prototype.writeFloatBE=function(e,t,n){return lj(this,e,t,!1,n)},Nz.prototype.writeDoubleLE=function(e,t,n){return uj(this,e,t,!0,n)},Nz.prototype.writeDoubleBE=function(e,t,n){return uj(this,e,t,!1,n)},Nz.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||!Nz.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},Nz.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&&!Nz.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=Az(e)?e:mj(new Nz(e,r).toString()),o=a.length;for(c=0;c<n-t;++c)this[c+t]=a[c%o]}return this};var dj=/[^+\/0-9A-Za-z-_]/g;function sj(e){return e<16?"0"+e.toString(16):e.toString(16)}function mj(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 Zj(e){return function(e){var t,n,r,i,c,a;Vz||fz();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 Gz(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=Xz[e.charCodeAt(t)]<<18|Xz[e.charCodeAt(t+1)]<<12|Xz[e.charCodeAt(t+2)]<<6|Xz[e.charCodeAt(t+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=Xz[e.charCodeAt(t)]<<2|Xz[e.charCodeAt(t+1)]>>4,a[l++]=255&i):1===c&&(i=Xz[e.charCodeAt(t)]<<10|Xz[e.charCodeAt(t+1)]<<4|Xz[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(dj,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function hj(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 bj(e){return null!=e&&(!!e._isBuffer||pj(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&pj(e.slice(0,0))}(e))}function pj(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var Ij=Object.freeze({__proto__:null,Buffer:Nz,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),Nz.alloc(+e)},isBuffer:bj,kMaxLength:Kz}),gj={exports:{}},yj={},Xj={};Object.defineProperty(Xj,"__esModule",{value:!0}),Xj.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,a=Nz.alloc(c);for(a.write(e);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(yj,"__esModule",{value:!0});var Gj=Xj;function Vj(e,t){return void 0===t&&(t="utf8"),Nz.isBuffer(e)?Wj(e.toString("base64")):Wj(Nz.from(e,t).toString("base64"))}function fj(e){return e=e.toString(),Gj.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function Wj(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var Cj,vj=Vj;vj.encode=Vj,vj.decode=function(e,t){return void 0===t&&(t="utf8"),Nz.from(fj(e),"base64").toString(t)},vj.toBase64=fj,vj.fromBase64=Wj,vj.toBuffer=function(e){return Nz.from(fj(e),"base64")},yj.default=vj,(Cj=gj).exports=yj.default,Cj.exports.default=Cj.exports;var Rj=gj.exports,Sj={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}()}(Sj);var Yj=t(Sj.exports),Kj=crypto;function Jj(e){try{return null!=e&&"boolean"==typeof e.extractable&&"string"==typeof e.algorithm.name&&"string"==typeof e.type}catch(e){return!1}}var Lj=new TextEncoder,Nj=new TextDecoder;function Hj(){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 xj=function(e){var t=e;t instanceof Uint8Array&&(t=Nj.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){return new Uint8Array(atob(e).split("").map((function(e){return e.charCodeAt(0)})))}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},kj=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}(),Uj=function(e){m(n,kj);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}(),Fj=function(e){m(n,kj);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}(),Aj=function(e){m(n,kj);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}(),wj=function(e){m(n,kj);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}(),Tj=function(e){m(n,kj);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}(),Bj=function(e){m(n,kj);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}(),zj=function(e){m(n,kj);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}(),jj=function(e){m(n,kj);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}(),Pj=function(e){m(n,kj);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}(),Qj=function(e){m(n,kj);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 Mj(){return"function"==typeof WebSocketPair}function Ej(){try{return void 0!==qT.versions.node}catch(e){return!1}}function Dj(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 Oj(e,t){return e.name===t}function _j(e){return parseInt(e.name.slice(4),10)}function qj(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function $j(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 eP=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},tP=function(e){return Jj(e)},nP=["CryptoKey"],rP=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 iP(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 cP=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 aP(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 wj("".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 wj('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 wj('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 wj('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(Mj()||Ej())&&"OKP":if("EdDSA"!==e.alg)throw new wj('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 Ej()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new wj('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new wj('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var oP=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=aP(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=Kj.subtle).importKey.apply(d,["raw",xj(t.k)].concat(u)));case 4:return delete(s=i({},t)).alg,e.abrupt("return",(n=Kj.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 lP(e,t,n){return uP.apply(this,arguments)}function uP(){return(uP=o(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(iP(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",oP(i(i({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",xj(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new wj('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",oP(i(i({},t),{},{alg:n})));case 17:throw new wj('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var dP=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(!tP(e))throw new TypeError(eP.apply(void 0,[e].concat(V(nP),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(nP.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!tP(e))throw new TypeError(eP.apply(void 0,[e].concat(V(nP))));if("secret"===e.type)throw new TypeError("".concat(nP.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(nP.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(nP.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(nP.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(nP.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function sP(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(V(Object.entries(n)),V(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 wj('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 mP=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 ZP(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(Mj()||Ej())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new wj("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function hP(e,t,n){if(Jj(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!Oj(e.algorithm,"HMAC"))throw Dj("HMAC");var n=parseInt(t.slice(2),10);if(_j(e.algorithm.hash)!==n)throw Dj("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!Oj(e.algorithm,"RSASSA-PKCS1-v1_5"))throw Dj("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(_j(e.algorithm.hash)!==r)throw Dj("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!Oj(e.algorithm,"RSA-PSS"))throw Dj("RSA-PSS");var i=parseInt(t.slice(2),10);if(_j(e.algorithm.hash)!==i)throw Dj("SHA-".concat(i),"algorithm.hash");break;case Ej()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw Dj("NODE-ED25519 or NODE-ED448");break;case Mj()&&"EdDSA":if(!Oj(e.algorithm,"NODE-ED25519"))throw Dj("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!Oj(e.algorithm,"ECDSA"))throw Dj("ECDSA");var c=qj(t);if(e.algorithm.namedCurve!==c)throw Dj(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];$j(e,o)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(eP.apply(void 0,[t].concat(V(nP))));return Kj.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(eP.apply(void 0,[t].concat(V(nP),["Uint8Array"])))}var bP=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,hP(t,n,"verify");case 2:return c=e.sent,cP(t,c),a=ZP(t,c.algorithm),e.prev=5,e.next=8,Kj.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 pP(e,t,n){return IP.apply(this,arguments)}function IP(){return IP=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(iP(t)){e.next=2;break}throw new Tj("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new Tj('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 Tj("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new Tj("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new Tj("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||iP(t.header)){e.next=12;break}throw new Tj("JWS Unprotected Header incorrect type");case 12:if(a={},!t.protected){e.next=22;break}o=xj(t.protected),e.prev=15,a=JSON.parse(Nj.decode(o)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new Tj("JWS Protected Header is invalid");case 22:if(rP(a,t.header)){e.next=24;break}throw new Tj("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=i(i({},a),t.header),u=sP(Tj,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 Tj('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 Tj('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&mP("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new Aj('"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 Tj("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 Tj("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 dP(s,n,"verify"),h=Hj(Lj.encode(null!==(c=t.protected)&&void 0!==c?c:""),Lj.encode("."),"string"==typeof t.payload?Lj.encode(t.payload):t.payload),b=xj(t.signature),e.next=55,bP(s,n,b,h);case 55:if(e.sent){e.next=58;break}throw new Qj;case 58:if(p=d?xj(t.payload):"string"==typeof t.payload?Lj.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]])}))),IP.apply(this,arguments)}function gP(e,t,n){return yP.apply(this,arguments)}function yP(){return yP=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=Nj.decode(t)),"string"==typeof t){e.next=3;break}throw new Tj("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 Tj("Invalid Compact JWS");case 6:return e.next=8,pP({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)}))),yP.apply(this,arguments)}var XP=function(e){return Math.floor(e.getTime()/1e3)},GP=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,VP=function(e){var t=GP.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)}},fP=function(e){return e.toLowerCase().replace(/^application\//,"")},WP=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},CP=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||fP(e.typ)!==fP(i)))throw new Uj('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(Nj.decode(t))}catch(e){}if(!iP(n))throw new Bj("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 Uj('unexpected "iss" claim value',"iss","check_failed");var o=r.subject;if(o&&n.sub!==o)throw new Uj('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!WP(n.aud,"string"==typeof u?[u]:u))throw new Uj('unexpected "aud" claim value',"aud","check_failed");switch(c(r.clockTolerance)){case"string":l=VP(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=XP(d||new Date);if(void 0!==n.iat||r.maxTokenAge){if("number"!=typeof n.iat)throw new Uj('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>s+l)throw new Uj('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new Uj('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new Uj('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new Uj('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new Fj('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,Z="number"==typeof r.maxTokenAge?r.maxTokenAge:VP(r.maxTokenAge);if(m-l>Z)throw new Fj('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new Uj('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function vP(){return vP=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,gP(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 Bj("JWTs MUST NOT use unencoded payload");case 5:if(o=CP(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)}))),vP.apply(this,arguments)}function RP(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 wj('Unsupported "alg" value for a JSON Web Key Set')}}function SP(e){return iP(e)}var YP=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(SP)}(t))throw new zj("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;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=this._jwks.keys.filter((function(e){var t=e.kty===RP(c);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})),l=o[0],0!==(u=o.length)){e.next=7;break}throw new jj;case 7:if(1===u){e.next=9;break}throw new Pj;case 9:if(void 0!==(d=this._cached.get(l)||this._cached.set(l,{}).get(l))[c]){e.next=17;break}return e.next=13,lP(i(i({},l),{},{ext:!0}),c);case 13:if(!((s=e.sent)instanceof Uint8Array||"public"!==s.type)){e.next=16;break}throw new zj("JSON Web Key Set members must be public keys");case 16:d[c]=s;case 17:return e.abrupt("return",d[c]);case 18:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var KP={exports:{}},JP={exports:{}},LP=n(Ij);
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"}(NA||(NA={})),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"}(LA||(LA={}));var AA,FA,BA,zA,jA,QA,MA,PA,EA,DA,OA,_A,qA,$A,eF,tF,nF,rF="Y2hlY2tTZXNzaW9u",iF=function(){function e(t){l(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return d(e,[{key:"refreshAccessTokenAutomatically",value:function(){return sA(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 sA(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(XA,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return sA(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(XA);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(XA);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}(),cF=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(CA,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(CA))&&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(TA.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(TA.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")!==vA}},{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 sA(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}(),oF=(_A=function(e,t,n,r,i,c,o){AA=e,FA=t,BA=n,jA=c,QA=i,OA=o,(zA=r)>-1&&qA(),QA>-1&&(i=setInterval((function(){tF()}),1e3*QA))},qA=function(){return sA(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 sA(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,BA();case 2:r=t.sent,Boolean(AA)&&Boolean(r)&&(i="".concat(AA," ").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,FA));case 4:case"end":return t.stop()}}),t)})))},FA&&AA&&jA){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=FA+"?client_id="+AA+"&redirect_uri="+jA,e.next=9,r();case 9:PA=setInterval(r,1e3*zA),eF();case 11:case"end":return e.stop()}}),e)})))},$A=function(){clearInterval(PA),clearInterval(void 0)},eF=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return sA(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=FA)&&!((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,MA();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&tF();case 13:case"end":return n.stop()}}),n)})))}),!1)},tF=function(){return sA(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"),!cF.canSendPromptNoneRequest()){e.next=10;break}return cF.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)&&(DA(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))},EA!==NA.BrowserMemory&&EA!==NA.WebWorker||null===window||void 0===window||window.addEventListener("message",i),e.next=8,OA({prompt:"none",state:rF});case 8:c=e.sent,r.src=c;case 10:case"end":return e.stop()}}),e)})))},nF=function(e){return sA(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(RA),o=window.parent.parent,null===i||!i.includes(rF)&&!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),cF.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=14,cF.waitTillPageRedirect();case 14:return t.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),EA!==NA.LocalStorage&&EA!==NA.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 cF.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=29,cF.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),cF.setPromptNoneRequestSent(!1),window.location.href="about:blank",t.next=39,cF.waitTillPageRedirect();case 39:return t.abrupt("return",!0);case 40:return cF.setPromptNoneRequestSent(!1),t.next=43,MA();case 43:return o.location.href=t.sent,window.location.href="about:blank",t.next=47,cF.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 sA(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),MA=e,EA=t,DA=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:_A,receivePromptNoneResponse:nF,reset:$A});case 16:case"end":return r.stop()}}),r)})))}),aF={exports:{}},lF=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)}},uF=lF,dF=Object.prototype.toString;function sF(e){return Array.isArray(e)}function mF(e){return void 0===e}function ZF(e){return"[object ArrayBuffer]"===dF.call(e)}function hF(e){return null!==e&&"object"===c(e)}function bF(e){if("[object Object]"!==dF.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function pF(e){return"[object Function]"===dF.call(e)}function IF(e,t){if(null!=e)if("object"!==c(e)&&(e=[e]),sF(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 gF={isArray:sF,isArrayBuffer:ZF,isBuffer:function(e){return null!==e&&!mF(e)&&null!==e.constructor&&!mF(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===dF.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ZF(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:hF,isPlainObject:bF,isUndefined:mF,isDate:function(e){return"[object Date]"===dF.call(e)},isFile:function(e){return"[object File]"===dF.call(e)},isBlob:function(e){return"[object Blob]"===dF.call(e)},isFunction:pF,isStream:function(e){return hF(e)&&pF(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===dF.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:IF,merge:function e(){var t={};function n(n,r){bF(t[r])&&bF(n)?t[r]=e(t[r],n):bF(n)?t[r]=e({},n):sF(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)IF(arguments[r],n);return t},extend:function(e,t,n){return IF(t,(function(t,r){e[r]=n&&"function"==typeof t?uF(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}},yF=gF;function XF(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var GF=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(yF.isURLSearchParams(t))r=t.toString();else{var i=[];yF.forEach(t,(function(e,t){null!=e&&(yF.isArray(e)?t+="[]":e=[e],yF.forEach(e,(function(e){yF.isDate(e)?e=e.toISOString():yF.isObject(e)&&(e=JSON.stringify(e)),i.push(XF(t)+"="+XF(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},VF=gF;function fF(){this.handlers=[]}fF.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},fF.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},fF.prototype.forEach=function(e){VF.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var WF=fF,RF="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function CF(){throw new Error("setTimeout has not been defined")}function vF(){throw new Error("clearTimeout has not been defined")}var SF=CF,YF=vF;function JF(e){if(SF===setTimeout)return setTimeout(e,0);if((SF===CF||!SF)&&setTimeout)return SF=setTimeout,setTimeout(e,0);try{return SF(e,0)}catch(t){try{return SF.call(null,e,0)}catch(t){return SF.call(this,e,0)}}}"function"==typeof RF.setTimeout&&(SF=setTimeout),"function"==typeof RF.clearTimeout&&(YF=clearTimeout);var KF,NF=[],LF=!1,HF=-1;function xF(){LF&&KF&&(LF=!1,KF.length?NF=KF.concat(NF):HF=-1,NF.length&&kF())}function kF(){if(!LF){var e=JF(xF);LF=!0;for(var t=NF.length;t;){for(KF=NF,NF=[];++HF<t;)KF&&KF[HF].run();HF=-1,t=NF.length}KF=null,LF=!1,function(e){if(YF===clearTimeout)return clearTimeout(e);if((YF===vF||!YF)&&clearTimeout)return YF=clearTimeout,clearTimeout(e);try{YF(e)}catch(t){try{return YF.call(null,e)}catch(t){return YF.call(this,e)}}}(e)}}function UF(e,t){this.fun=e,this.array=t}UF.prototype.run=function(){this.fun.apply(null,this.array)};function wF(){}var TF=wF,AF=wF,FF=wF,BF=wF,zF=wF,jF=wF,QF=wF;var MF=RF.performance||{},PF=MF.now||MF.mozNow||MF.msNow||MF.oNow||MF.webkitNow||function(){return(new Date).getTime()};var EF=new Date;var DF={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];NF.push(new UF(e,t)),1!==NF.length||LF||JF(kF)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:TF,addListener:AF,once:FF,off:BF,removeListener:zF,removeAllListeners:jF,emit:QF,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*PF.call(MF),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-EF)/1e3}},OF=DF,_F=gF,qF=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},$F={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},eB=qF,tB=function(e,t,n,r,i){var c=new Error(e);return eB(c,t,n,r,i)},nB=tB,rB=gF,iB=rB.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var o=[];o.push(e+"="+encodeURIComponent(t)),rB.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),rB.isString(r)&&o.push("path="+r),rB.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(){}},cB=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},oB=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},aB=gF,lB=["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"],uB=gF,dB=uB.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=uB.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function sB(e){this.message=e}sB.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},sB.prototype.__CANCEL__=!0;var mB=sB,ZB=gF,hB=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(nB("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},bB=iB,pB=GF,IB=function(e,t){return e&&!cB(t)?oB(e,t):t},gB=function(e){var t,n,r,i={};return e?(aB.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=aB.trim(e.substr(0,r)).toLowerCase(),n=aB.trim(e.substr(r+1)),t){if(i[t]&&lB.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},yB=dB,XB=tB,GB=$F,VB=mB,fB=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)}ZB.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=IB(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?gB(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};hB((function(e){t(e),a()}),(function(e){n(e),a()}),i),l=null}}if(l.open(e.method.toUpperCase(),pB(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(XB("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(XB("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||GB;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(XB(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},ZB.isStandardBrowserEnv()){var Z=(e.withCredentials||yB(s))&&e.xsrfCookieName?bB.read(e.xsrfCookieName):void 0;Z&&(c[e.xsrfHeaderName]=Z)}"setRequestHeader"in l&&ZB.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),ZB.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 VB("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)}))},WB=gF,RB=function(e,t){_F.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},CB=qF,vB={"Content-Type":"application/x-www-form-urlencoded"};function SB(e,t){!WB.isUndefined(e)&&WB.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var YB,JB={transitional:$F,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==OF&&"[object process]"===Object.prototype.toString.call(OF))&&(YB=fB),YB),transformRequest:[function(e,t){return RB(t,"Accept"),RB(t,"Content-Type"),WB.isFormData(e)||WB.isArrayBuffer(e)||WB.isBuffer(e)||WB.isStream(e)||WB.isFile(e)||WB.isBlob(e)?e:WB.isArrayBufferView(e)?e.buffer:WB.isURLSearchParams(e)?(SB(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):WB.isObject(e)||t&&"application/json"===t["Content-Type"]?(SB(t,"application/json"),function(e,t,n){if(WB.isString(e))try{return(t||JSON.parse)(e),WB.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||JB.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&WB.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw CB(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, */*"}}};WB.forEach(["delete","get","head"],(function(e){JB.headers[e]={}})),WB.forEach(["post","put","patch"],(function(e){JB.headers[e]=WB.merge(vB)}));var KB=JB,NB=gF,LB=KB,HB=function(e){return!(!e||!e.__CANCEL__)},xB=gF,kB=function(e,t,n){var r=this||LB;return NB.forEach(n,(function(n){e=n.call(r,e,t)})),e},UB=HB,wB=KB,TB=mB;function AB(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new TB("canceled")}var FB=gF,BB=function(e,t){t=t||{};var n={};function r(e,t){return FB.isPlainObject(e)&&FB.isPlainObject(t)?FB.merge(e,t):FB.isPlainObject(t)?FB.merge({},t):FB.isArray(t)?t.slice():t}function i(n){return FB.isUndefined(t[n])?FB.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!FB.isUndefined(t[e]))return r(void 0,t[e])}function o(n){return FB.isUndefined(t[n])?FB.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 FB.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);FB.isUndefined(r)&&t!==a||(n[e]=r)})),n},zB="0.26.1",jB=zB,QB={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){QB[e]=function(n){return c(n)===e||"a"+(t<1?"n ":" ")+e}}));var MB={};QB.transitional=function(e,t,n){function r(e,t){return"[Axios v"+jB+"] 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&&!MB[i]&&(MB[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 PB={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:QB},EB=gF,DB=GF,OB=WF,_B=function(e){return AB(e),e.headers=e.headers||{},e.data=kB.call(e,e.data,e.headers,e.transformRequest),e.headers=xB.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),xB.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||wB.adapter)(e).then((function(t){return AB(e),t.data=kB.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return UB(t)||(AB(e),t&&t.response&&(t.response.data=kB.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},qB=BB,$B=PB,ez=$B.validators;function tz(e){this.defaults=e,this.interceptors={request:new OB,response:new OB}}tz.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=qB(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&&$B.assertOptions(n,{silentJSONParsing:ez.transitional(ez.boolean),forcedJSONParsing:ez.transitional(ez.boolean),clarifyTimeoutError:ez.transitional(ez.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=[_B,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=_B(l)}catch(e){return Promise.reject(e)}for(;o.length;)c=c.then(o.shift(),o.shift());return c},tz.prototype.getUri=function(e){return e=qB(this.defaults,e),DB(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},EB.forEach(["delete","get","head","options"],(function(e){tz.prototype[e]=function(t,n){return this.request(qB(n||{},{method:e,url:t,data:(n||{}).data}))}})),EB.forEach(["post","put","patch"],(function(e){tz.prototype[e]=function(t,n,r){return this.request(qB(r||{},{method:e,url:t,data:n}))}}));var nz=tz,rz=mB;function iz(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 rz(e),t(n.reason))}))}iz.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},iz.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},iz.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},iz.source=function(){var e,t=new iz((function(t){e=t}));return{token:t,cancel:e}};var cz=iz,oz=gF,az=gF,lz=lF,uz=nz,dz=BB;var sz=function e(t){var n=new uz(t),r=lz(uz.prototype.request,n);return az.extend(r,uz.prototype,n),az.extend(r,n),r.create=function(n){return e(dz(t,n))},r}(KB);sz.Axios=uz,sz.Cancel=mB,sz.CancelToken=cz,sz.isCancel=HB,sz.VERSION=zB,sz.all=function(e){return Promise.all(e)},sz.spread=function(e){return function(t){return e.apply(null,t)}},sz.isAxiosError=function(e){return oz.isObject(e)&&!0===e.isAxiosError},aF.exports=sz,aF.exports.default=sz;var mz,Zz=aF.exports;var hz=mz=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 sA(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),mz.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 mz.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 mz.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 sA(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:mz.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){mz.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){mz.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:mz.DEFAULT_HANDLER_DISABLE_TIMEOUT;mz.isHandlerEnabled=!1,setTimeout((function(){mz.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=Zz.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new mz),this.axiosInstance.interceptors.request.use((function(t){return sA(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=Zz.all,this.axiosInstance.spread=Zz.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}();hz.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,hz=mz=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){}],hz);var bz=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return sA(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 sA(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 sA(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}(),pz=function(){function e(){l(this,e),this._data=new Map}return d(e,[{key:"setData",value:function(e,t){return sA(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 sA(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 sA(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}(),Iz=function(){function e(){l(this,e)}return d(e,[{key:"setData",value:function(e,t){return sA(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 sA(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 sA(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}(),gz=[],yz=[],Xz="undefined"!=typeof Uint8Array?Uint8Array:Array,Gz=!1;function Vz(){Gz=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)gz[t]=e[t],yz[e.charCodeAt(t)]=t;yz["-".charCodeAt(0)]=62,yz["_".charCodeAt(0)]=63}function fz(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(gz[(i=r)>>18&63]+gz[i>>12&63]+gz[i>>6&63]+gz[63&i]);return c.join("")}function Wz(e){var t;Gz||Vz();for(var n=e.length,r=n%3,i="",c=[],o=16383,a=0,l=n-r;a<l;a+=o)c.push(fz(e,a,a+o>l?l:a+o));return 1===r?(t=e[n-1],i+=gz[t>>2],i+=gz[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=gz[t>>10],i+=gz[t>>4&63],i+=gz[t<<2&63],i+="="),c.push(i),c.join("")}function Rz(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 Cz(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 vz={}.toString,Sz=Array.isArray||function(e){return"[object Array]"==vz.call(e)};Nz.TYPED_ARRAY_SUPPORT=void 0===RF.TYPED_ARRAY_SUPPORT||RF.TYPED_ARRAY_SUPPORT;var Yz=Jz();function Jz(){return Nz.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Kz(e,t){if(Jz()<t)throw new RangeError("Invalid typed array length");return Nz.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Nz.prototype:(null===e&&(e=new Nz(t)),e.length=t),e}function Nz(e,t,n){if(!(Nz.TYPED_ARRAY_SUPPORT||this instanceof Nz))return new Nz(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 xz(this,e)}return Lz(this,e,t,n)}function Lz(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);Nz.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Nz.prototype:e=kz(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!Nz.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|Tz(t,n),i=(e=Kz(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(wz(t)){var n=0|Uz(t.length);return 0===(e=Kz(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?Kz(e,0):kz(e,t);if("Buffer"===t.type&&Sz(t.data))return kz(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Hz(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 xz(e,t){if(Hz(t),e=Kz(e,t<0?0:0|Uz(t)),!Nz.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function kz(e,t){var n=t.length<0?0:0|Uz(t.length);e=Kz(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function Uz(e){if(e>=Jz())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Jz().toString(16)+" bytes");return 0|e}function wz(e){return!(null==e||!e._isBuffer)}function Tz(e,t){if(wz(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 sj(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return mj(e).length;default:if(r)return sj(e).length;t=(""+t).toLowerCase(),r=!0}}function Az(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 ej(this,t,n);case"utf8":case"utf-8":return _z(this,t,n);case"ascii":return qz(this,t,n);case"latin1":case"binary":return $z(this,t,n);case"base64":return Oz(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return tj(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Fz(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function Bz(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=Nz.from(t,r)),wz(t))return 0===t.length?-1:zz(e,t,n,r,i);if("number"==typeof t)return t&=255,Nz.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):zz(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function zz(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 jz(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 Qz(e,t,n,r){return Zj(sj(t,e.length-n),e,n,r)}function Mz(e,t,n,r){return Zj(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function Pz(e,t,n,r){return Mz(e,t,n,r)}function Ez(e,t,n,r){return Zj(mj(t),e,n,r)}function Dz(e,t,n,r){return Zj(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 Oz(e,t,n){return 0===t&&n===e.length?Wz(e):Wz(e.slice(t,n))}function _z(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)}Nz.poolSize=8192,Nz._augment=function(e){return e.__proto__=Nz.prototype,e},Nz.from=function(e,t,n){return Lz(null,e,t,n)},Nz.TYPED_ARRAY_SUPPORT&&(Nz.prototype.__proto__=Uint8Array.prototype,Nz.__proto__=Uint8Array),Nz.alloc=function(e,t,n){return function(e,t,n,r){return Hz(t),t<=0?Kz(e,t):void 0!==n?"string"==typeof r?Kz(e,t).fill(n,r):Kz(e,t).fill(n):Kz(e,t)}(null,e,t,n)},Nz.allocUnsafe=function(e){return xz(null,e)},Nz.allocUnsafeSlow=function(e){return xz(null,e)},Nz.isBuffer=hj,Nz.compare=function(e,t){if(!wz(e)||!wz(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},Nz.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}},Nz.concat=function(e,t){if(!Sz(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Nz.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=Nz.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!wz(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},Nz.byteLength=Tz,Nz.prototype._isBuffer=!0,Nz.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)Fz(this,t,t+1);return this},Nz.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)Fz(this,t,t+3),Fz(this,t+1,t+2);return this},Nz.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)Fz(this,t,t+7),Fz(this,t+1,t+6),Fz(this,t+2,t+5),Fz(this,t+3,t+4);return this},Nz.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?_z(this,0,e):Az.apply(this,arguments)},Nz.prototype.equals=function(e){if(!wz(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Nz.compare(this,e)},Nz.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+">"},Nz.prototype.compare=function(e,t,n,r,i){if(!wz(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},Nz.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},Nz.prototype.indexOf=function(e,t,n){return Bz(this,e,t,n,!0)},Nz.prototype.lastIndexOf=function(e,t,n){return Bz(this,e,t,n,!1)},Nz.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 jz(this,e,t,n);case"utf8":case"utf-8":return Qz(this,e,t,n);case"ascii":return Mz(this,e,t,n);case"latin1":case"binary":return Pz(this,e,t,n);case"base64":return Ez(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Dz(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},Nz.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function qz(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 $z(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 ej(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+=dj(e[c]);return i}function tj(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 nj(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 rj(e,t,n,r,i,c){if(!wz(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 ij(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 cj(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 aj(e,t,n,r,i){return i||oj(e,0,n,4),Cz(e,t,n,r,23,4),n+4}function lj(e,t,n,r,i){return i||oj(e,0,n,8),Cz(e,t,n,r,52,8),n+8}Nz.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),Nz.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=Nz.prototype;else{var i=t-e;n=new Nz(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},Nz.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||nj(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},Nz.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||nj(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},Nz.prototype.readUInt8=function(e,t){return t||nj(e,1,this.length),this[e]},Nz.prototype.readUInt16LE=function(e,t){return t||nj(e,2,this.length),this[e]|this[e+1]<<8},Nz.prototype.readUInt16BE=function(e,t){return t||nj(e,2,this.length),this[e]<<8|this[e+1]},Nz.prototype.readUInt32LE=function(e,t){return t||nj(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Nz.prototype.readUInt32BE=function(e,t){return t||nj(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Nz.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||nj(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},Nz.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||nj(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},Nz.prototype.readInt8=function(e,t){return t||nj(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Nz.prototype.readInt16LE=function(e,t){t||nj(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},Nz.prototype.readInt16BE=function(e,t){t||nj(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},Nz.prototype.readInt32LE=function(e,t){return t||nj(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Nz.prototype.readInt32BE=function(e,t){return t||nj(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Nz.prototype.readFloatLE=function(e,t){return t||nj(e,4,this.length),Rz(this,e,!0,23,4)},Nz.prototype.readFloatBE=function(e,t){return t||nj(e,4,this.length),Rz(this,e,!1,23,4)},Nz.prototype.readDoubleLE=function(e,t){return t||nj(e,8,this.length),Rz(this,e,!0,52,8)},Nz.prototype.readDoubleBE=function(e,t){return t||nj(e,8,this.length),Rz(this,e,!1,52,8)},Nz.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||rj(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},Nz.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||rj(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},Nz.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,1,255,0),Nz.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Nz.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,2,65535,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):ij(this,e,t,!0),t+2},Nz.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,2,65535,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):ij(this,e,t,!1),t+2},Nz.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,4,4294967295,0),Nz.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):cj(this,e,t,!0),t+4},Nz.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,4,4294967295,0),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):cj(this,e,t,!1),t+4},Nz.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);rj(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},Nz.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);rj(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},Nz.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,1,127,-128),Nz.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Nz.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,2,32767,-32768),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):ij(this,e,t,!0),t+2},Nz.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,2,32767,-32768),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):ij(this,e,t,!1),t+2},Nz.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,4,2147483647,-2147483648),Nz.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):cj(this,e,t,!0),t+4},Nz.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||rj(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Nz.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):cj(this,e,t,!1),t+4},Nz.prototype.writeFloatLE=function(e,t,n){return aj(this,e,t,!0,n)},Nz.prototype.writeFloatBE=function(e,t,n){return aj(this,e,t,!1,n)},Nz.prototype.writeDoubleLE=function(e,t,n){return lj(this,e,t,!0,n)},Nz.prototype.writeDoubleBE=function(e,t,n){return lj(this,e,t,!1,n)},Nz.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||!Nz.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},Nz.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&&!Nz.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=wz(e)?e:sj(new Nz(e,r).toString()),a=o.length;for(c=0;c<n-t;++c)this[c+t]=o[c%a]}return this};var uj=/[^+\/0-9A-Za-z-_]/g;function dj(e){return e<16?"0"+e.toString(16):e.toString(16)}function sj(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 mj(e){return function(e){var t,n,r,i,c,o;Gz||Vz();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 Xz(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=yz[e.charCodeAt(t)]<<18|yz[e.charCodeAt(t+1)]<<12|yz[e.charCodeAt(t+2)]<<6|yz[e.charCodeAt(t+3)],o[l++]=i>>16&255,o[l++]=i>>8&255,o[l++]=255&i;return 2===c?(i=yz[e.charCodeAt(t)]<<2|yz[e.charCodeAt(t+1)]>>4,o[l++]=255&i):1===c&&(i=yz[e.charCodeAt(t)]<<10|yz[e.charCodeAt(t+1)]<<4|yz[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(uj,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Zj(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 hj(e){return null!=e&&(!!e._isBuffer||bj(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&bj(e.slice(0,0))}(e))}function bj(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var pj=Object.freeze({__proto__:null,Buffer:Nz,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),Nz.alloc(+e)},isBuffer:hj,kMaxLength:Yz}),Ij={exports:{}},gj={},yj={};Object.defineProperty(yj,"__esModule",{value:!0}),yj.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,o=Nz.alloc(c);for(o.write(e);i--;)o.write("=",r++);return o.toString()},Object.defineProperty(gj,"__esModule",{value:!0});var Xj=yj;function Gj(e,t){return void 0===t&&(t="utf8"),Nz.isBuffer(e)?fj(e.toString("base64")):fj(Nz.from(e,t).toString("base64"))}function Vj(e){return e=e.toString(),Xj.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function fj(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var Wj,Rj=Gj;Rj.encode=Gj,Rj.decode=function(e,t){return void 0===t&&(t="utf8"),Nz.from(Vj(e),"base64").toString(t)},Rj.toBase64=Vj,Rj.fromBase64=fj,Rj.toBuffer=function(e){return Nz.from(Vj(e),"base64")},gj.default=Rj,(Wj=Ij).exports=gj.default,Wj.exports.default=Wj.exports;var Cj=Ij.exports,vj={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}()}(vj);var Sj=t(vj.exports),Yj=crypto;function Jj(e){try{return null!=e&&"boolean"==typeof e.extractable&&"string"==typeof e.algorithm.name&&"string"==typeof e.type}catch(e){return!1}}var Kj=new TextEncoder,Nj=new TextDecoder;function Lj(){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 Hj=function(e){var t=e;t instanceof Uint8Array&&(t=Nj.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){return new Uint8Array(atob(e).split("").map((function(e){return e.charCodeAt(0)})))}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},xj=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}(),kj=function(e){m(n,xj);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}(),Uj=function(e){m(n,xj);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}(),wj=function(e){m(n,xj);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}(),Tj=function(e){m(n,xj);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}(),Aj=function(e){m(n,xj);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}(),Fj=function(e){m(n,xj);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}(),Bj=function(e){m(n,xj);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}(),zj=function(e){m(n,xj);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}(),jj=function(e){m(n,xj);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}(),Qj=function(e){m(n,xj);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 Mj(){return"function"==typeof WebSocketPair}function Pj(){try{return void 0!==OF.versions.node}catch(e){return!1}}function Ej(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 Dj(e,t){return e.name===t}function Oj(e){return parseInt(e.name.slice(4),10)}function _j(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function qj(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 $j=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},eQ=function(e){return Jj(e)},tQ=["CryptoKey"],nQ=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=R(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 rQ(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 iQ=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 cQ(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 Tj("".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 Tj('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 Tj('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 Tj('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(Mj()||Pj())&&"OKP":if("EdDSA"!==e.alg)throw new Tj('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 Pj()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new Tj('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new Tj('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var oQ=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=cQ(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=Yj.subtle).importKey.apply(d,["raw",Hj(t.k)].concat(u)));case 4:return delete(s=i({},t)).alg,e.abrupt("return",(n=Yj.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 aQ(e,t,n){return lQ.apply(this,arguments)}function lQ(){return(lQ=a(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(rQ(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",oQ(i(i({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",Hj(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new Tj('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",oQ(i(i({},t),{},{alg:n})));case 17:throw new Tj('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var uQ=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(!eQ(e))throw new TypeError($j.apply(void 0,[e].concat(V(tQ),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!eQ(e))throw new TypeError($j.apply(void 0,[e].concat(V(tQ))));if("secret"===e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(tQ.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function dQ(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(V(Object.entries(n)),V(t.entries()))):t;var o,a=R(r.crit);try{for(a.s();!(o=a.n()).done;){var l=o.value;if(!c.has(l))throw new Tj('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 sQ=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 mQ(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(Mj()||Pj())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new Tj("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function ZQ(e,t,n){if(Jj(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!Dj(e.algorithm,"HMAC"))throw Ej("HMAC");var n=parseInt(t.slice(2),10);if(Oj(e.algorithm.hash)!==n)throw Ej("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!Dj(e.algorithm,"RSASSA-PKCS1-v1_5"))throw Ej("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(Oj(e.algorithm.hash)!==r)throw Ej("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!Dj(e.algorithm,"RSA-PSS"))throw Ej("RSA-PSS");var i=parseInt(t.slice(2),10);if(Oj(e.algorithm.hash)!==i)throw Ej("SHA-".concat(i),"algorithm.hash");break;case Pj()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw Ej("NODE-ED25519 or NODE-ED448");break;case Mj()&&"EdDSA":if(!Dj(e.algorithm,"NODE-ED25519"))throw Ej("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!Dj(e.algorithm,"ECDSA"))throw Ej("ECDSA");var c=_j(t);if(e.algorithm.namedCurve!==c)throw Ej(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];qj(e,a)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError($j.apply(void 0,[t].concat(V(tQ))));return Yj.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError($j.apply(void 0,[t].concat(V(tQ),["Uint8Array"])))}var hQ=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,ZQ(t,n,"verify");case 2:return c=e.sent,iQ(t,c),o=mQ(t,c.algorithm),e.prev=5,e.next=8,Yj.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 bQ(e,t,n){return pQ.apply(this,arguments)}function pQ(){return pQ=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(rQ(t)){e.next=2;break}throw new Aj("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new Aj('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 Aj("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new Aj("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new Aj("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||rQ(t.header)){e.next=12;break}throw new Aj("JWS Unprotected Header incorrect type");case 12:if(o={},!t.protected){e.next=22;break}a=Hj(t.protected),e.prev=15,o=JSON.parse(Nj.decode(a)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new Aj("JWS Protected Header is invalid");case 22:if(nQ(o,t.header)){e.next=24;break}throw new Aj("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=i(i({},o),t.header),u=dQ(Aj,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 Aj('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 Aj('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&sQ("algorithms",r.algorithms))||m.has(s)){e.next=37;break}throw new wj('"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 Aj("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 Aj("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 uQ(s,n,"verify"),h=Lj(Kj.encode(null!==(c=t.protected)&&void 0!==c?c:""),Kj.encode("."),"string"==typeof t.payload?Kj.encode(t.payload):t.payload),b=Hj(t.signature),e.next=55,hQ(s,n,b,h);case 55:if(e.sent){e.next=58;break}throw new Qj;case 58:if(p=d?Hj(t.payload):"string"==typeof t.payload?Kj.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]])}))),pQ.apply(this,arguments)}function IQ(e,t,n){return gQ.apply(this,arguments)}function gQ(){return gQ=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=Nj.decode(t)),"string"==typeof t){e.next=3;break}throw new Aj("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 Aj("Invalid Compact JWS");case 6:return e.next=8,bQ({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)}))),gQ.apply(this,arguments)}var yQ=function(e){return Math.floor(e.getTime()/1e3)},XQ=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,GQ=function(e){var t=XQ.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)}},VQ=function(e){return e.toLowerCase().replace(/^application\//,"")},fQ=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},WQ=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||VQ(e.typ)!==VQ(i)))throw new kj('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(Nj.decode(t))}catch(e){}if(!rQ(n))throw new Fj("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 kj('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new kj('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!fQ(n.aud,"string"==typeof u?[u]:u))throw new kj('unexpected "aud" claim value',"aud","check_failed");switch(c(r.clockTolerance)){case"string":l=GQ(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=yQ(d||new Date);if(void 0!==n.iat||r.maxTokenAge){if("number"!=typeof n.iat)throw new kj('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>s+l)throw new kj('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new kj('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>s+l)throw new kj('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new kj('"exp" claim must be a number',"exp","invalid");if(n.exp<=s-l)throw new Uj('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=s-n.iat,Z="number"==typeof r.maxTokenAge?r.maxTokenAge:GQ(r.maxTokenAge);if(m-l>Z)throw new Uj('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new kj('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function RQ(){return RQ=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,IQ(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 Fj("JWTs MUST NOT use unencoded payload");case 5:if(a=WQ(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)}))),RQ.apply(this,arguments)}function CQ(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 Tj('Unsupported "alg" value for a JSON Web Key Set')}}function vQ(e){return rQ(e)}var SQ=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(vQ)}(t))throw new Bj("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;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=this._jwks.keys.filter((function(e){var t=e.kty===CQ(c);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})),l=a[0],0!==(u=a.length)){e.next=7;break}throw new zj;case 7:if(1===u){e.next=9;break}throw new jj;case 9:if(void 0!==(d=this._cached.get(l)||this._cached.set(l,{}).get(l))[c]){e.next=17;break}return e.next=13,aQ(i(i({},l),{},{ext:!0}),c);case 13:if(!((s=e.sent)instanceof Uint8Array||"public"!==s.type)){e.next=16;break}throw new Bj("JSON Web Key Set members must be public keys");case 16:d[c]=s;case 17:return e.abrupt("return",d[c]);case 18:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var YQ={exports:{}},JQ={exports:{}},KQ=n(pj);
450
450
  /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
451
- !function(e,t){var n=LP,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)}}(JP,JP.exports);var NP=JP.exports.Buffer,HP=e.crypto||e.msCrypto;HP&&HP.getRandomValues?KP.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var n=NP.allocUnsafe(e);if(e>0)if(e>65536)for(var r=0;r<e;r+=65536)HP.getRandomValues(n.slice(r,r+65536));else HP.getRandomValues(n);if("function"==typeof t)return qT.nextTick((function(){t(null,n)}));return n}:KP.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var xP=KP.exports,kP=function(){function e(){l(this,e)}return d(e,[{key:"base64URLEncode",value:function(e){return Rj.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return Rj.decode(e).toString()}},{key:"hashSha256",value:function(e){return Nz.from(Yj((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return xP(e)}},{key:"parseJwk",value:function(e){return Promise.resolve((t={keys:[e]},YP.prototype.getKey.bind(new YP(t))));var t}},{key:"verifyJwt",value:function(e,t,n,r,i,c,a){return function(e,t,n){return vP.apply(this,arguments)}(e,t,{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}))}}]),e}(),UP=function(e){switch(e){case Nw.LocalStorage:return new pz;case Nw.SessionStorage:return new gz;case Nw.BrowserMemory:return new Iz;default:return new gz}},FP=function(e){return sw(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,G,f,W,v,R,S,Y,K,J,L,N,H,x,k,U,F,A,w,T;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=UP(e.storage),i=new kP,c=new ww(r,i),t.next=5,c.initialize(e);case 5:return a=new aT(c),o=c.getDataLayer(),t.next=9,lT((function(){return sw(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:Nw.SessionStorage,(function(e){return o.setSessionDataParameter(Cw,null!=e?e:"")}));case 9:if(l=t.sent,u=!1,d=bz.getInstance(),s=!0,h=function(e){return sw(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 sw(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=V,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=[null==c?void 0:c.serverOrigin],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 sw(void 0,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: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,K();case 4:i=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:return n.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-HR-ES01","main-thread-client","httpRequest","","",n.t0)));case 15:if(!i){n.next=31;break}return n.prev=16,n.next=19,d.request(e);case 19:return c=n.sent,n.abrupt("return",Promise.resolve(c));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:return t.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-HR-IV02","main-thread-client","httpRequest","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 sw(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=V,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=[null==l?void 0:l.serverOrigin],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 sw(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: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:r=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:return t.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-HRA-ES01","main-thread-client","httpRequestAll","","",t.t0)));case 15:if(!r){t.next=17;break}return t.abrupt("return",d.all&&d.all(X).then((function(e){return Promise.resolve(e)})).catch((function(e){return sw(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:return t.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-HRA-IV02","main-thread-client","httpRequest","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},f=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 sw(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 sw(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 sw(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 sw(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 sw(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(Cw,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)===uw.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(u=new URL(window.location.href).searchParams.get(Ww))&&void 0!==u?u:"",h=null!==(d=new URL(window.location.href).searchParams.get(Cw))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(Sw))&&void 0!==s?s:"",oT.removeAuthorizationCode()),!Z){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}return(g=new URL(window.location.href)).searchParams.delete("error"),g.searchParams.delete("error_description"),history.pushState(null,document.title,g.toString()),i.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-SI-BE","main-thread-client","signIn",p,null!=I?I:"")));case 30:return i.abrupt("return",c.getAuthorizationURL(e).then((function(e){return sw(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!==Nw.BrowserMemory||!m.enablePKCE){t.next=8;break}return n=Lw.extractPKCEKeyFromStateParam(b),t.t0=oT,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,oT.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 sw(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=oT.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,oT.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},Y=function(e){return sw(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,l,d,s,m,Z,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return l=!0,d=!1,t.next=4,o.getConfigData();case 4:if(s=t.sent,!(null==e?void 0:e.tokenEndpoint)){t.next=42;break}return l=!1,m=0,t.t0=[],t.t1=V,t.next=12,o.getConfigData();case 12:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=16;break}t.t3=void 0===n;case 16:if(!t.t3){t.next=20;break}t.t5=void 0,t.next=21;break;case 20:t.t5=n.resourceServerURLs;case 21:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=25;break}t.t2=void 0!==r;case 25:if(!t.t2){t.next=29;break}t.t7=r,t.next=30;break;case 29:t.t7=[];case 30:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[null==s?void 0:s.serverOrigin],Z=t.t0.concat.call(t.t0,t.t9,t.t10);case 34:if(!(m<Z.length)){t.next=42;break}if(h=Z[m],!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(h))){t.next=39;break}return d=!0,t.abrupt("break",42);case 39:m++,t.next=34;break;case 42:if(e.shouldReplayAfterRefresh&&o.setTemporaryDataParameter("custom_grant_config",JSON.stringify(e)),!l&&!d){t.next=47;break}return t.abrupt("return",c.requestCustomGrant(e).then((function(t){return sw(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 47:return t.abrupt("return",Promise.reject(new cT("MAIN_THREAD_CLIENT-RCG-IV01","main-thread-client","requestCustomGrant","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 48:case"end":return t.stop()}}),t)})))},K=function(){return sw(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]])})))},J=function(){return c.revokeAccessToken().then((function(){return l.reset(),a.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},L=function(e,t,n){return sw(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!==Nw.BrowserMemory||!i.enablePKCE){r.next=7;break}return l=oT.getPKCE(Lw.extractPKCEKeyFromStateParam(n)),r.next=7,c.setPKCECode(Lw.extractPKCEKeyFromStateParam(n),l);case 7:return r.abrupt("return",c.requestAccessToken(e,t,n).then((function(){return sw(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=oT,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)})))},N=function(){return sw(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,!oT.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!==Nw.BrowserMemory||!n.enablePKCE){e.next=24;break}return s=u.searchParams.get(Sw),e.t0=oT,e.t1=Lw.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 sw(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)&&L(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 sw(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 sw(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 sw(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 sw(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)})))},F=function(){return sw(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)})))},A=function(){return sw(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)})))},w=function(e){return sw(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 sw(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:f,getAccessToken:F,getBasicUserInfo:H,getDecodedIDToken:x,getHttpClient:G,getIDToken:k,getOIDCServiceEndpoints:U,httpRequest:y,httpRequestAll:X,isAuthenticated:A,refreshAccessToken:K,requestCustomGrant:Y,revokeAccessToken:J,setHttpRequestErrorCallback:g,setHttpRequestFinishCallback:I,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:p,signIn:R,signOut:S,trySignInSilently:N,updateConfig:w});case 44:case"end":return t.stop()}}),t)})))};function AP(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 wP,TP,BP,zP,jP=(wP="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24obyxhLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24obyxhLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxpKXtmdW5jdGlvbiBvKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBULEE9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFR8fChUPXt9KSk7dmFyIFA9ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlLG4sYSxvLHMsdSl7dmFyIGM7cmV0dXJuIGkodGhpcyxyKSwoYz10LmNhbGwodGhpcyxudWxsIT1vP286bnVsbD09dT92b2lkIDA6dS5tZXNzYWdlKSkubmFtZT1jLmNvbnN0cnVjdG9yLm5hbWUsYy5jb2RlPWUsYy5maWxlPW4sYy5tZXRob2Q9YSxjLmRlc2NyaXB0aW9uPXMsYy5lcnJvcj11LE9iamVjdC5zZXRQcm90b3R5cGVPZih2KGMpLCh0aGlzIGluc3RhbmNlb2Ygcj90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKSxjfXJldHVybiBzKHIpfShkKEVycm9yKSksTz1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUsbixhLG8scyx1LGMsZixsKXt2YXIgaDtyZXR1cm4gaSh0aGlzLHIpLChoPXQuY2FsbCh0aGlzLGUsbixhLG8scykpLm5hbWU9aC5jb25zdHJ1Y3Rvci5uYW1lLGguY29kZT1lLGguZmlsZT1uLGgubWV0aG9kPWEsaC5kZXNjcmlwdGlvbj1zLGgubmV0d29ya0Vycm9yQ29kZT11LGgubmV0d29ya0Vycm9yTWVzc2FnZT1jLGguc3RhdHVzPWYsaC5uZXR3b3JrRXJyb3JEYXRhPWwsaH1yZXR1cm4gcyhyKX0oUCksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJmaWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30sZSk7bnVsbD09dHx8ZGVsZXRlIHQuaXNzLG51bGw9PXR8fGRlbGV0ZSB0LmF1ZCxudWxsPT10fHxkZWxldGUgdC5leHAsbnVsbD09dHx8ZGVsZXRlIHQuaWF0LG51bGw9PXR8fGRlbGV0ZSB0LmFjcixudWxsPT10fHxkZWxldGUgdC5hbXIsbnVsbD09dHx8ZGVsZXRlIHQuYXpwLG51bGw9PXR8fGRlbGV0ZSB0LmF1dGhfdGltZSxudWxsPT10fHxkZWxldGUgdC5ub25jZSxudWxsPT10fHxkZWxldGUgdC5jX2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQuYXRfaGFzaCxudWxsPT10fHxkZWxldGUgdC5uYmYsbnVsbD09dHx8ZGVsZXRlIHQuaXNrLG51bGw9PXR8fGRlbGV0ZSB0LnNpZDt2YXIgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9eShlLDIpLG49dFswXSxhPXRbMV0saT1uLnNwbGl0KCJfIikubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dD9lOltlWzBdLnRvVXBwZXJDYXNlKCldLmNvbmNhdChiKGUuc2xpY2UoMSkpKS5qb2luKCIiKX0pKS5qb2luKCIiKTtyW2ldPWF9KSkscn19LHtrZXk6ImdldFRva2VuUmVxdWVzdEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9fX0se2tleToiZ2VuZXJhdGVTdGF0ZVBhcmFtRm9yUmVxdWVzdENvcnJlbGF0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXBhcnNlSW50KGUuc3BsaXQoIiMiKVsxXSk7cmV0dXJuIHQ/IiIuY29uY2F0KHQsIl9yZXF1ZXN0XyIpLmNvbmNhdChyKToicmVxdWVzdF8iLmNvbmNhdChyKX19LHtrZXk6ImV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiJwa2NlX2NvZGVfdmVyaWZpZXIjIi5jb25jYXQocGFyc2VJbnQoZS5zcGxpdCgicmVxdWVzdF8iKVsxXSkpfX1dKSxlfSgpO0QuZ2V0VGVuYW50RG9tYWluRnJvbUlkVG9rZW5QYXlsb2FkPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiQCIscj1lLnN1Yi5zcGxpdCh0KTtyZXR1cm4gci5sZW5ndGg+Mj9yW3IubGVuZ3RoLTFdOiIifTt2YXIgSSxVLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dmFyIG49dGhpcztpKHRoaXMsZSksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9jcnlwdG9IZWxwZXI9cn1yZXR1cm4gcyhlLFt7a2V5OiJyZXNvbHZlV2VsbEtub3duRW5kcG9pbnQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix0LndlbGxLbm93bkVuZHBvaW50P3Quc2VydmVyT3JpZ2luK3Qud2VsbEtub3duRW5kcG9pbnQ6dC5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvdG9rZW4vLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24iKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChuLm92ZXJyaWRlV2VsbEVuZHBvaW50Q29uZmlnJiZuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JbdF09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkscikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVGYWxsYmFja0VuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD17fSxlLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuKHI9ZS5zZW50KS5lbmRwb2ludHMmJk9iamVjdC5rZXlzKHIuZW5kcG9pbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTt0W25dPShudWxsPT1yP3ZvaWQgMDpyLmVuZHBvaW50cyk/ci5lbmRwb2ludHNbZV06IiJ9KSksbj17YXV0aG9yaXphdGlvbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29hdXRoMi9hdXRob3JpemUiLGVuZF9zZXNzaW9uX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2lkYy9sb2dvdXQiLGp3a3NfdXJpOnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL2p3a3MiLGNoZWNrX3Nlc3Npb25faWZyYW1lOnIuc2VydmVyT3JpZ2luKyIvb2lkYy9jaGVja3Nlc3Npb24iLHJldm9jYXRpb25fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvcmV2b2tlIix0b2tlbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29hdXRoMi90b2tlbiJ9LGUuYWJydXB0KCJyZXR1cm4iLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxuKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiYwIT09ci50cmltKCkubGVuZ3RoP2ZldGNoKHIse2NyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW59KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4geChhLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLGksbz10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoMjAwPT09dC5zdGF0dXMpe3IubmV4dD0yO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItVklULU5SMDIiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJ2YWxpZGF0ZUlkVG9rZW4iLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgandrcyByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIHJldHVybmVkICIrdC5zdGF0dXMrIiAsIHdoaWNoIGlzIGludmFsaWQuIikpKTtjYXNlIDI6cmV0dXJuIHIubmV4dD00LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSA0OnJldHVybiBuPXIuc2VudC5pc3N1ZXIsci5uZXh0PTcsdGhpcy5yZXNvbHZlV2VsbEtub3duRW5kcG9pbnQoKTtjYXNlIDc6aWYoYT1yLnNlbnQuc3BsaXQoIi8ud2VsbC1rbm93biIpWzBdLG4mJm49PT1hKXtyLm5leHQ9MTA7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMSkpO2Nhc2UgMTA6cmV0dXJuIHIubmV4dD0xMix0Lmpzb24oKTtjYXNlIDEyOnJldHVybiBpPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0saS5rZXlzKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4geChvLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPXRoaXMuX2NyeXB0b0hlbHBlcixyLnQxPWUsci50Mj10LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gci50Mz1yLnNlbnQuY2xpZW50SUQsci50ND1uLHIudDU9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSkuc3ViLHIubmV4dD0xMCx0aGlzLl9jb25maWcoKTtjYXNlIDEwOnJldHVybiByLnQ2PXIuc2VudC5jbG9ja1RvbGVyYW5jZSxyLmFicnVwdCgicmV0dXJuIixyLnQwLmlzVmFsaWRJZFRva2VuLmNhbGwoci50MCxyLnQxLHIudDIsci50MyxyLnQ0LHIudDUsci50NikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItVklULUVTMDMiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJ2YWxpZGF0ZUlkVG9rZW4iLHZvaWQgMCx2b2lkIDAsZSkpfSkpKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItVklULUVTMDQiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJ2YWxpZGF0ZUlkVG9rZW4iLHZvaWQgMCx2b2lkIDAsZSkpfSkpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IE8oIkFVVEhfSEVMUEVSLVZJVC1OUjA1IiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiUmVxdWVzdCB0byBqd2tzIGVuZHBvaW50IGZhaWxlZC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uYm9keSkpfSkpOlByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0hFTFBFUi1WSVQtTkYwMSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxpPXRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKGUpLG89RC5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQoaSkscz1udWxsIT09KHQ9bnVsbD09aT92b2lkIDA6aS51c2VybmFtZSkmJnZvaWQgMCE9PXQ/dDoiIix1PW51bGwhPT0ocj1pLmdpdmVuX25hbWUpJiZ2b2lkIDAhPT1yP3I6IiIsYz1udWxsIT09KG49aS5mYW1pbHlfbmFtZSkmJnZvaWQgMCE9PW4/bjoiIixmPXUmJmM/IiIuY29uY2F0KHUsIiAiKS5jb25jYXQoYyk6dXx8Y3x8IiIsbD1udWxsIT09KGE9aS5wcmVmZXJyZWRfdXNlcm5hbWUpJiZ2b2lkIDAhPT1hP2E6ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGlzcGxheU5hbWU6bCx0ZW5hbnREb21haW46byx1c2VybmFtZTpzfSxELmZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZChpKSl9fSx7a2V5OiJyZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9Im9wZW5pZCIsbi5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOnJldHVybiBpPW4uc2VudCxuLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSA2OnJldHVybiBvPW4uc2VudCxuLmFicnVwdCgicmV0dXJuIiwoaS5zY29wZSYmaS5zY29wZS5sZW5ndGg+MCYmKGkuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxpLnNjb3BlLnB1c2goIm9wZW5pZCIpLGE9aS5zY29wZS5qb2luKCIgIikpLGUucmVwbGFjZSgie3t0b2tlbn19IixvLmFjY2Vzc190b2tlbikucmVwbGFjZSgie3t1c2VybmFtZX19Iix0aGlzLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhvLmlkX3Rva2VuKS51c2VybmFtZSkucmVwbGFjZSgie3tzY29wZX19IixhKS5yZXBsYWNlKCJ7e2NsaWVudElEfX0iLGkuY2xpZW50SUQpLnJlcGxhY2UoInt7Y2xpZW50U2VjcmV0fX0iLG51bGwhPT0ocj1pLmNsaWVudFNlY3JldCkmJnZvaWQgMCE9PXI/cjoiIikpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlVGVtcG9yYXJ5RGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuX2RhdGFMYXllci5yZW1vdmVTZXNzaW9uRGF0YShlKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImhhbmRsZVRva2VuUmVzcG9uc2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxpPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZigyMDA9PT1lLnN0YXR1cyl7ci5uZXh0PTI7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0hFTFBFUi1IVFItTlIwMSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgdG9rZW4gcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSkpO2Nhc2UgMjpyZXR1cm4gci5uZXh0PTQsZS5qc29uKCk7Y2FzZSA0OnJldHVybiBuPXIuc2VudCxyLm5leHQ9Nyx0aGlzLl9jb25maWcoKTtjYXNlIDc6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD05O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIix0aGlzLnZhbGlkYXRlSWRUb2tlbihuLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4geChpLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgYTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCFlKXtyLm5leHQ9NTticmVha31yZXR1cm4gci5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKG4sdCk7Y2FzZSAzOnJldHVybiBhPXthY2Nlc3NUb2tlbjpuLmFjY2Vzc190b2tlbixleHBpcmVzSW46bi5leHBpcmVzX2luLGlkVG9rZW46bi5pZF90b2tlbixyZWZyZXNoVG9rZW46bi5yZWZyZXNoX3Rva2VuLHNjb3BlOm4uc2NvcGUsdG9rZW5UeXBlOm4udG9rZW5fdHlwZX0sci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKGEpKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJBVVRIX0hFTFBFUi1IVFItSVYwMiIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLCJUaGUgaWQgdG9rZW4gcmV0dXJuZWQgaXMgbm90IHZhbGlkLiIsIlRoZSBpZCB0b2tlbiByZXR1cm5lZCBoYXMgZmFpbGVkIHRoZSB2YWxpZGF0aW9uIGNoZWNrLiIpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9IRUxQRVItSEFULUVTMDMiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSA5OnJldHVybiBhPXthY2Nlc3NUb2tlbjpuLmFjY2Vzc190b2tlbixleHBpcmVzSW46bi5leHBpcmVzX2luLGlkVG9rZW46bi5pZF90b2tlbixyZWZyZXNoVG9rZW46bi5yZWZyZXNoX3Rva2VuLHNjb3BlOm4uc2NvcGUsdG9rZW5UeXBlOm4udG9rZW5fdHlwZX0sci5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YShuLHQpO2Nhc2UgMTI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShhKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2VuZXJhdGVQS0NFS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGEoZSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxhPVtdLE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc3RhcnRzV2l0aCgicGtjZV9jb2RlX3ZlcmlmaWVyIikmJmEucHVzaChlKX0pKSxpPWEuc29ydCgpLnBvcCgpLHIuYWJydXB0KCJyZXR1cm4iLCJwa2NlX2NvZGVfdmVyaWZpZXIjIi5jb25jYXQocGFyc2VJbnQobnVsbCE9PSh0PW51bGw9PWk/dm9pZCAwOmkuc3BsaXQoIiMiKVsxXSkmJnZvaWQgMCE9PXQ/dDoiLTEiKSsxKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fV0pLGV9KCksTD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aSh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXR9cmV0dXJuIHMoZSxbe2tleToiZ2V0Q29kZVZlcmlmaWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuZ2VuZXJhdGVSYW5kb21CeXRlcygzMikpfX0se2tleToiZ2V0Q29kZUNoYWxsZW5nZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTEVuY29kZSh0aGlzLl9jcnlwdG9VdGlscy5oYXNoU2hhMjU2KGUpKX19LHtrZXk6ImdldEpXS0ZvclRoZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1KU09OLnBhcnNlKHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlKSksYT1SKHQpO3RyeXtmb3IoYS5zKCk7IShyPWEubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiB0aGlzLl9jcnlwdG9VdGlscy5wYXJzZUp3ayhpKX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBQKCJDUllQVE9fVVRJTC1HVEZUSVQtSVYwMSIsImNyeXB0by11dGlscyIsImdldEpXS0ZvclRoZUlkVG9rZW4iLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsaSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBQKCJDUllQVE9fVVRJTC1JVklULUlWMDIiLCJjcnlwdG8tdXRpbHMiLCJpc1ZhbGlkSWRUb2tlbiIsIlZhbGlkYXRpbmcgSUQgdG9rZW4gZmFpbGVkIixlKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9dGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRGVjb2RlKGUuc3BsaXQoIi4iKVsxXSk7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2goZSl7dGhyb3cgbmV3IFAoIkNSWVBUT19VVElMLURJVC1JVjAxIiwiY3J5cHRvLXV0aWxzIiwiZGVjb2RlSURUb2tlbiIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPXRoaXM7aSh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPXIsdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBMKHIpLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBIKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiBzKGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixhO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gaSgpe3ZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSxiO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6cmV0dXJuIGkubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlcigiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIpO2Nhc2UgMjpyZXR1cm4gbz1pLnNlbnQsaS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9aS5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe2kubmV4dD04O2JyZWFrfXRocm93IG5ldyBQKCJBVVRIX0NPUkUtR0FVLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0QXV0aG9yaXphdGlvblVSTCIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybih1PW5ldyBVUkwobykpLnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksdS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJjbGllbnRfaWQiLHMuY2xpZW50SUQpLGM9Im9wZW5pZCIscy5zY29wZSYmcy5zY29wZS5sZW5ndGg+MCYmKHMuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxzLnNjb3BlLnB1c2goIm9wZW5pZCIpLGM9cy5zY29wZS5qb2luKCIgIikpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgic2NvcGUiLGMpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVkaXJlY3RfdXJpIixzLnNpZ25JblJlZGlyZWN0VVJMKSxzLnJlc3BvbnNlTW9kZSYmdS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV9tb2RlIixzLnJlc3BvbnNlTW9kZSksaS5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGY9aS5zZW50LCFzLmVuYWJsZVBLQ0Upe2kubmV4dD0yMTticmVha31yZXR1cm4gbD1udWxsPT09KHI9dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRDb2RlVmVyaWZpZXIoKSxoPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVDaGFsbGVuZ2UobCksaS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGYsbCx0KTtjYXNlIDE5OnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwiUzI1NiIpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2UiLGgpO2Nhc2UgMjE6aWYocy5wcm9tcHQmJnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicHJvbXB0IixzLnByb21wdCkscD1lKWZvcihkPTAsdj1PYmplY3QuZW50cmllcyhwKTtkPHYubGVuZ3RoO2QrKylnPXkodltkXSwyKSxtPWdbMF0sYj1nWzFdLCIiIT1tJiYiIiE9YiYmInN0YXRlIiE9PW0mJnUuc2VhcmNoUGFyYW1zLmFwcGVuZChtLGIudG9TdHJpbmcoKSk7cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLCh1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInN0YXRlIixELmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihmLHA/bnVsbD09PShhPXAuc3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvU3RyaW5nKCk6IiIpKSx1LnRvU3RyaW5nKCkpKTtjYXNlIDI1OmNhc2UiZW5kIjpyZXR1cm4gaS5zdG9wKCl9fSksaSx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1LGM9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gaT1hLnNlbnQudG9rZW5fZW5kcG9pbnQsYS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG89YS5zZW50LGkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe2EubmV4dD04O2JyZWFrfXJldHVybiBhLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLVJBVDEtTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0QWNjZXNzVG9rZW4iLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDg6aWYoYS50MD10LCFhLnQwKXthLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGEubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLHQsbik7Y2FzZSAxMjppZigocz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG8uY2xpZW50SUQpKSxvLmNsaWVudFNlY3JldCYmby5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZzLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoby5jbGllbnRTZWNyZXQpKSx1PWUscy5wdXNoKCJjb2RlPSIuY29uY2F0KHUpKSxzLnB1c2goImdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlIikscy5wdXNoKCJyZWRpcmVjdF91cmk9Ii5jb25jYXQoby5zaWduSW5SZWRpcmVjdFVSTCkpLGEudDE9by5lbmFibGVQS0NFLCFhLnQxKXthLm5leHQ9Mjk7YnJlYWt9cmV0dXJuIGEudDI9cyxhLnQzPSJjb2RlX3ZlcmlmaWVyPSIsYS5uZXh0PTI0LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEQuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI0OnJldHVybiBhLnQ0PWEuc2VudCxhLnQ1PWEudDMuY29uY2F0LmNhbGwoYS50MyxhLnQ0KSxhLnQyLnB1c2guY2FsbChhLnQyLGEudDUpLGEubmV4dD0yOSx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihELmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0ociksbik7Y2FzZSAyOTpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsZmV0Y2goaSx7Ym9keTpzLmpvaW4oIiYiKSxjcmVkZW50aWFsczpvLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gYy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShlLG4pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQxLUVTMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgTygiQVVUSF9DT1JFLVJBVDEtTlIwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0QWNjZXNzVG9rZW4iLCJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQiLCJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uYm9keSkpfSkpKTtjYXNlIDMwOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpLG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBuPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChhPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLVJBVDItTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZWZyZXNoQWNjZXNzVG9rZW4iLCJObyByZWZyZXNoIHRva2VuIGZvdW5kLiIsIlRoZXJlIHdhcyBubyByZWZyZXNoIHRva2VuIGZvdW5kLiBBc2dhcmRlbyBkb2Vzbid0IHJldHVybiBhIHJlZnJlc2ggdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gZ3JhbnQgaXMgbm90IGVuYWJsZWQuIikpKTtjYXNlIDExOmlmKHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD0xMzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQyLU5GMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDEzOnJldHVybiBpPVtdLHQuYWJydXB0KCJyZXR1cm4iLChpLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChuLmNsaWVudElEKSksaS5wdXNoKCJyZWZyZXNoX3Rva2VuPSIuY29uY2F0KGEucmVmcmVzaF90b2tlbikpLGkucHVzaCgiZ3JhbnRfdHlwZT1yZWZyZXNoX3Rva2VuIiksbi5jbGllbnRTZWNyZXQmJm4uY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmaS5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KG4uY2xpZW50U2VjcmV0KSksZmV0Y2gocix7Ym9keTppLmpvaW4oIiYiKSxjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gby5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZSh0LGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQyLUVTMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgTygiQVVUSF9DT1JFLVJBVDItTlIwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZWZyZXNoQWNjZXNzVG9rZW4iLCJSZWZyZXNoIGFjY2VzcyB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLCJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uYm9keSkpfSkpKSk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLVJBVDMtTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXZva2VBY2Nlc3NUb2tlbiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA4OnJldHVybihhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQobi5jbGllbnRJRCkpLHQudDA9YSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksYS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5hYnJ1cHQoInJldHVybiIsZmV0Y2gocix7Ym9keTphLmpvaW4oIiYiKSxjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gMjAwIT09dC5zdGF0dXM/UHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQVQzLU5SMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmV2b2tlQWNjZXNzVG9rZW4iLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgcmV2b2tlIGFjY2VzcyB0b2tlbiByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gcmV2b2tlIHRoZSBhY2Nlc3MgdG9rZW4gcmV0dXJuZWQgIit0LnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSk6KGkuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpLFByb21pc2UucmVzb2x2ZSh0KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IE8oIkFVVEhfQ09SRS1SQVQzLU5SMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmV2b2tlQWNjZXNzVG9rZW4iLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmJvZHkpKX0pKSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsaSxvLHMsdSxjPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihhPXIuc2VudCwoaT1lLnRva2VuRW5kcG9pbnQmJjAhPT1lLnRva2VuRW5kcG9pbnQudHJpbSgpLmxlbmd0aD9lLnRva2VuRW5kcG9pbnQ6bi50b2tlbl9lbmRwb2ludCkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLVJDRy1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgODpyZXR1cm4gci5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgcj15KGUsMiksbj1yWzBdLGE9clsxXTtyZXR1cm4geChjLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MoYSx0KTtjYXNlIDI6cmV0dXJuIHI9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChuLCI9IikuY29uY2F0KHIpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMDppZihvPXIuc2VudCxzPU9iamVjdC5hc3NpZ24oe30sRC5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLHIudDA9ZS5hdHRhY2hUb2tlbiwhci50MCl7ci5uZXh0PTIzO2JyZWFrfXJldHVybiByLnQxPU9iamVjdCxyLnQyPU9iamVjdC5hc3NpZ24oe30scyksci50Mz0iQmVhcmVyICIsci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDE5OnIudDQ9ci5zZW50LmFjY2Vzc190b2tlbixyLnQ1PXIudDMuY29uY2F0LmNhbGwoci50MyxyLnQ0KSxyLnQ2PXtBdXRob3JpemF0aW9uOnIudDV9LHM9ci50MS5hc3NpZ24uY2FsbChyLnQxLHIudDIsci50Nik7Y2FzZSAyMzpyZXR1cm4gdT17Ym9keTpvLmpvaW4oIiYiKSxjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMocyksbWV0aG9kOiJQT1NUIn0sci5hYnJ1cHQoInJldHVybiIsZmV0Y2goaSx1KS50aGVuKChmdW5jdGlvbihyKXtyZXR1cm4gMjAwIT09ci5zdGF0dXM/UHJvbWlzZS5yZWplY3QobmV3IFAoIkFVVEhfQ09SRS1SQ0ctTlIwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgcmV0dXJuZWQgIityLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSk6ZS5yZXR1cm5zU2Vzc2lvbj9jLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHIsdCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLVJDRy1FUzAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsdm9pZCAwLHZvaWQgMCxlKSl9KSk6UHJvbWlzZS5yZXNvbHZlKHIpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBPKCJBVVRIX0NPUkUtUkNHLU5SMDQiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiVGhlIGN1c3RvbSBncmFudCByZXF1ZXN0IGZhaWxlZC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmJvZHkpKX0pKSk7Y2FzZSAyNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LG49dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKG51bGw9PXI/dm9pZCAwOnIuaWRfdG9rZW4pLGE9e2FsbG93ZWRTY29wZXM6ci5zY29wZSxzZXNzaW9uU3RhdGU6ci5zZXNzaW9uX3N0YXRlfSx0LmFicnVwdCgicmV0dXJuIiwoT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09bltlXSYmIiIhPT1uW2VdJiZudWxsIT09bltlXXx8ZGVsZXRlIG5bZV19KSksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSksbikpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5pZF90b2tlbix0LmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQuaWRfdG9rZW4pO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG49dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHQudDA9IWUsIXQudDApe3QubmV4dD01O2JyZWFrfXJldHVybiB0Lm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDp0LnQwPXQuc2VudDtjYXNlIDU6aWYoIXQudDApe3QubmV4dD03O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoITApKTtjYXNlIDc6cmV0dXJuIHQubmV4dD05LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVXZWxsS25vd25FbmRwb2ludCgpO2Nhc2UgOTpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsZmV0Y2gocikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigyMDA9PT1lLnN0YXR1cyl7dC5uZXh0PTQ7YnJlYWt9dC50MD1Qcm9taXNlLnJlamVjdChuZXcgUCgiQVVUSF9DT1JFLUdPUE0tTlIwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsIkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgdG8gZ2V0IHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCAiK2Uuc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSA0OnJldHVybiB0LnQxPXRoaXMuX2RhdGFMYXllcix0LnQyPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHQubmV4dD04LGUuanNvbigpO2Nhc2UgODpyZXR1cm4gdC50Mz10LnNlbnQsdC5uZXh0PTExLHQudDIucmVzb2x2ZUVuZHBvaW50cy5jYWxsKHQudDIsdC50Myk7Y2FzZSAxMTpyZXR1cm4gdC50ND10LnNlbnQsdC5uZXh0PTE0LHQudDEuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQxLHQudDQpO2Nhc2UgMTQ6cmV0dXJuIHQubmV4dD0xNix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgMTY6dC50MD1Qcm9taXNlLnJlc29sdmUoITApO2Nhc2UgMTc6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQudDApO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnQwPXRoaXMuX2RhdGFMYXllcixlLm5leHQ9Myx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRmFsbGJhY2tFbmRwb2ludHMoKTtjYXNlIDM6cmV0dXJuIGUudDE9ZS5zZW50LGUubmV4dD02LGUudDAuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbChlLnQwLGUudDEpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS50MD10LmF1dGhvcml6YXRpb25fZW5kcG9pbnQsZS50MT10LmNoZWNrX3Nlc3Npb25faWZyYW1lLGUudDI9dC5lbmRfc2Vzc2lvbl9lbmRwb2ludCxlLnQzPXQuaW50cm9zcGVjdGlvbl9lbmRwb2ludCxlLnQ0PXQuaXNzdWVyLGUudDU9dC5qd2tzX3VyaSxlLnQ2PXQucmVnaXN0cmF0aW9uX2VuZHBvaW50LGUudDc9dC5yZXZvY2F0aW9uX2VuZHBvaW50LGUudDg9dC50b2tlbl9lbmRwb2ludCxlLnQ5PXQudXNlcmluZm9fZW5kcG9pbnQsZS5uZXh0PTE1LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVXZWxsS25vd25FbmRwb2ludCgpO2Nhc2UgMTU6cmV0dXJuIGUudDEwPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50OmUudDAsY2hlY2tTZXNzaW9uSWZyYW1lOmUudDEsZW5kU2Vzc2lvbkVuZHBvaW50OmUudDIsaW50cm9zcGVjdGlvbkVuZHBvaW50OmUudDMsaXNzdWVyOmUudDQsandrc1VyaTplLnQ1LHJlZ2lzdHJhdGlvbkVuZHBvaW50OmUudDYscmV2b2NhdGlvbkVuZHBvaW50OmUudDcsdG9rZW5FbmRwb2ludDplLnQ4LHVzZXJpbmZvRW5kcG9pbnQ6ZS50OSx3ZWxsS25vd25FbmRwb2ludDplLnQxMH0pO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjppZihhLnQxPXQ9YS5zZW50LGEudDA9bnVsbD09PWEudDEsYS50MCl7YS5uZXh0PTY7YnJlYWt9YS50MD12b2lkIDA9PT10O2Nhc2UgNjppZighYS50MCl7YS5uZXh0PTEwO2JyZWFrfWEudDI9dm9pZCAwLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9dC5lbmRfc2Vzc2lvbl9lbmRwb2ludDtjYXNlIDExOnJldHVybiBpPWEudDIsYS5uZXh0PTE0LHRoaXMuX2NvbmZpZygpO2Nhc2UgMTQ6aWYobz1hLnNlbnQsaSYmMCE9PWkudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBQKCJBVVRIX0NPUkUtR1NPVS1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gYS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKGEudDQ9cj1hLnNlbnQsYS50Mz1udWxsPT09YS50NCxhLnQzKXthLm5leHQ9MjM7YnJlYWt9YS50Mz12b2lkIDA9PT1yO2Nhc2UgMjM6aWYoIWEudDMpe2EubmV4dD0yNzticmVha31hLnQ1PXZvaWQgMCxhLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzphLnQ1PXIuaWRfdG9rZW47Y2FzZSAyODppZigocz1hLnQ1KSYmMCE9PXMudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBQKCJBVVRIX0NPUkUtR1NPVS1ORjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigodT1udWxsIT09KG49bnVsbD09bz92b2lkIDA6by5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1uP246bnVsbD09bz92b2lkIDA6by5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT11LnRyaW0oKS5sZW5ndGgpe2EubmV4dD0zNDticmVha310aHJvdyBuZXcgUCgiQVVUSF9DT1JFLUdTT1UtTkYwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRTaWduT3V0VVJMIiwiTm8gc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGZvdW5kLiIsIlRoZSBzaWduLW91dCByZWRpcmVjdCBVUkwgY2Fubm90IGJlIGZvdW5kIG9yIHRoZSBVUkwgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIE5vIHNpZ24taW4gcmVkaXJlY3QgVVJMIGhhcyBiZWVuIGZvdW5kIGVpdGhlci4gIik7Y2FzZSAzNDpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsIiIuY29uY2F0KGksIj9pZF90b2tlbl9oaW50PSIpLmNvbmNhdChzLCImcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSIpLmNvbmNhdCh1LCImc3RhdGU9c2lnbl9vdXRfc3VjY2VzcyIpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmdldFNpZ25PdXRVUkwoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIiwodGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSkscikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuYWNjZXNzX3Rva2VuO2Nhc2UgMTE6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDIpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1Cb29sZWFuLHQubmV4dD0zLHRoaXMuZ2V0QWNjZXNzVG9rZW4oZSk7Y2FzZSAzOnJldHVybiB0LnQxPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIiwoMCx0LnQwKSh0LnQxKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihELmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0oZSksdCk7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihELmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCksZSxyKTtjYXNlIDI6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG4uc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKGUpO2Nhc2UgMjppZighZS5vdmVycmlkZVdlbGxFbmRwb2ludENvbmZpZyl7dC5uZXh0PTEzO2JyZWFrfWlmKHQudDA9bnVsbD09ZT92b2lkIDA6ZS5lbmRwb2ludHMsIXQudDApe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MT10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTgsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50cyh7fSk7Y2FzZSA4OnJldHVybiB0LnQyPXQuc2VudCx0Lm5leHQ9MTEsdC50MS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDEsdC50Mik7Y2FzZSAxMTp0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxMzppZih0LnQzPW51bGw9PWU/dm9pZCAwOmUuZW5kcG9pbnRzLCF0LnQzKXt0Lm5leHQ9MTc7YnJlYWt9cmV0dXJuIHQubmV4dD0xNyx0aGlzLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCEwKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksaj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtpKHRoaXMsZSksdGhpcy5faWQ9dCx0aGlzLl9zdG9yZT1yfXJldHVybiBzKGUsW3trZXk6InNldERhdGFJbkJ1bGsiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBhPW4udDIsaT1hJiZKU09OLnBhcnNlKGEpLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHQpLHM9SlNPTi5zdHJpbmdpZnkobyksbi5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxzKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyxjO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKGEudDE9bj1hLnNlbnQsYS50MD1udWxsIT09YS50MSwhYS50MCl7YS5uZXh0PTY7YnJlYWt9YS50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighYS50MCl7YS5uZXh0PTEwO2JyZWFrfWEudDI9bixhLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDphLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1hLnQyLG89aSYmSlNPTi5wYXJzZShpKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx1KHt9LHQscikpLGM9SlNPTi5zdHJpbmdpZnkocyksYS5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxjKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG8scztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixpPWEmJkpTT04ucGFyc2UoYSksZGVsZXRlKG89T2JqZWN0LmFzc2lnbih7fSxpKSlbdF0scz1KU09OLnN0cmluZ2lmeShvKSxuLm5leHQ9MTgsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6Il9yZXNvbHZlS2V5Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0PyIiLmNvbmNhdChlLCItIikuY29uY2F0KHRoaXMuX2lkLCItIikuY29uY2F0KHQpOiIiLmNvbmNhdChlLCItIikuY29uY2F0KHRoaXMuX2lkKX19LHtrZXk6InNldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHIpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHIpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19XSksZX0oKSxxPXtjbG9ja1RvbGVyYW5jZTozMDAsZW5hYmxlUEtDRTohMCxyZXNwb25zZU1vZGU6Uy5xdWVyeSxzY29wZTpbIm9wZW5pZCJdLHNlbmRDb29raWVzSW5SZXF1ZXN0czohMCx2YWxpZGF0ZUlEVG9rZW46ITB9LE49ZnVuY3Rpb24oKXsKLyoqCiAgICAgICAgICogVGhpcyBpcyB0aGUgY29uc3RydWN0b3IgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtTdG9yZX0gc3RvcmUgLSBUaGUgc3RvcmUgb2JqZWN0LgogICAgICAgICAqCiAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgKiBgYGAKICAgICAgICAgKiBjb25zdCBfc3RvcmU6IFN0b3JlID0gbmV3IERhdGFTdG9yZSgpOwogICAgICAgICAqIGNvbnN0IGF1dGggPSBuZXcgQXNnYXJkZW9BdXRoQ2xpZW50PEN1c3RvbUNsaWVudENvbmZpZz4oX3N0b3JlKTsKICAgICAgICAgKiBgYGAKICAgICAgICAgKgogICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNjb25zdHJ1Y3RvcgogICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAqLwpmdW5jdGlvbiBlKHQscil7aSh0aGlzLGUpLGUuX2luc3RhbmNlSUQ/ZS5faW5zdGFuY2VJRCs9MTplLl9pbnN0YW5jZUlEPTAsdGhpcy5fZGF0YUxheWVyPW5ldyBqKCJpbnN0YW5jZV8iLmNvbmNhdChlLl9pbnN0YW5jZUlEKSx0KSx0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmU9bmV3IE0odGhpcy5fZGF0YUxheWVyLHIpfQovKioKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBTREsgd2l0aCB0aGUgY29uZmlnIGRhdGEuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge0F1dGhDbGllbnRDb25maWc8VD59IGNvbmZpZyAtIFRoZSBjb25maWcgb2JqZWN0IHRvIGluaXRpYWxpemUgd2l0aC4KICAgICAgICAgKgogICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAqICAgICBzZXJ2ZXJPcmlnaW46ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAqIH0KICAgICAgICAgKgogICAgICAgICAqIGF3YWl0IGF1dGguaW5pdGlhbGl6ZShjb25maWcpOwogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2luaXRpYWxpemUKICAgICAgICAgKgogICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAqL3JldHVybiBzKGUsW3trZXk6ImluaXRpYWxpemUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxxKSxlKSx7c2NvcGU6W10uY29uY2F0KGIobnVsbCE9PSh0PXEuc2NvcGUpJiZ2b2lkIDAhPT10P3Q6W10pLGIobnVsbCE9PShuPW51bGw9PT0ocj1lLnNjb3BlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEobnVsbD09PSh0PW51bGw9PXE/dm9pZCAwOnEuc2NvcGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluY2x1ZGVzKGUpKX0pKSkmJnZvaWQgMCE9PW4/bjpbXSkpfSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGBEYXRhTGF5ZXJgIG9iamVjdCB0aGF0IGFsbG93cyB5b3UgdG8gYWNjZXNzIGF1dGhlbnRpY2F0aW9uIGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7RGF0YUxheWVyfSAtIFRoZSBgRGF0YUxheWVyYCBvYmplY3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGF0YSA9IGF1dGguZ2V0RGF0YUxheWVyKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGF0YUxheWVyCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXREYXRhTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMYXllcn0KLyoqCiAgICAgICAgICAgKiBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtHZXRBdXRoVVJMQ29uZmlnfSBjb25maWcgLSAoT3B0aW9uYWwpIEEgY29uZmlnIG9iamVjdCB0byBmb3JjZSBpbml0aWFsaXphdGlvbiBhbmQgcGFzcwogICAgICAgICAgICogY3VzdG9tIHBhdGggcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBmaWRwIHBhcmFtZXRlci4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGguZ2V0QXV0aG9yaXphdGlvblVSTCgpLnRoZW4oKHVybCk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh1cmwpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QXV0aG9yaXphdGlvblVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KG49T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBuLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChuLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgc2VuZHMgYSByZXF1ZXN0IHRvIG9idGFpbiB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZQogICAgICAgICAgICogdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yaXphdGlvbkNvZGUgLSBUaGUgYXV0aG9yaXphdGlvbiBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25TdGF0ZSAtIFRoZSBzZXNzaW9uIHN0YXRlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEFjY2Vzc1Rva2VuKGF1dGhDb2RlLCBzZXNzaW9uU3RhdGUpLnRoZW4oKHRva2VuKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHRva2VuKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFhLnNlbnQpe2EubmV4dD02O2JyZWFrfWEudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKSxhLm5leHQ9NzticmVhaztjYXNlIDY6YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LHIsbil9KSk7Y2FzZSA3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIGF1dGhlbnRpY2F0aW9uIGRhdGEgYW5kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguc2lnbk91dCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NpZ25PdXQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgZG9lc24ndCBjbGVhciB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBzaWduLW91dCBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguZ2V0U2lnbk91dFVSTCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFNpZ25PdXRVUkwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIE9JREMgc2VydmljZSBlbmRwb2ludHMgdGhhdCBhcmUgZmV0Y2hlZCBmcm9tIHRoZSBgLndlbGwta25vd25gIGVuZHBvaW50LgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8T0lEQ0VuZHBvaW50cz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCBhdXRoLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBwYXlsb2FkIG9mIHRoZSBJRCB0b2tlbiBhbmQgcmV0dXJucyBpdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RGVjb2RlZElEVG9rZW5QYXlsb2FkPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBkZWNvZGVkIElEIHRva2VuIHBheWxvYWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgZGVjb2RlZElkVG9rZW4gPSBhd2FpdCBhdXRoLmdldERlY29kZWRJRFRva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGVjb2RlZElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGlkVG9rZW4gPSBhd2FpdCBhdXRoLmdldElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRJRFRva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0SURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbiBvYnRhaW5lZCBmcm9tIHRoZSBJRCB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8QmFzaWNVc2VySW5mbz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCB1c2VySW5mbyA9IGF3YWl0IGF1dGguZ2V0QmFzaWNVc2VySW5mbygpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEJhc2ljVXNlckluZm8KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRCYXNpY1VzZXJJbmZvKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXR1cm5zIHRoZSByZXNwb25zZSBvZiB0aGUgcmV2b2tlLWFjY2Vzcy10b2tlbiByZXF1ZXN0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXZva2VBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmVmcmVzaGVzIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFjY2VzcwogICAgICAgICAgICogdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIHJlc3BvbnNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF1dGgucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVmcmVzaEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKGUpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhY2Nlc3MgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBhdXRoLmdldEFjY2Vzc1Rva2VuKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QWNjZXNzVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgY3VzdG9tLWdyYW50IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UKICAgICAgICAgICAqIGRlcGVuZGluZyBvbiB0aGUgY29uZmlnIHBhc3NlZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0N1c3RvbUdyYW50Q29uZmlnfSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgY29udGFpbmluZyB0aGUgY3VzdG9tIGdyYW50IGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2UgfCBGZXRjaFJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkZXBlbmRpbmcKICAgICAgICAgICAqIG9uIHlvdXIgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICBhdHRhY2hUb2tlbjogZmFsc2UsCiAgICAgICAgICAgKiAgIGRhdGE6IHsKICAgICAgICAgICAqICAgICAgIGNsaWVudF9pZDogInt7Y2xpZW50SUR9fSIsCiAgICAgICAgICAgKiAgICAgICBncmFudF90eXBlOiAiYWNjb3VudF9zd2l0Y2giLAogICAgICAgICAgICogICAgICAgc2NvcGU6ICJ7e3Njb3BlfX0iLAogICAgICAgICAgICogICAgICAgdG9rZW46ICJ7e3Rva2VufX0iLAogICAgICAgICAgICogICB9LAogICAgICAgICAgICogICBpZDogImFjY291bnQtc3dpdGNoIiwKICAgICAgICAgICAqICAgcmV0dXJuUmVzcG9uc2U6IHRydWUsCiAgICAgICAgICAgKiAgIHJldHVybnNTZXNzaW9uOiB0cnVlLAogICAgICAgICAgICogICBzaWduSW5SZXF1aXJlZDogdHJ1ZQogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF1dGgucmVxdWVzdEN1c3RvbUdyYW50KGNvbmZpZykudGhlbigocmVzcG9uc2UpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEN1c3RvbUdyYW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSx0KX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkLCBgZmFsc2VgIG90aGVyd2lzZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRlZCgpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzQXV0aGVudGljYXRlZAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBQS0NFIGNvZGUgZ2VuZXJhdGVkIGR1cmluZyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgcGtjZSA9IGF3YWl0IGdldFBLQ0VDb2RlKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0UEtDRUNvZGUKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZShlLHQpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBQS0NFIGNvZGUgdG8gdGhlIGRhdGEgc3RvcmUuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBrY2UgLSBUaGUgUEtDRSBjb2RlLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIC0gVGhlIHN0YXRlIHBhcmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXdhaXQgYXV0aC5zZXRQS0NFQ29kZSgicGtjZV9jb2RlIikKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSx0LHIpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGlzIHN1Y2Nlc3NmdWwgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc1NpZ25PdXRTdWNjZXNzZnVsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOgovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yIHdoZW4gaW5zdGFudGlhdGluZyB0aGlzIGNsYXNzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7UGFydGlhbDxBdXRoQ2xpZW50Q29uZmlnPFQ+Pn0gY29uZmlnIC0gQSBjb25maWcgb2JqZWN0IHRvIHVwZGF0ZSB0aGUgU0RLIGNvbmZpZ3VyYXRpb25zIHdpdGguCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgY29uZmlnID0gewogICAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKICAgICAgICAgICAqICAgICBzZXJ2ZXJPcmlnaW46ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgogICAgICAgICAgICogfQogICAgICAgICAgICoKICAgICAgICAgICAqIGF3YWl0IGF1dGgudXBkYXRlQ29uZmlnKGNvbmZpZyk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciN1cGRhdGVDb25maWcKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi8KZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGhhcyBmYWlsZWQgb3Igbm90LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduT3V0UmVkaXJlY3RVcmwgLSBUaGUgVVJMIHRvIHdoaWNoIHRoZSB1c2VyIGhhcyBiZWVuIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgc2lnbmluZy1vdXQuCiAgICAgICAgICAgKgogICAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCiAgICAgICAgICAgKiAgYXJlIHJlcXVpcmVkIGZvciB0aGlzIG1ldGhvZCB0byBmdW5jdGlvbi4qKgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNkaWRTaWduT3V0RmFpbAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiZufX1dKSxlfSgpLEs9ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oSXx8KEk9e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50IixlLlNpZ25PdXRGYWlsZWQ9InNpZ24tb3V0LWZhaWxlZCJ9KFV8fChVPXt9KSk7dmFyIEI9ImN1c3RvbV9ncmFudF9jb25maWciLEY9ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlLG4sYSxvLHMsdSl7dmFyIGM7cmV0dXJuIGkodGhpcyxyKSwoYz10LmNhbGwodGhpcyxudWxsIT1vP286bnVsbD09dT92b2lkIDA6dS5tZXNzYWdlKSkubmFtZT1jLmNvbnN0cnVjdG9yLm5hbWUsYy5jb2RlPWUsYy5maWxlPW4sYy5tZXRob2Q9YSxjLmVycm9yPXUsYy5kZXNjcmlwdGlvbj1zLE9iamVjdC5zZXRQcm90b3R5cGVPZih2KGMpLCh0aGlzIGluc3RhbmNlb2Ygcj90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKSxjfXJldHVybiBzKHIpfShkKEVycm9yKSksSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aSh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpfXJldHVybiBzKGUsW3trZXk6InJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6aWYoISh0PWUuc2VudCkucmVmcmVzaF90b2tlbil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIHI9cGFyc2VJbnQodC5leHBpcmVzX2luKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIF8oYSx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSwxZTMqKHI8PTEwP3I6ci0xMCkpLGUubmV4dD05LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEEsSlNPTi5zdHJpbmdpZnkobikpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEEpO2Nhc2UgMjppZighZS5zZW50KXtlLm5leHQ9OTticmVha31yZXR1cm4gZS50MD1KU09OLGUubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEEpO2Nhc2UgNjplLnQxPWUuc2VudCx0PWUudDAucGFyc2UuY2FsbChlLnQwLGUudDEpLGNsZWFyVGltZW91dCh0KTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19XSksZX0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntibG9iOihudWxsPT1lP3ZvaWQgMDplLmRhdGEpaW5zdGFuY2VvZiBCbG9iP251bGw9PWU/dm9pZCAwOmUuZGF0YTpudWxsLGRhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiEwfX19LHtrZXk6ImdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnRvSlNPTikmJmRlbGV0ZSBlLnRvSlNPTix7ZXJyb3I6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiExfX19XSksZX0oKSx6PSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gWShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIFYoZSl7aWYoZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9KSksdH12YXIgRz17ZXhwb3J0czp7fX0sWD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fSwkPVgsWj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gZWUoZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gdGUoZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PVouY2FsbChlKX1mdW5jdGlvbiByZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09cihlKX1mdW5jdGlvbiBuZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PVouY2FsbChlKSlyZXR1cm4hMTt2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBhZShlKXtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT09Wi5jYWxsKGUpfWZ1bmN0aW9uIGllKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9PXIoZSkmJihlPVtlXSksUShlKSlmb3IodmFyIG49MCxhPWUubGVuZ3RoO248YTtuKyspdC5jYWxsKG51bGwsZVtuXSxuLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgb2U9e2lzQXJyYXk6USxpc0FycmF5QnVmZmVyOnRlLGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIWVlKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIWVlKGUuY29uc3RydWN0b3IpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX0saXNGb3JtRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGb3JtRGF0YV0iPT09Wi5jYWxsKGUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZ0ZShlLmJ1ZmZlcil9LGlzU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0saXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfSxpc09iamVjdDpyZSxpc1BsYWluT2JqZWN0Om5lLGlzVW5kZWZpbmVkOmVlLGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1aLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1aLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1aLmNhbGwoZSl9LGlzRnVuY3Rpb246YWUsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIHJlKGUpJiZhZShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdIj09PVouY2FsbChlKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDppZSxtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gcihyLG4pe25lKHRbbl0pJiZuZShyKT90W25dPWUodFtuXSxyKTpuZShyKT90W25dPWUoe30scik6UShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspaWUoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBpZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/JCh0LHIpOnR9KSksZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihlKXtyZXR1cm4gNjUyNzk9PT1lLmNoYXJDb2RlQXQoMCkmJihlPWUuc2xpY2UoMSkpLGV9fSxzZT1vZTtmdW5jdGlvbiB1ZShlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX12YXIgY2U9ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuO2lmKHIpbj1yKHQpO2Vsc2UgaWYoc2UuaXNVUkxTZWFyY2hQYXJhbXModCkpbj10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgYT1bXTtzZS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUsdCl7bnVsbCE9ZSYmKHNlLmlzQXJyYXkoZSk/dCs9IltdIjplPVtlXSxzZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3NlLmlzRGF0ZShlKT9lPWUudG9JU09TdHJpbmcoKTpzZS5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLGEucHVzaCh1ZSh0KSsiPSIrdWUoZSkpfSkpKX0pKSxuPWEuam9pbigiJiIpfWlmKG4pe3ZhciBpPWUuaW5kZXhPZigiIyIpOy0xIT09aSYmKGU9ZS5zbGljZSgwLGkpKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStufXJldHVybiBlfSxmZT1vZTtmdW5jdGlvbiBsZSgpe3RoaXMuaGFuZGxlcnM9W119bGUucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIXImJnIuc3luY2hyb25vdXMscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sbGUucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSxsZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXtmZS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfTt2YXIgaGU9bGUscGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtmdW5jdGlvbiBkZSgpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHZlKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX12YXIgZ2U9ZGUsbWU9dmU7ZnVuY3Rpb24geWUoZSl7aWYoZ2U9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGdlPT09ZGV8fCFnZSkmJnNldFRpbWVvdXQpcmV0dXJuIGdlPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gZ2UoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGdlLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBnZS5jYWxsKHRoaXMsZSwwKX19fSJmdW5jdGlvbiI9PXR5cGVvZiBwZS5zZXRUaW1lb3V0JiYoZ2U9c2V0VGltZW91dCksImZ1bmN0aW9uIj09dHlwZW9mIHBlLmNsZWFyVGltZW91dCYmKG1lPWNsZWFyVGltZW91dCk7dmFyIGJlLHdlPVtdLGtlPSExLFJlPS0xO2Z1bmN0aW9uIF9lKCl7a2UmJmJlJiYoa2U9ITEsYmUubGVuZ3RoP3dlPWJlLmNvbmNhdCh3ZSk6UmU9LTEsd2UubGVuZ3RoJiZ4ZSgpKX1mdW5jdGlvbiB4ZSgpe2lmKCFrZSl7dmFyIGU9eWUoX2UpO2tlPSEwO2Zvcih2YXIgdD13ZS5sZW5ndGg7dDspe2ZvcihiZT13ZSx3ZT1bXTsrK1JlPHQ7KWJlJiZiZVtSZV0ucnVuKCk7UmU9LTEsdD13ZS5sZW5ndGh9YmU9bnVsbCxrZT0hMSxmdW5jdGlvbihlKXtpZihtZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChtZT09PXZlfHwhbWUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIG1lPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e21lKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gbWUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBtZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIFNlKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9U2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIEVlKCl7fXZhciBUZT1FZSxBZT1FZSxDZT1FZSxQZT1FZSxPZT1FZSxEZT1FZSxJZT1FZTt2YXIgVWU9cGUucGVyZm9ybWFuY2V8fHt9LEhlPVVlLm5vd3x8VWUubW96Tm93fHxVZS5tc05vd3x8VWUub05vd3x8VWUud2Via2l0Tm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTt2YXIgTGU9bmV3IERhdGU7dmFyIE1lPXtuZXh0VGljazpmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3dlLnB1c2gobmV3IFNlKGUsdCkpLDEhPT13ZS5sZW5ndGh8fGtlfHx5ZSh4ZSl9LHRpdGxlOiJicm93c2VyIixicm93c2VyOiEwLGVudjp7fSxhcmd2OltdLHZlcnNpb246IiIsdmVyc2lvbnM6e30sb246VGUsYWRkTGlzdGVuZXI6QWUsb25jZTpDZSxvZmY6UGUscmVtb3ZlTGlzdGVuZXI6T2UscmVtb3ZlQWxsTGlzdGVuZXJzOkRlLGVtaXQ6SWUsYmluZGluZzpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGN3ZDpmdW5jdGlvbigpe3JldHVybiIvIn0sY2hkaXI6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sdW1hc2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0saHJ0aW1lOmZ1bmN0aW9uKGUpe3ZhciB0PS4wMDEqSGUuY2FsbChVZSkscj1NYXRoLmZsb29yKHQpLG49TWF0aC5mbG9vcih0JTEqMWU5KTtyZXR1cm4gZSYmKHItPWVbMF0sKG4tPWVbMV0pPDAmJihyLS0sbis9MWU5KSksW3Isbl19LHBsYXRmb3JtOiJicm93c2VyIixyZWxlYXNlOnt9LGNvbmZpZzp7fSx1cHRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUtTGUpLzFlM319LGplPU1lLHFlPW9lLE5lPWZ1bmN0aW9uKGUsdCxyLG4sYSl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPWEsZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfSxLZT1OZSxCZT1mdW5jdGlvbihlLHQscixuLGEpe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gS2UoaSx0LHIsbixhKX0sRmU9QmUsSmU9b2UsV2U9SmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3ZhciBvPVtdO28ucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLEplLmlzTnVtYmVyKHIpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxKZS5pc1N0cmluZyhuKSYmby5wdXNoKCJwYXRoPSIrbiksSmUuaXNTdHJpbmcoYSkmJm8ucHVzaCgiZG9tYWluPSIrYSksITA9PT1pJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSx6ZT1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfSxZZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfSxWZT1vZSxHZT1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLFhlPW9lLCRlPVhlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPVhlLmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH07ZnVuY3Rpb24gWmUoZSl7dGhpcy5tZXNzYWdlPWV9WmUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LFplLnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwO3ZhciBRZT1aZSxldD1vZSx0dD1mdW5jdGlvbihlLHQscil7dmFyIG49ci5jb25maWcudmFsaWRhdGVTdGF0dXM7ci5zdGF0dXMmJm4mJiFuKHIuc3RhdHVzKT90KEZlKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrci5zdGF0dXMsci5jb25maWcsbnVsbCxyLnJlcXVlc3QscikpOmUocil9LHJ0PVdlLG50PWNlLGF0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiF6ZSh0KT9ZZShlLHQpOnR9LGl0PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhPXt9O3JldHVybiBlPyhWZS5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKG49ZS5pbmRleE9mKCI6IiksdD1WZS50cmltKGUuc3Vic3RyKDAsbikpLnRvTG93ZXJDYXNlKCkscj1WZS50cmltKGUuc3Vic3RyKG4rMSkpLHQpe2lmKGFbdF0mJkdlLmluZGV4T2YodCk+PTApcmV0dXJuO2FbdF09InNldC1jb29raWUiPT09dD8oYVt0XT9hW3RdOltdKS5jb25jYXQoW3JdKTphW3RdP2FbdF0rIiwgIityOnJ9fSkpLGEpOmF9LG90PSRlLHN0PUJlLHV0PXl0LGN0PVFlLGZ0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXt2YXIgbixhPWUuZGF0YSxpPWUuaGVhZGVycyxvPWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHMoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsbil9ZXQuaXNGb3JtRGF0YShhKSYmZGVsZXRlIGlbIkNvbnRlbnQtVHlwZSJdO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBjPWUuYXV0aC51c2VybmFtZXx8IiIsZj1lLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO2kuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGMrIjoiK2YpfXZhciBsPWF0KGUuYmFzZVVSTCxlLnVybCk7ZnVuY3Rpb24gaCgpe2lmKHUpe3ZhciBuPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gdT9pdCh1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGE9e2RhdGE6byYmInRleHQiIT09byYmImpzb24iIT09bz91LnJlc3BvbnNlOnUucmVzcG9uc2VUZXh0LHN0YXR1czp1LnN0YXR1cyxzdGF0dXNUZXh0OnUuc3RhdHVzVGV4dCxoZWFkZXJzOm4sY29uZmlnOmUscmVxdWVzdDp1fTt0dCgoZnVuY3Rpb24oZSl7dChlKSxzKCl9KSwoZnVuY3Rpb24oZSl7cihlKSxzKCl9KSxhKSx1PW51bGx9fWlmKHUub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLG50KGwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksdS50aW1lb3V0PWUudGltZW91dCwib25sb2FkZW5kImluIHU/dS5vbmxvYWRlbmQ9aDp1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UmJjQ9PT11LnJlYWR5U3RhdGUmJigwIT09dS5zdGF0dXN8fHUucmVzcG9uc2VVUkwmJjA9PT11LnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KGgpfSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXt1JiYocihzdCgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGwpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyKHN0KCJOZXR3b3JrIEVycm9yIixlLG51bGwsdSkpLHU9bnVsbH0sdS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsbj1lLnRyYW5zaXRpb25hbHx8dXQudHJhbnNpdGlvbmFsO2UudGltZW91dEVycm9yTWVzc2FnZSYmKHQ9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKHN0KHQsZSxuLmNsYXJpZnlUaW1lb3V0RXJyb3I/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbH0sZXQuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIHA9KGUud2l0aENyZWRlbnRpYWxzfHxvdChsKSkmJmUueHNyZkNvb2tpZU5hbWU/cnQucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7cCYmKGlbZS54c3JmSGVhZGVyTmFtZV09cCl9InNldFJlcXVlc3RIZWFkZXIiaW4gdSYmZXQuZm9yRWFjaChpLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWEmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBpW3RdOnUuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLGV0LmlzVW5kZWZpbmVkKGUud2l0aENyZWRlbnRpYWxzKXx8KHUud2l0aENyZWRlbnRpYWxzPSEhZS53aXRoQ3JlZGVudGlhbHMpLG8mJiJqc29uIiE9PW8mJih1LnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZ1LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGUub25VcGxvYWRQcm9ncmVzcyYmdS51cGxvYWQmJnUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uVXBsb2FkUHJvZ3Jlc3MpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihuPWZ1bmN0aW9uKGUpe3UmJihyKCFlfHxlJiZlLnR5cGU/bmV3IGN0KCJjYW5jZWxlZCIpOmUpLHUuYWJvcnQoKSx1PW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShuKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ/bigpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuKSkpLGF8fChhPW51bGwpLHUuc2VuZChhKX0pKX0sbHQ9b2UsaHQ9ZnVuY3Rpb24oZSx0KXtxZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LHB0PU5lLGR0PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gdnQoZSx0KXshbHQuaXNVbmRlZmluZWQoZSkmJmx0LmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciBndCxtdD17dHJhbnNpdGlvbmFsOntzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxhZGFwdGVyOigoInVuZGVmaW5lZCIhPXR5cGVvZiBYTUxIdHRwUmVxdWVzdHx8dm9pZCAwIT09amUmJiJbb2JqZWN0IHByb2Nlc3NdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChqZSkpJiYoZ3Q9ZnQpLGd0KSx0cmFuc2Zvcm1SZXF1ZXN0OltmdW5jdGlvbihlLHQpe3JldHVybiBodCh0LCJBY2NlcHQiKSxodCh0LCJDb250ZW50LVR5cGUiKSxsdC5pc0Zvcm1EYXRhKGUpfHxsdC5pc0FycmF5QnVmZmVyKGUpfHxsdC5pc0J1ZmZlcihlKXx8bHQuaXNTdHJlYW0oZSl8fGx0LmlzRmlsZShlKXx8bHQuaXNCbG9iKGUpP2U6bHQuaXNBcnJheUJ1ZmZlclZpZXcoZSk/ZS5idWZmZXI6bHQuaXNVUkxTZWFyY2hQYXJhbXMoZSk/KHZ0KHQsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04IiksZS50b1N0cmluZygpKTpsdC5pc09iamVjdChlKXx8dCYmImFwcGxpY2F0aW9uL2pzb24iPT09dFsiQ29udGVudC1UeXBlIl0/KHZ0KHQsImFwcGxpY2F0aW9uL2pzb24iKSxmdW5jdGlvbihlLHQscil7aWYobHQuaXNTdHJpbmcoZSkpdHJ5e3JldHVybih0fHxKU09OLnBhcnNlKShlKSxsdC50cmltKGUpfWNhdGNoKGUpe2lmKCJTeW50YXhFcnJvciIhPT1lLm5hbWUpdGhyb3cgZX1yZXR1cm4ocnx8SlNPTi5zdHJpbmdpZnkpKGUpfShlKSk6ZX1dLHRyYW5zZm9ybVJlc3BvbnNlOltmdW5jdGlvbihlKXt2YXIgdD10aGlzLnRyYW5zaXRpb25hbHx8bXQudHJhbnNpdGlvbmFsLHI9dCYmdC5zaWxlbnRKU09OUGFyc2luZyxuPXQmJnQuZm9yY2VkSlNPTlBhcnNpbmcsYT0hciYmImpzb24iPT09dGhpcy5yZXNwb25zZVR5cGU7aWYoYXx8biYmbHQuaXNTdHJpbmcoZSkmJmUubGVuZ3RoKXRyeXtyZXR1cm4gSlNPTi5wYXJzZShlKX1jYXRjaChlKXtpZihhKXtpZigiU3ludGF4RXJyb3IiPT09ZS5uYW1lKXRocm93IHB0KGUsdGhpcywiRV9KU09OX1BBUlNFIik7dGhyb3cgZX19cmV0dXJuIGV9XSx0aW1lb3V0OjAseHNyZkNvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLHhzcmZIZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4iLG1heENvbnRlbnRMZW5ndGg6LTEsbWF4Qm9keUxlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07bHQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiXSwoZnVuY3Rpb24oZSl7bXQuaGVhZGVyc1tlXT17fX0pKSxsdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe210LmhlYWRlcnNbZV09bHQubWVyZ2UoZHQpfSkpO3ZhciB5dD1tdCxidD1vZSx3dD15dCxrdD1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHwhZS5fX0NBTkNFTF9fKX0sUnQ9b2UsX3Q9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXN8fHd0O3JldHVybiBidC5mb3JFYWNoKHIsKGZ1bmN0aW9uKHIpe2U9ci5jYWxsKG4sZSx0KX0pKSxlfSx4dD1rdCxTdD15dCxFdD1RZTtmdW5jdGlvbiBUdChlKXtpZihlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKSxlLnNpZ25hbCYmZS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgRXQoImNhbmNlbGVkIil9dmFyIEF0PW9lLEN0PWZ1bmN0aW9uKGUsdCl7dD10fHx7fTt2YXIgcj17fTtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIEF0LmlzUGxhaW5PYmplY3QoZSkmJkF0LmlzUGxhaW5PYmplY3QodCk/QXQubWVyZ2UoZSx0KTpBdC5pc1BsYWluT2JqZWN0KHQpP0F0Lm1lcmdlKHt9LHQpOkF0LmlzQXJyYXkodCk/dC5zbGljZSgpOnR9ZnVuY3Rpb24gYShyKXtyZXR1cm4gQXQuaXNVbmRlZmluZWQodFtyXSk/QXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4oZVtyXSx0W3JdKX1mdW5jdGlvbiBpKGUpe2lmKCFBdC5pc1VuZGVmaW5lZCh0W2VdKSlyZXR1cm4gbih2b2lkIDAsdFtlXSl9ZnVuY3Rpb24gbyhyKXtyZXR1cm4gQXQuaXNVbmRlZmluZWQodFtyXSk/QXQuaXNVbmRlZmluZWQoZVtyXSk/dm9pZCAwOm4odm9pZCAwLGVbcl0pOm4odm9pZCAwLHRbcl0pfWZ1bmN0aW9uIHMocil7cmV0dXJuIHIgaW4gdD9uKGVbcl0sdFtyXSk6ciBpbiBlP24odm9pZCAwLGVbcl0pOnZvaWQgMH12YXIgdT17dXJsOmksbWV0aG9kOmksZGF0YTppLGJhc2VVUkw6byx0cmFuc2Zvcm1SZXF1ZXN0Om8sdHJhbnNmb3JtUmVzcG9uc2U6byxwYXJhbXNTZXJpYWxpemVyOm8sdGltZW91dDpvLHRpbWVvdXRNZXNzYWdlOm8sd2l0aENyZWRlbnRpYWxzOm8sYWRhcHRlcjpvLHJlc3BvbnNlVHlwZTpvLHhzcmZDb29raWVOYW1lOm8seHNyZkhlYWRlck5hbWU6byxvblVwbG9hZFByb2dyZXNzOm8sb25Eb3dubG9hZFByb2dyZXNzOm8sZGVjb21wcmVzczpvLG1heENvbnRlbnRMZW5ndGg6byxtYXhCb2R5TGVuZ3RoOm8sdHJhbnNwb3J0Om8saHR0cEFnZW50Om8saHR0cHNBZ2VudDpvLGNhbmNlbFRva2VuOm8sc29ja2V0UGF0aDpvLHJlc3BvbnNlRW5jb2Rpbmc6byx2YWxpZGF0ZVN0YXR1czpzfTtyZXR1cm4gQXQuZm9yRWFjaChPYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLChmdW5jdGlvbihlKXt2YXIgdD11W2VdfHxhLG49dChlKTtBdC5pc1VuZGVmaW5lZChuKSYmdCE9PXN8fChyW2VdPW4pfSkpLHJ9LFB0PSIwLjI2LjAiLE90PVB0LER0PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtEdFtlXT1mdW5jdGlvbihuKXtyZXR1cm4gcihuKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgSXQ9e307RHQudHJhbnNpdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIltBeGlvcyB2IitPdCsiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixhLGkpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobihhLCIgaGFzIGJlZW4gcmVtb3ZlZCIrKHQ/IiBpbiAiK3Q6IiIpKSk7cmV0dXJuIHQmJiFJdFthXSYmKEl0W2FdPSEwLGNvbnNvbGUud2FybihuKGEsIiBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYiK3QrIiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSIpKSksIWV8fGUocixhLGkpfX07dmFyIFV0PXthc3NlcnRPcHRpb25zOmZ1bmN0aW9uKGUsdCxuKXtpZigib2JqZWN0IiE9PXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2Zvcih2YXIgYT1PYmplY3Qua2V5cyhlKSxpPWEubGVuZ3RoO2ktLSA+MDspe3ZhciBvPWFbaV0scz10W29dO2lmKHMpe3ZhciB1PWVbb10sYz12b2lkIDA9PT11fHxzKHUsbyxlKTtpZighMCE9PWMpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9uICIrbysiIG11c3QgYmUgIitjKX1lbHNlIGlmKCEwIT09bil0aHJvdyBFcnJvcigiVW5rbm93biBvcHRpb24gIitvKX19LHZhbGlkYXRvcnM6RHR9LEh0PW9lLEx0PWNlLE10PWhlLGp0PWZ1bmN0aW9uKGUpe3JldHVybiBUdChlKSxlLmhlYWRlcnM9ZS5oZWFkZXJzfHx7fSxlLmRhdGE9X3QuY2FsbChlLGUuZGF0YSxlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXF1ZXN0KSxlLmhlYWRlcnM9UnQubWVyZ2UoZS5oZWFkZXJzLmNvbW1vbnx8e30sZS5oZWFkZXJzW2UubWV0aG9kXXx8e30sZS5oZWFkZXJzKSxSdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBvc3QiLCJwdXQiLCJwYXRjaCIsImNvbW1vbiJdLChmdW5jdGlvbih0KXtkZWxldGUgZS5oZWFkZXJzW3RdfSkpLChlLmFkYXB0ZXJ8fFN0LmFkYXB0ZXIpKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBUdChlKSx0LmRhdGE9X3QuY2FsbChlLHQuZGF0YSx0LmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSksdH0pLChmdW5jdGlvbih0KXtyZXR1cm4geHQodCl8fChUdChlKSx0JiZ0LnJlc3BvbnNlJiYodC5yZXNwb25zZS5kYXRhPV90LmNhbGwoZSx0LnJlc3BvbnNlLmRhdGEsdC5yZXNwb25zZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpKSksUHJvbWlzZS5yZWplY3QodCl9KSl9LHF0PUN0LE50PVV0LEt0PU50LnZhbGlkYXRvcnM7ZnVuY3Rpb24gQnQoZSl7dGhpcy5kZWZhdWx0cz1lLHRoaXMuaW50ZXJjZXB0b3JzPXtyZXF1ZXN0Om5ldyBNdCxyZXNwb25zZTpuZXcgTXR9fUJ0LnByb3RvdHlwZS5yZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PXR5cGVvZiBlPyh0PXR8fHt9KS51cmw9ZTp0PWV8fHt9LCh0PXF0KHRoaXMuZGVmYXVsdHMsdCkpLm1ldGhvZD90Lm1ldGhvZD10Lm1ldGhvZC50b0xvd2VyQ2FzZSgpOnRoaXMuZGVmYXVsdHMubWV0aG9kP3QubWV0aG9kPXRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk6dC5tZXRob2Q9ImdldCI7dmFyIHI9dC50cmFuc2l0aW9uYWw7dm9pZCAwIT09ciYmTnQuYXNzZXJ0T3B0aW9ucyhyLHtzaWxlbnRKU09OUGFyc2luZzpLdC50cmFuc2l0aW9uYWwoS3QuYm9vbGVhbiksZm9yY2VkSlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4pLGNsYXJpZnlUaW1lb3V0RXJyb3I6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4pfSwhMSk7dmFyIG49W10sYT0hMDt0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlLnJ1bldoZW4mJiExPT09ZS5ydW5XaGVuKHQpfHwoYT1hJiZlLnN5bmNocm9ub3VzLG4udW5zaGlmdChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKSl9KSk7dmFyIGksbz1bXTtpZih0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnB1c2goZS5mdWxmaWxsZWQsZS5yZWplY3RlZCl9KSksIWEpe3ZhciBzPVtqdCx2b2lkIDBdO2ZvcihBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShzLG4pLHM9cy5jb25jYXQobyksaT1Qcm9taXNlLnJlc29sdmUodCk7cy5sZW5ndGg7KWk9aS50aGVuKHMuc2hpZnQoKSxzLnNoaWZ0KCkpO3JldHVybiBpfWZvcih2YXIgdT10O24ubGVuZ3RoOyl7dmFyIGM9bi5zaGlmdCgpLGY9bi5zaGlmdCgpO3RyeXt1PWModSl9Y2F0Y2goZSl7ZihlKTticmVha319dHJ5e2k9anQodSl9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfWZvcig7by5sZW5ndGg7KWk9aS50aGVuKG8uc2hpZnQoKSxvLnNoaWZ0KCkpO3JldHVybiBpfSxCdC5wcm90b3R5cGUuZ2V0VXJpPWZ1bmN0aW9uKGUpe3JldHVybiBlPXF0KHRoaXMuZGVmYXVsdHMsZSksTHQoZS51cmwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXD8vLCIiKX0sSHQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJvcHRpb25zIl0sKGZ1bmN0aW9uKGUpe0J0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlcXVlc3QocXQocnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6KHJ8fHt9KS5kYXRhfSkpfX0pKSxIdC5mb3JFYWNoKFsicG9zdCIsInB1dCIsInBhdGNoIl0sKGZ1bmN0aW9uKGUpe0J0LnByb3RvdHlwZVtlXT1mdW5jdGlvbih0LHIsbil7cmV0dXJuIHRoaXMucmVxdWVzdChxdChufHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YTpyfSkpfX0pKTt2YXIgRnQ9QnQsSnQ9UWU7ZnVuY3Rpb24gV3QoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7dGhpcy5wcm9taXNlLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKHIuX2xpc3RlbmVycyl7dmFyIHQsbj1yLl9saXN0ZW5lcnMubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKylyLl9saXN0ZW5lcnNbdF0oZSk7ci5fbGlzdGVuZXJzPW51bGx9fSkpLHRoaXMucHJvbWlzZS50aGVuPWZ1bmN0aW9uKGUpe3ZhciB0LG49bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Iuc3Vic2NyaWJlKGUpLHQ9ZX0pKS50aGVuKGUpO3JldHVybiBuLmNhbmNlbD1mdW5jdGlvbigpe3IudW5zdWJzY3JpYmUodCl9LG59LGUoKGZ1bmN0aW9uKGUpe3IucmVhc29ufHwoci5yZWFzb249bmV3IEp0KGUpLHQoci5yZWFzb24pKX0pKX1XdC5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZD1mdW5jdGlvbigpe2lmKHRoaXMucmVhc29uKXRocm93IHRoaXMucmVhc29ufSxXdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3RoaXMucmVhc29uP2UodGhpcy5yZWFzb24pOnRoaXMuX2xpc3RlbmVycz90aGlzLl9saXN0ZW5lcnMucHVzaChlKTp0aGlzLl9saXN0ZW5lcnM9W2VdfSxXdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7aWYodGhpcy5fbGlzdGVuZXJzKXt2YXIgdD10aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihlKTstMSE9PXQmJnRoaXMuX2xpc3RlbmVycy5zcGxpY2UodCwxKX19LFd0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlO3JldHVybnt0b2tlbjpuZXcgV3QoKGZ1bmN0aW9uKHQpe2U9dH0pKSxjYW5jZWw6ZX19O3ZhciB6dD1XdCxZdD1vZSxWdD1vZSxHdD1YLFh0PUZ0LCR0PUN0O3ZhciBadD1mdW5jdGlvbiBlKHQpe3ZhciByPW5ldyBYdCh0KSxuPUd0KFh0LnByb3RvdHlwZS5yZXF1ZXN0LHIpO3JldHVybiBWdC5leHRlbmQobixYdC5wcm90b3R5cGUsciksVnQuZXh0ZW5kKG4sciksbi5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUoJHQodCxyKSl9LG59KHl0KTtadC5BeGlvcz1YdCxadC5DYW5jZWw9UWUsWnQuQ2FuY2VsVG9rZW49enQsWnQuaXNDYW5jZWw9a3QsWnQuVkVSU0lPTj1QdCxadC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSxadC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSxadC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIFl0LmlzT2JqZWN0KGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfSxHLmV4cG9ydHM9WnQsRy5leHBvcnRzLmRlZmF1bHQ9WnQ7dmFyIFF0LGVyPUcuZXhwb3J0czt2YXIgdHI9UXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHMoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihyPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxuPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLmFwcGVuZChlLHJbZV0pfSkpLGUuZGF0YT1uKSxRdC5pc0hhbmRsZXJFbmFibGVkJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayhlKSx0LmFicnVwdCgicmV0dXJuIixlKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImVycm9ySGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhyb3cgUXQuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiZ0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJzdWNjZXNzSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFF0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJnRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpRdC5pc0hhbmRsZXJFbmFibGVkPWUsdGhpcy5hdHRhY2hUb2tlbj10O2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZW5hYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtRdC5pc0hhbmRsZXJFbmFibGVkPSEwfX0se2tleToiZGlzYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7UXQuaXNIYW5kbGVyRW5hYmxlZD0hMX19LHtrZXk6ImRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlF0LkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ7UXQuaXNIYW5kbGVyRW5hYmxlZD0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe1F0LmlzSGFuZGxlckVuYWJsZWQ9ITB9KSxlKX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1lfX1dLFt7a2V5OiJnZXRJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmF4aW9zSW5zdGFuY2V8fCh0aGlzLmF4aW9zSW5zdGFuY2U9ZXIuY3JlYXRlKHt3aXRoQ3JlZGVudGlhbHM6ITB9KSx0aGlzLmNsaWVudEluc3RhbmNlfHwodGhpcy5jbGllbnRJbnN0YW5jZT1uZXcgUXQpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBfKGUsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuY2xpZW50SW5zdGFuY2UucmVxdWVzdEhhbmRsZXIodCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5zdWNjZXNzSGFuZGxlcih0KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5lcnJvckhhbmRsZXIodCl9KSksdGhpcy5heGlvc0luc3RhbmNlLmFsbD1lci5hbGwsdGhpcy5heGlvc0luc3RhbmNlLnNwcmVhZD1lci5zcHJlYWQsdGhpcy5heGlvc0luc3RhbmNlLmluaXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5pbml0LHRoaXMuYXhpb3NJbnN0YW5jZS5lbmFibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZW5hYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dD10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQsdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayksdGhpcy5heGlvc0luc3RhbmNlfX1dKSxlfSgpO3RyLkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ9MWUzLHRyPVF0PWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciBpLG89YXJndW1lbnRzLmxlbmd0aCxzPW88Mz90Om51bGw9PT1hP2E9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOmE7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0PyJ1bmRlZmluZWQiOnIoUmVmbGVjdCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LG4sYSk7ZWxzZSBmb3IodmFyIHU9ZS5sZW5ndGgtMTt1Pj0wO3UtLSkoaT1lW3VdKSYmKHM9KG88Mz9pKHMpOm8+Mz9pKHQsbixzKTppKHQsbikpfHxzKTtyZXR1cm4gbz4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHMpLHN9KFtmdW5jdGlvbihlKXt9XSx0cik7dmFyIHJyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKSx0aGlzLl9kYXRhPW5ldyBNYXB9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuc2V0KGUsdCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG51bGwhPT0ocj1udWxsPT09KHQ9dGhpcy5fZGF0YSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0KGUpKSYmdm9pZCAwIT09cj9yOiJ7fSIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLmRlbGV0ZShlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxucj1bXSxhcj1bXSxpcj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvcj0hMTtmdW5jdGlvbiBzcigpe29yPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCluclt0XT1lW3RdLGFyW2UuY2hhckNvZGVBdCh0KV09dDthclsiLSIuY2hhckNvZGVBdCgwKV09NjIsYXJbIl8iLmNoYXJDb2RlQXQoMCldPTYzfWZ1bmN0aW9uIHVyKGUsdCxyKXtmb3IodmFyIG4sYSxpPVtdLG89dDtvPHI7bys9MyluPShlW29dPDwxNikrKGVbbysxXTw8OCkrZVtvKzJdLGkucHVzaChuclsoYT1uKT4+MTgmNjNdK25yW2E+PjEyJjYzXStuclthPj42JjYzXStucls2MyZhXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gY3IoZSl7dmFyIHQ7b3J8fHNyKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLGE9IiIsaT1bXSxvPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9bylpLnB1c2godXIoZSxzLHMrbz51P3U6cytvKSk7cmV0dXJuIDE9PT1uPyh0PWVbci0xXSxhKz1uclt0Pj4yXSxhKz1uclt0PDw0JjYzXSxhKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLGErPW5yW3Q+PjEwXSxhKz1uclt0Pj40JjYzXSxhKz1uclt0PDwyJjYzXSxhKz0iPSIpLGkucHVzaChhKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIGZyKGUsdCxyLG4sYSl7dmFyIGksbyxzPTgqYS1uLTEsdT0oMTw8cyktMSxjPXU+PjEsZj0tNyxsPXI/YS0xOjAsaD1yPy0xOjEscD1lW3QrbF07Zm9yKGwrPWgsaT1wJigxPDwtZiktMSxwPj49LWYsZis9cztmPjA7aT0yNTYqaStlW3QrbF0sbCs9aCxmLT04KTtmb3Iobz1pJigxPDwtZiktMSxpPj49LWYsZis9bjtmPjA7bz0yNTYqbytlW3QrbF0sbCs9aCxmLT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT11KXJldHVybiBvP05hTjoxLzAqKHA/LTE6MSk7bys9TWF0aC5wb3coMixuKSxpLT1jfXJldHVybihwPy0xOjEpKm8qTWF0aC5wb3coMixpLW4pfWZ1bmN0aW9uIGxyKGUsdCxyLG4sYSxpKXt2YXIgbyxzLHUsYz04KmktYS0xLGY9KDE8PGMpLTEsbD1mPj4xLGg9MjM9PT1hP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDppLTEsZD1uPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLG89Zik6KG89TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoodT1NYXRoLnBvdygyLC1vKSk8MSYmKG8tLSx1Kj0yKSwodCs9bytsPj0xP2gvdTpoKk1hdGgucG93KDIsMS1sKSkqdT49MiYmKG8rKyx1Lz0yKSxvK2w+PWY/KHM9MCxvPWYpOm8rbD49MT8ocz0odCp1LTEpKk1hdGgucG93KDIsYSksbys9bCk6KHM9dCpNYXRoLnBvdygyLGwtMSkqTWF0aC5wb3coMixhKSxvPTApKTthPj04O2VbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixhLT04KTtmb3Iobz1vPDxhfHMsYys9YTtjPjA7ZVtyK3BdPTI1NSZvLHArPWQsby89MjU2LGMtPTgpO2VbcitwLWRdfD0xMjgqdn12YXIgaHI9e30udG9TdHJpbmcscHI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09aHIuY2FsbChlKX07bXIuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDA9PT1wZS5UWVBFRF9BUlJBWV9TVVBQT1JUfHxwZS5UWVBFRF9BUlJBWV9TVVBQT1JUO3ZhciBkcj12cigpO2Z1bmN0aW9uIHZyKCl7cmV0dXJuIG1yLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIGdyKGUsdCl7aWYodnIoKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189bXIucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IG1yKHQpKSxlLmxlbmd0aD10KSxlfWZ1bmN0aW9uIG1yKGUsdCxyKXtpZighKG1yLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBtcikpcmV0dXJuIG5ldyBtcihlLHQscik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiB3cih0aGlzLGUpfXJldHVybiB5cih0aGlzLGUsdCxyKX1mdW5jdGlvbiB5cihlLHQscixuKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpO3Q9dm9pZCAwPT09ciYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQscik6bmV3IFVpbnQ4QXJyYXkodCxyLG4pO21yLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9dCkuX19wcm90b19fPW1yLnByb3RvdHlwZTplPWtyKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIW1yLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHx4cih0LHIpLGE9KGU9Z3IoZSxuKSkud3JpdGUodCxyKTthIT09biYmKGU9ZS5zbGljZSgwLGEpKTtyZXR1cm4gZX0oZSx0LHIpOmZ1bmN0aW9uKGUsdCl7aWYoX3IodCkpe3ZhciByPTB8UnIodC5sZW5ndGgpO3JldHVybiAwPT09KGU9Z3IoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uP2dyKGUsMCk6a3IoZSx0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmcHIodC5kYXRhKSlyZXR1cm4ga3IoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX0oZSx0KX1mdW5jdGlvbiBicihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIHdyKGUsdCl7aWYoYnIodCksZT1ncihlLHQ8MD8wOjB8UnIodCkpLCFtci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIGtyKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8UnIodC5sZW5ndGgpO2U9Z3IoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIFJyKGUpe2lmKGU+PXZyKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK3ZyKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIF9yKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiB4cihlLHQpe2lmKF9yKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiAkcihlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIFpyKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuICRyKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIFNyKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIE5yKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBMcih0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIGpyKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBxcih0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBIcih0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBLcih0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBFcihlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIFRyKGUsdCxyLG4sYSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9YT8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKGEpcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighYSlyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1tci5mcm9tKHQsbikpLF9yKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6QXIoZSx0LHIsbixhKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9hP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6QXIoZSxbdF0scixuLGEpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIEFyKGUsdCxyLG4sYSl7dmFyIGksbz0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO289MixzLz0yLHUvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1vP2VbdF06ZS5yZWFkVUludDE2QkUodCpvKX1pZihhKXt2YXIgZj0tMTtmb3IoaT1yO2k8cztpKyspaWYoYyhlLGkpPT09Yyh0LC0xPT09Zj8wOmktZikpe2lmKC0xPT09ZiYmKGY9aSksaS1mKzE9PT11KXJldHVybiBmKm99ZWxzZS0xIT09ZiYmKGktPWktZiksZj0tMX1lbHNlIGZvcihyK3U+cyYmKHI9cy11KSxpPXI7aT49MDtpLS0pe2Zvcih2YXIgbD0hMCxoPTA7aDx1O2grKylpZihjKGUsaStoKSE9PWModCxoKSl7bD0hMTticmVha31pZihsKXJldHVybiBpfXJldHVybi0xfWZ1bmN0aW9uIENyKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBhPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmEmJihuPWEpOm49YTt2YXIgaT10Lmxlbmd0aDtpZihpJTIhPTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5pLzImJihuPWkvMik7Zm9yKHZhciBvPTA7bzxuOysrbyl7dmFyIHM9cGFyc2VJbnQodC5zdWJzdHIoMipvLDIpLDE2KTtpZihpc05hTihzKSlyZXR1cm4gbztlW3Irb109c31yZXR1cm4gb31mdW5jdGlvbiBQcihlLHQscixuKXtyZXR1cm4gUXIoJHIodCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gT3IoZSx0LHIsbil7cmV0dXJuIFFyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQocikpO3JldHVybiB0fSh0KSxlLHIsbil9ZnVuY3Rpb24gRHIoZSx0LHIsbil7cmV0dXJuIE9yKGUsdCxyLG4pfWZ1bmN0aW9uIElyKGUsdCxyLG4pe3JldHVybiBRcihacih0KSxlLHIsbil9ZnVuY3Rpb24gVXIoZSx0LHIsbil7cmV0dXJuIFFyKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sYSxpPVtdLG89MDtvPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK28pbj0ocj1lLmNoYXJDb2RlQXQobykpPj44LGE9ciUyNTYsaS5wdXNoKGEpLGkucHVzaChuKTtyZXR1cm4gaX0odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gSHIoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP2NyKGUpOmNyKGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gTHIoZSx0LHIpe3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGE9dDthPHI7KXt2YXIgaSxvLHMsdSxjPWVbYV0sZj1udWxsLGw9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihhK2w8PXIpc3dpdGNoKGwpe2Nhc2UgMTpjPDEyOCYmKGY9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoaT1lW2ErMV0pKSYmKHU9KDMxJmMpPDw2fDYzJmkpPjEyNyYmKGY9dSk7YnJlYWs7Y2FzZSAzOmk9ZVthKzFdLG89ZVthKzJdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJm8pJiYodT0oMTUmYyk8PDEyfCg2MyZpKTw8Nnw2MyZvKT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihmPXUpO2JyZWFrO2Nhc2UgNDppPWVbYSsxXSxvPWVbYSsyXSxzPWVbYSszXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZvKSYmMTI4PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZpKTw8MTJ8KDYzJm8pPDw2fDYzJnMpPjY1NTM1JiZ1PDExMTQxMTImJihmPXUpfW51bGw9PT1mPyhmPTY1NTMzLGw9MSk6Zj42NTUzNSYmKGYtPTY1NTM2LG4ucHVzaChmPj4+MTAmMTAyM3w1NTI5NiksZj01NjMyMHwxMDIzJmYpLG4ucHVzaChmKSxhKz1sfXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD1NcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7dmFyIHI9IiIsbj0wO2Zvcig7bjx0OylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKG4sbis9TXIpKTtyZXR1cm4gcn0obil9bXIucG9vbFNpemU9ODE5Mixtci5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX189bXIucHJvdG90eXBlLGV9LG1yLmZyb209ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB5cihudWxsLGUsdCxyKX0sbXIuVFlQRURfQVJSQVlfU1VQUE9SVCYmKG1yLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsbXIuX19wcm90b19fPVVpbnQ4QXJyYXkpLG1yLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGJyKHQpLHQ8PTA/Z3IoZSx0KTp2b2lkIDAhPT1yPyJzdHJpbmciPT10eXBlb2Ygbj9ncihlLHQpLmZpbGwocixuKTpncihlLHQpLmZpbGwocik6Z3IoZSx0KX0obnVsbCxlLHQscil9LG1yLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiB3cihudWxsLGUpfSxtci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIHdyKG51bGwsZSl9LG1yLmlzQnVmZmVyPWVuLG1yLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZighX3IoZSl8fCFfcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciByPWUubGVuZ3RoLG49dC5sZW5ndGgsYT0wLGk9TWF0aC5taW4ocixuKTthPGk7KythKWlmKGVbYV0hPT10W2FdKXtyPWVbYV0sbj10W2FdO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sbXIuaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sbXIuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoIXByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG1yLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49bXIuYWxsb2NVbnNhZmUodCksYT0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBpPWVbcl07aWYoIV9yKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpLmNvcHkobixhKSxhKz1pLmxlbmd0aH1yZXR1cm4gbn0sbXIuYnl0ZUxlbmd0aD14cixtci5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLG1yLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTIpRXIodGhpcyx0LHQrMSk7cmV0dXJuIHRoaXN9LG1yLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTQpRXIodGhpcyx0LHQrMyksRXIodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sbXIucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClFcih0aGlzLHQsdCs3KSxFcih0aGlzLHQrMSx0KzYpLEVyKHRoaXMsdCsyLHQrNSksRXIodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sbXIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/THIodGhpcywwLGUpOlNyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbXIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighX3IoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09ZXx8MD09PW1yLmNvbXBhcmUodGhpcyxlKX0sbXIucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZygiaGV4IiwwLDUwKS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+NTAmJihlKz0iIC4uLiAiKSksIjxCdWZmZXIgIitlKyI+In0sbXIucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LHIsbixhKXtpZighX3IoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PXImJihyPWU/ZS5sZW5ndGg6MCksdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09YSYmKGE9dGhpcy5sZW5ndGgpLHQ8MHx8cj5lLmxlbmd0aHx8bjwwfHxhPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPj1hJiZ0Pj1yKXJldHVybiAwO2lmKG4+PWEpcmV0dXJuLTE7aWYodD49cilyZXR1cm4gMTtpZih0aGlzPT09ZSlyZXR1cm4gMDtmb3IodmFyIGk9KGE+Pj49MCktKG4+Pj49MCksbz0ocj4+Pj0wKS0odD4+Pj0wKSxzPU1hdGgubWluKGksbyksdT10aGlzLnNsaWNlKG4sYSksYz1lLnNsaWNlKHQsciksZj0wO2Y8czsrK2YpaWYodVtmXSE9PWNbZl0pe2k9dVtmXSxvPWNbZl07YnJlYWt9cmV0dXJuIGk8bz8tMTpvPGk/MTowfSxtci5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sbXIucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBUcih0aGlzLGUsdCxyLCEwKX0sbXIucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVHIodGhpcyxlLHQsciwhMSl9LG1yLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgYT10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPmEpJiYocj1hKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gQ3IodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gUHIodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIE9yKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIERyKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gSXIodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBVcih0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxtci5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgTXI9NDA5NjtmdW5jdGlvbiBqcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmVbYV0pO3JldHVybiBufWZ1bmN0aW9uIHFyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZShlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBOcihlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBhPSIiLGk9dDtpPHI7KytpKWErPVhyKGVbaV0pO3JldHVybiBhfWZ1bmN0aW9uIEtyKGUsdCxyKXtmb3IodmFyIG49ZS5zbGljZSh0LHIpLGE9IiIsaT0wO2k8bi5sZW5ndGg7aSs9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5baV0rMjU2Km5baSsxXSk7cmV0dXJuIGF9ZnVuY3Rpb24gQnIoZSx0LHIpe2lmKGUlMSE9MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihlK3Q+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIEZyKGUsdCxyLG4sYSxpKXtpZighX3IoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHQ+YXx8dDxpKXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIEpyKGUsdCxyLG4pe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGE9MCxpPU1hdGgubWluKGUubGVuZ3RoLXIsMik7YTxpOysrYSllW3IrYV09KHQmMjU1PDw4KihuP2E6MS1hKSk+Pj44KihuP2E6MS1hKX1mdW5jdGlvbiBXcihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGE9MCxpPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7YTxpOysrYSllW3IrYV09dD4+PjgqKG4/YTozLWEpJjI1NX1mdW5jdGlvbiB6cihlLHQscixuLGEsaSl7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIFlyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fHpyKGUsMCxyLDQpLGxyKGUsdCxyLG4sMjMsNCkscis0fWZ1bmN0aW9uIFZyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fHpyKGUsMCxyLDgpLGxyKGUsdCxyLG4sNTIsOCkscis4fW1yLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5sZW5ndGg7aWYoKGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPW1yLnByb3RvdHlwZTtlbHNle3ZhciBhPXQtZTtyPW5ldyBtcihhLHZvaWQgMCk7Zm9yKHZhciBpPTA7aTxhOysraSlyW2ldPXRoaXNbaStlXX1yZXR1cm4gcn0sbXIucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxCcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxpPTA7KytpPHQmJihhKj0yNTYpOyluKz10aGlzW2UraV0qYTtyZXR1cm4gbn0sbXIucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxCcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxhPTE7dD4wJiYoYSo9MjU2KTspbis9dGhpc1tlKy0tdF0qYTtyZXR1cm4gbn0sbXIucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LG1yLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0sbXIucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxtci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0sbXIucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LG1yLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxCcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxpPTA7KytpPHQmJihhKj0yNTYpOyluKz10aGlzW2UraV0qYTtyZXR1cm4gbj49KGEqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LG1yLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxCcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10LGE9MSxpPXRoaXNbZSstLW5dO24+MCYmKGEqPTI1Nik7KWkrPXRoaXNbZSstLW5dKmE7cmV0dXJuIGk+PShhKj0xMjgpJiYoaS09TWF0aC5wb3coMiw4KnQpKSxpfSxtci5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sbXIucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8QnIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sbXIucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8QnIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sbXIucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxtci5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8QnIoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LG1yLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxCcihlLDQsdGhpcy5sZW5ndGgpLGZyKHRoaXMsZSwhMCwyMyw0KX0sbXIucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsNCx0aGlzLmxlbmd0aCksZnIodGhpcyxlLCExLDIzLDQpfSxtci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsOCx0aGlzLmxlbmd0aCksZnIodGhpcyxlLCEwLDUyLDgpfSxtci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEJyKGUsOCx0aGlzLmxlbmd0aCksZnIodGhpcyxlLCExLDUyLDgpfSxtci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxGcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPTEsaT0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYoYSo9MjU2KTspdGhpc1t0K2ldPWUvYSYyNTU7cmV0dXJuIHQrcn0sbXIucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8RnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT1yLTEsaT0xO2Zvcih0aGlzW3QrYV09MjU1JmU7LS1hPj0wJiYoaSo9MjU2KTspdGhpc1t0K2FdPWUvaSYyNTU7cmV0dXJuIHQrcn0sbXIucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8RnIodGhpcyxlLHQsMSwyNTUsMCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LG1yLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDIsNjU1MzUsMCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkpyKHRoaXMsZSx0LCEwKSx0KzJ9LG1yLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDIsNjU1MzUsMCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkpyKHRoaXMsZSx0LCExKSx0KzJ9LG1yLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOldyKHRoaXMsZSx0LCEwKSx0KzR9LG1yLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOldyKHRoaXMsZSx0LCExKSx0KzR9LG1yLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7RnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBpPTAsbz0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKG8qPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraS0xXSYmKHM9MSksdGhpc1t0K2ldPShlL28+PjApLXMmMjU1O3JldHVybiB0K3J9LG1yLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7RnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBpPXItMSxvPTEscz0wO2Zvcih0aGlzW3QraV09MjU1JmU7LS1pPj0wJiYobyo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpKzFdJiYocz0xKSx0aGlzW3QraV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrcn0sbXIucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCwxLDEyNywtMTI4KSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxtci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEZyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6SnIodGhpcyxlLHQsITApLHQrMn0sbXIucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxGcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksbXIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkpyKHRoaXMsZSx0LCExKSx0KzJ9LG1yLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8RnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOldyKHRoaXMsZSx0LCEwKSx0KzR9LG1yLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8RnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSxtci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOldyKHRoaXMsZSx0LCExKSx0KzR9LG1yLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBZcih0aGlzLGUsdCwhMCxyKX0sbXIucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFlyKHRoaXMsZSx0LCExLHIpfSxtci5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCEwLHIpfSxtci5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCExLHIpfSxtci5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8bi1yJiYobj1lLmxlbmd0aC10K3IpO3ZhciBhLGk9bi1yO2lmKHRoaXM9PT1lJiZyPHQmJnQ8bilmb3IoYT1pLTE7YT49MDstLWEpZVthK3RdPXRoaXNbYStyXTtlbHNlIGlmKGk8MWUzfHwhbXIuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoYT0wO2E8aTsrK2EpZVthK3RdPXRoaXNbYStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIraSksdCk7cmV0dXJuIGl9LG1yLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBhPWUuY2hhckNvZGVBdCgwKTthPDI1NiYmKGU9YSl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFtci5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD10KXJldHVybiB0aGlzO3ZhciBpO2lmKHQ+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsZXx8KGU9MCksIm51bWJlciI9PXR5cGVvZiBlKWZvcihpPXQ7aTxyOysraSl0aGlzW2ldPWU7ZWxzZXt2YXIgbz1fcihlKT9lOiRyKG5ldyBtcihlLG4pLnRvU3RyaW5nKCkpLHM9by5sZW5ndGg7Zm9yKGk9MDtpPHItdDsrK2kpdGhpc1tpK3RdPW9baSVzXX1yZXR1cm4gdGhpc307dmFyIEdyPS9bXitcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIFhyKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiAkcihlLHQpe3ZhciByO3Q9dHx8MS8wO2Zvcih2YXIgbj1lLmxlbmd0aCxhPW51bGwsaT1bXSxvPTA7bzxuOysrbyl7aWYoKHI9ZS5jaGFyQ29kZUF0KG8pKT41NTI5NSYmcjw1NzM0NCl7aWYoIWEpe2lmKHI+NTYzMTkpeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihvKzE9PT1uKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9YT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KSxhPXI7Y29udGludWV9cj02NTUzNisoYS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBhJiYodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7aWYoYT1udWxsLHI8MTI4KXtpZigodC09MSk8MClicmVhaztpLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO2kucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigodC09Myk8MClicmVhaztpLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKCh0LT00KTwwKWJyZWFrO2kucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIGl9ZnVuY3Rpb24gWnIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGksbztvcnx8c3IoKTt2YXIgcz1lLmxlbmd0aDtpZihzJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTtpPSI9Ij09PWVbcy0yXT8yOiI9Ij09PWVbcy0xXT8xOjAsbz1uZXcgaXIoMypzLzQtaSksbj1pPjA/cy00OnM7dmFyIHU9MDtmb3IodD0wLHI9MDt0PG47dCs9NCxyKz0zKWE9YXJbZS5jaGFyQ29kZUF0KHQpXTw8MTh8YXJbZS5jaGFyQ29kZUF0KHQrMSldPDwxMnxhcltlLmNoYXJDb2RlQXQodCsyKV08PDZ8YXJbZS5jaGFyQ29kZUF0KHQrMyldLG9bdSsrXT1hPj4xNiYyNTUsb1t1KytdPWE+PjgmMjU1LG9bdSsrXT0yNTUmYTtyZXR1cm4gMj09PWk/KGE9YXJbZS5jaGFyQ29kZUF0KHQpXTw8MnxhcltlLmNoYXJDb2RlQXQodCsxKV0+PjQsb1t1KytdPTI1NSZhKToxPT09aSYmKGE9YXJbZS5jaGFyQ29kZUF0KHQpXTw8MTB8YXJbZS5jaGFyQ29kZUF0KHQrMSldPDw0fGFyW2UuY2hhckNvZGVBdCh0KzIpXT4+MixvW3UrK109YT4+OCYyNTUsb1t1KytdPTI1NSZhKSxvfShmdW5jdGlvbihlKXtpZigoZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfShlKS5yZXBsYWNlKEdyLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtlLmxlbmd0aCU0IT0wOyllKz0iPSI7cmV0dXJuIGV9KGUpKX1mdW5jdGlvbiBRcihlLHQscixuKXtmb3IodmFyIGE9MDthPG4mJiEoYStyPj10Lmxlbmd0aHx8YT49ZS5sZW5ndGgpOysrYSl0W2Ercl09ZVthXTtyZXR1cm4gYX1mdW5jdGlvbiBlbihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fHRuKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJnRuKGUuc2xpY2UoMCwwKSl9KGUpKX1mdW5jdGlvbiB0bihlKXtyZXR1cm4hIWUuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfXZhciBybj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxCdWZmZXI6bXIsSU5TUEVDVF9NQVhfQllURVM6NTAsU2xvd0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4rZSE9ZSYmKGU9MCksbXIuYWxsb2MoK2UpfSxpc0J1ZmZlcjplbixrTWF4TGVuZ3RoOmRyfSksbm49e2V4cG9ydHM6e319LGFuPXt9LG9uPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShvbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksb24uZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxyPXQlNDtpZighcilyZXR1cm4gZTt2YXIgbj10LGE9NC1yLGk9dCthLG89bXIuYWxsb2MoaSk7Zm9yKG8ud3JpdGUoZSk7YS0tOylvLndyaXRlKCI9IixuKyspO3JldHVybiBvLnRvU3RyaW5nKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHNuPW9uO2Z1bmN0aW9uIHVuKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksbXIuaXNCdWZmZXIoZSk/Zm4oZS50b1N0cmluZygiYmFzZTY0IikpOmZuKG1yLmZyb20oZSx0KS50b1N0cmluZygiYmFzZTY0IikpfWZ1bmN0aW9uIGNuKGUpe3JldHVybiBlPWUudG9TdHJpbmcoKSxzbi5kZWZhdWx0KGUpLnJlcGxhY2UoL1wtL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKX1mdW5jdGlvbiBmbihlKXtyZXR1cm4gZS5yZXBsYWNlKC89L2csIiIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIil9dmFyIGxuLGhuPXVuO2huLmVuY29kZT11bixobi5kZWNvZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxtci5mcm9tKGNuKGUpLCJiYXNlNjQiKS50b1N0cmluZyh0KX0saG4udG9CYXNlNjQ9Y24saG4uZnJvbUJhc2U2ND1mbixobi50b0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gbXIuZnJvbShjbihlKSwiYmFzZTY0Iil9LGFuLmRlZmF1bHQ9aG4sKGxuPW5uKS5leHBvcnRzPWFuLmRlZmF1bHQsbG4uZXhwb3J0cy5kZWZhdWx0PWxuLmV4cG9ydHM7dmFyIHBuPW5uLmV4cG9ydHMsZG49e2V4cG9ydHM6e319OyFmdW5jdGlvbihlKXshZnVuY3Rpb24odCxyKXt2YXIgbj17fTshZnVuY3Rpb24oZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGlnZXN0TGVuZ3RoPTMyLGUuYmxvY2tTaXplPTY0O3ZhciB0PW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7ZnVuY3Rpb24gcihlLHIsbixhLGkpe2Zvcih2YXIgbyxzLHUsYyxmLGwsaCxwLGQsdixnLG0seTtpPj02NDspe2ZvcihvPXJbMF0scz1yWzFdLHU9clsyXSxjPXJbM10sZj1yWzRdLGw9cls1XSxoPXJbNl0scD1yWzddLHY9MDt2PDE2O3YrKylnPWErNCp2LGVbdl09KDI1NSZuW2ddKTw8MjR8KDI1NSZuW2crMV0pPDwxNnwoMjU1Jm5bZysyXSk8PDh8MjU1Jm5bZyszXTtmb3Iodj0xNjt2PDY0O3YrKyltPSgoZD1lW3YtMl0pPj4+MTd8ZDw8MTUpXihkPj4+MTl8ZDw8MTMpXmQ+Pj4xMCx5PSgoZD1lW3YtMTVdKT4+Pjd8ZDw8MjUpXihkPj4+MTh8ZDw8MTQpXmQ+Pj4zLGVbdl09KG0rZVt2LTddfDApKyh5K2Vbdi0xNl18MCk7Zm9yKHY9MDt2PDY0O3YrKyltPSgoKGY+Pj42fGY8PDI2KV4oZj4+PjExfGY8PDIxKV4oZj4+PjI1fGY8PDcpKSsoZiZsXn5mJmgpfDApKyhwKyh0W3ZdK2Vbdl18MCl8MCl8MCx5PSgobz4+PjJ8bzw8MzApXihvPj4+MTN8bzw8MTkpXihvPj4+MjJ8bzw8MTApKSsobyZzXm8mdV5zJnUpfDAscD1oLGg9bCxsPWYsZj1jK218MCxjPXUsdT1zLHM9byxvPW0reXwwO3JbMF0rPW8sclsxXSs9cyxyWzJdKz11LHJbM10rPWMscls0XSs9ZixyWzVdKz1sLHJbNl0rPWgscls3XSs9cCxhKz02NCxpLT02NH1yZXR1cm4gYX12YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpZ2VzdExlbmd0aD1lLmRpZ2VzdExlbmd0aCx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZSx0aGlzLnN0YXRlPW5ldyBJbnQzMkFycmF5KDgpLHRoaXMudGVtcD1uZXcgSW50MzJBcnJheSg2NCksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTI4KSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXMucmVzZXQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZVswXT0xNzc5MDMzNzAzLHRoaXMuc3RhdGVbMV09MzE0NDEzNDI3Nyx0aGlzLnN0YXRlWzJdPTEwMTM5MDQyNDIsdGhpcy5zdGF0ZVszXT0yNzczNDgwNzYyLHRoaXMuc3RhdGVbNF09MTM1OTg5MzExOSx0aGlzLnN0YXRlWzVdPTI2MDA4MjI5MjQsdGhpcy5zdGF0ZVs2XT01Mjg3MzQ2MzUsdGhpcy5zdGF0ZVs3XT0xNTQxNDU5MjI1LHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpc30sdC5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuYnVmZmVyLmxlbmd0aDtlKyspdGhpcy5idWZmZXJbZV09MDtmb3IoZT0wO2U8dGhpcy50ZW1wLmxlbmd0aDtlKyspdGhpcy50ZW1wW2VdPTA7dGhpcy5yZXNldCgpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD1lLmxlbmd0aCksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoIlNIQTI1NjogY2FuJ3QgdXBkYXRlIGJlY2F1c2UgaGFzaCB3YXMgZmluaXNoZWQuIik7dmFyIG49MDtpZih0aGlzLmJ5dGVzSGFzaGVkKz10LHRoaXMuYnVmZmVyTGVuZ3RoPjApe2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8NjQmJnQ+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTs2ND09PXRoaXMuYnVmZmVyTGVuZ3RoJiYocih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLDY0KSx0aGlzLmJ1ZmZlckxlbmd0aD0wKX1mb3IodD49NjQmJihuPXIodGhpcy50ZW1wLHRoaXMuc3RhdGUsZSxuLHQpLHQlPTY0KTt0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtpZighdGhpcy5maW5pc2hlZCl7dmFyIHQ9dGhpcy5ieXRlc0hhc2hlZCxuPXRoaXMuYnVmZmVyTGVuZ3RoLGE9dC81MzY4NzA5MTJ8MCxpPXQ8PDMsbz10JTY0PDU2PzY0OjEyODt0aGlzLmJ1ZmZlcltuXT0xMjg7Zm9yKHZhciBzPW4rMTtzPG8tODtzKyspdGhpcy5idWZmZXJbc109MDt0aGlzLmJ1ZmZlcltvLThdPWE+Pj4yNCYyNTUsdGhpcy5idWZmZXJbby03XT1hPj4+MTYmMjU1LHRoaXMuYnVmZmVyW28tNl09YT4+PjgmMjU1LHRoaXMuYnVmZmVyW28tNV09YT4+PjAmMjU1LHRoaXMuYnVmZmVyW28tNF09aT4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltvLTNdPWk+Pj4xNiYyNTUsdGhpcy5idWZmZXJbby0yXT1pPj4+OCYyNTUsdGhpcy5idWZmZXJbby0xXT1pPj4+MCYyNTUscih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLG8pLHRoaXMuZmluaXNoZWQ9ITB9Zm9yKHM9MDtzPDg7cysrKWVbNCpzKzBdPXRoaXMuc3RhdGVbc10+Pj4yNCYyNTUsZVs0KnMrMV09dGhpcy5zdGF0ZVtzXT4+PjE2JjI1NSxlWzQqcysyXT10aGlzLnN0YXRlW3NdPj4+OCYyNTUsZVs0KnMrM109dGhpcy5zdGF0ZVtzXT4+PjAmMjU1O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LHQucHJvdG90eXBlLl9zYXZlU3RhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLnN0YXRlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0YXRlW3RdfSx0LnByb3RvdHlwZS5fcmVzdG9yZVN0YXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx0aGlzLnN0YXRlLmxlbmd0aDtyKyspdGhpcy5zdGF0ZVtyXT1lW3JdO3RoaXMuYnl0ZXNIYXNoZWQ9dCx0aGlzLmZpbmlzaGVkPSExLHRoaXMuYnVmZmVyTGVuZ3RoPTB9LHR9KCk7ZS5IYXNoPW47dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuaW5uZXI9bmV3IG4sdGhpcy5vdXRlcj1uZXcgbix0aGlzLmJsb2NrU2l6ZT10aGlzLmlubmVyLmJsb2NrU2l6ZSx0aGlzLmRpZ2VzdExlbmd0aD10aGlzLmlubmVyLmRpZ2VzdExlbmd0aDt2YXIgdD1uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk7aWYoZS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpKG5ldyBuKS51cGRhdGUoZSkuZmluaXNoKHQpLmNsZWFuKCk7ZWxzZSBmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj01NDt0aGlzLmlubmVyLnVwZGF0ZSh0KTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTEwNjt0aGlzLm91dGVyLnVwZGF0ZSh0KSx0aGlzLmlzdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5vc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMuaW5uZXIuX3NhdmVTdGF0ZSh0aGlzLmlzdGF0ZSksdGhpcy5vdXRlci5fc2F2ZVN0YXRlKHRoaXMub3N0YXRlKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl09MH1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5lci5fcmVzdG9yZVN0YXRlKHRoaXMuaXN0YXRlLHRoaXMuaW5uZXIuYmxvY2tTaXplKSx0aGlzLm91dGVyLl9yZXN0b3JlU3RhdGUodGhpcy5vc3RhdGUsdGhpcy5vdXRlci5ibG9ja1NpemUpLHRoaXN9LGUucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmlzdGF0ZS5sZW5ndGg7ZSsrKXRoaXMub3N0YXRlW2VdPXRoaXMuaXN0YXRlW2VdPTA7dGhpcy5pbm5lci5jbGVhbigpLHRoaXMub3V0ZXIuY2xlYW4oKX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlKSx0aGlzfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3V0ZXIuZmluaXNoZWQ/dGhpcy5vdXRlci5maW5pc2goZSk6KHRoaXMuaW5uZXIuZmluaXNoKGUpLHRoaXMub3V0ZXIudXBkYXRlKGUsdGhpcy5kaWdlc3RMZW5ndGgpLmZpbmlzaChlKSksdGhpc30sZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSxlfSgpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9KG5ldyBuKS51cGRhdGUoZSkscj10LmRpZ2VzdCgpO3JldHVybiB0LmNsZWFuKCkscn1mdW5jdGlvbiBvKGUsdCl7dmFyIHI9bmV3IGEoZSkudXBkYXRlKHQpLG49ci5kaWdlc3QoKTtyZXR1cm4gci5jbGVhbigpLG59ZnVuY3Rpb24gcyhlLHQscixuKXt2YXIgYT1uWzBdO2lmKDA9PT1hKXRocm93IG5ldyBFcnJvcigiaGtkZjogY2Fubm90IGV4cGFuZCBtb3JlIik7dC5yZXNldCgpLGE+MSYmdC51cGRhdGUoZSksciYmdC51cGRhdGUociksdC51cGRhdGUobiksdC5maW5pc2goZSksblswXSsrfWUuSE1BQz1hLGUuaGFzaD1pLGUuZGVmYXVsdD1pLGUuaG1hYz1vO3ZhciB1PW5ldyBVaW50OEFycmF5KGUuZGlnZXN0TGVuZ3RoKTtmdW5jdGlvbiBjKGUsdCxyLG4pe3ZvaWQgMD09PXQmJih0PXUpLHZvaWQgMD09PW4mJihuPTMyKTtmb3IodmFyIGk9bmV3IFVpbnQ4QXJyYXkoWzFdKSxjPW8odCxlKSxmPW5ldyBhKGMpLGw9bmV3IFVpbnQ4QXJyYXkoZi5kaWdlc3RMZW5ndGgpLGg9bC5sZW5ndGgscD1uZXcgVWludDhBcnJheShuKSxkPTA7ZDxuO2QrKyloPT09bC5sZW5ndGgmJihzKGwsZixyLGkpLGg9MCkscFtkXT1sW2grK107cmV0dXJuIGYuY2xlYW4oKSxsLmZpbGwoMCksaS5maWxsKDApLHB9ZnVuY3Rpb24gZihlLHQscixuKXtmb3IodmFyIGk9bmV3IGEoZSksbz1pLmRpZ2VzdExlbmd0aCxzPW5ldyBVaW50OEFycmF5KDQpLHU9bmV3IFVpbnQ4QXJyYXkobyksYz1uZXcgVWludDhBcnJheShvKSxmPW5ldyBVaW50OEFycmF5KG4pLGw9MDtsKm88bjtsKyspe3ZhciBoPWwrMTtzWzBdPWg+Pj4yNCYyNTUsc1sxXT1oPj4+MTYmMjU1LHNbMl09aD4+PjgmMjU1LHNbM109aD4+PjAmMjU1LGkucmVzZXQoKSxpLnVwZGF0ZSh0KSxpLnVwZGF0ZShzKSxpLmZpbmlzaChjKTtmb3IodmFyIHA9MDtwPG87cCsrKXVbcF09Y1twXTtmb3IocD0yO3A8PXI7cCsrKXtpLnJlc2V0KCksaS51cGRhdGUoYykuZmluaXNoKGMpO2Zvcih2YXIgZD0wO2Q8bztkKyspdVtkXV49Y1tkXX1mb3IocD0wO3A8byYmbCpvK3A8bjtwKyspZltsKm8rcF09dVtwXX1mb3IobD0wO2w8bztsKyspdVtsXT1jW2xdPTA7Zm9yKGw9MDtsPDQ7bCsrKXNbbF09MDtyZXR1cm4gaS5jbGVhbigpLGZ9ZS5oa2RmPWMsZS5wYmtkZjI9Zn0obik7dmFyIGE9bi5kZWZhdWx0O2Zvcih2YXIgaSBpbiBuKWFbaV09bltpXTtlLmV4cG9ydHM9YX0oKX0oZG4pO3ZhciB2bj1ZKGRuLmV4cG9ydHMpLGduPWNyeXB0bztmdW5jdGlvbiBtbihlKXt0cnl7cmV0dXJuIG51bGwhPWUmJiJib29sZWFuIj09dHlwZW9mIGUuZXh0cmFjdGFibGUmJiJzdHJpbmciPT10eXBlb2YgZS5hbGdvcml0aG0ubmFtZSYmInN0cmluZyI9PXR5cGVvZiBlLnR5cGV9Y2F0Y2goZSl7cmV0dXJuITF9fXZhciB5bj1uZXcgVGV4dEVuY29kZXIsYm49bmV3IFRleHREZWNvZGVyO2Z1bmN0aW9uIHduKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5sZW5ndGh9KSwwKSxhPW5ldyBVaW50OEFycmF5KG4pLGk9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXthLnNldChlLGkpLGkrPWUubGVuZ3RofSkpLGF9dmFyIGtuPWZ1bmN0aW9uKGUpe3ZhciB0PWU7dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJih0PWJuLmRlY29kZSh0KSksdD10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLnJlcGxhY2UoL1xzL2csIiIpO3RyeXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF0b2IoZSkuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckNvZGVBdCgwKX0pKSl9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LFJuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gaSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcix2KG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KGQoRXJyb3IpKSxfbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gaSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249byxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShSbikseG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIGkodGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249byxufXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KFJuKSxTbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KFJuKSxFbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oUm4pLFRuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oUm4pLEFuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oUm4pLENuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShSbiksUG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShSbiksT249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oUm4pLERuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShSbik7ZnVuY3Rpb24gSW4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBVbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09amUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gSG4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBMbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIE1uKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIGpuKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gcW4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgTm49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLG49YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShuPjE/bi0xOjApLGk9MTtpPG47aSsrKWFbaS0xXT1hcmd1bWVudHNbaV07aWYoYS5sZW5ndGg+Mil7dmFyIG89YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChvLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09cihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxLbj1mdW5jdGlvbihlKXtyZXR1cm4gbW4oZSl9LEJuPVsiQ3J5cHRvS2V5Il0sRm49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBpLG89UihhKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBzPWkudmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uIEpuKGUpe2lmKCJvYmplY3QiIT09cih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIG49ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pOyluPU9iamVjdC5nZXRQcm90b3R5cGVPZihuKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09bn12YXIgV249ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIHpuKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgRW4oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UoSW4oKXx8VW4oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgRW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBVbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgWW49ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIpe3ZhciBuLGEsaSxvLHMsdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKG89em4ocikscz1vLmFsZ29yaXRobSx1PW8ua2V5VXNhZ2VzLGM9W3MsbnVsbCE9PShhPXIuZXh0KSYmdm9pZCAwIT09YSYmYSxudWxsIT09KGk9ci5rZXlfb3BzKSYmdm9pZCAwIT09aT9pOnVdLCJQQktERjIiIT09cy5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGY9Z24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoZixbInJhdyIsa24oci5rKV0uY29uY2F0KGMpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUobD10KHt9LHIpKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKG49Z24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobixbImp3ayIsbF0uY29uY2F0KGMpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFZuKGUsdCxyKXtyZXR1cm4gR24uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIEduKCl7cmV0dXJuKEduPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoSm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihufHwobj1yLmFsZyksInN0cmluZyI9PXR5cGVvZiBuJiZuKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPXIua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLmsmJnIuayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9YXx8KGE9ITAhPT1yLmV4dCksIWEpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsWW4odCh0KHt9LHIpLHt9LHthbGc6bixleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGtuKHIuaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09ci5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgRW4oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFluKHQodCh7fSxyKSx7fSx7YWxnOm59KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IEVuKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgWG49ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFLbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoQm4pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEJuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighS24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKEJuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEJuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEJuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChCbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiAkbihlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBpO2k9dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIG8scz1SKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgdT1vLnZhbHVlO2lmKCFpLmhhcyh1KSl0aHJvdyBuZXcgRW4oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoaS5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgWm49ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIFFuKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKEluKCl8fFVuKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgRW4oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gZWEoZSx0LHIpe2lmKG1uKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBIbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKE1uKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBIbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBIbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihNbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgSG4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighTG4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBIbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKE1uKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBIbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgVW4oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgSG4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBJbigpJiYiRWREU0EiOmlmKCFMbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgSG4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBIbigiRUNEU0EiKTt2YXIgaT1qbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09aSl0aHJvdyBIbihpLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShvPjI/by0yOjApLHU9Mjt1PG87dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07cW4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEJuKSkpKTtyZXR1cm4gZ24uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihCbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIHRhPWZ1bmN0aW9uKCl7dmFyIGU9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LHIsbixhKXt2YXIgaSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLGVhKHQsciwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBpPWUuc2VudCxXbih0LGkpLG89UW4odCxpLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsZ24uc3VidGxlLnZlcmlmeShvLGksbixhKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHJhKGUsdCxyKXtyZXR1cm4gbmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG5hKCl7cmV0dXJuIG5hPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBpLG8scyx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoSm4ocikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1yLnByb3RlY3RlZHx8dm9pZCAwIT09ci5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBUbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PXIucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIHIucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgVG4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PXIucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IFRuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygci5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgVG4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09ci5oZWFkZXJ8fEpuKHIuaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBUbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYobz17fSwhci5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha31zPWtuKHIucHJvdGVjdGVkKSxlLnByZXY9MTUsbz1KU09OLnBhcnNlKGJuLmRlY29kZShzKSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IFRuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihGbihvLHIuaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBUbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYodT10KHQoe30sbyksci5oZWFkZXIpLGM9JG4oVG4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWE/dm9pZCAwOmEuY3JpdCxvLHUpLGY9ITAsIWMuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGY9by5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IFRuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihsPXUuYWxnKSYmbCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBUbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKGg9YSYmWm4oImFsZ29yaXRobXMiLGEuYWxnb3JpdGhtcykpfHxoLmhhcyhsKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyBTbignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWYpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBUbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWR8fHIucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgVG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYocD0hMSwiZnVuY3Rpb24iIT10eXBlb2Ygbil7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsbihvLHIpO2Nhc2UgNDg6bj1lLnNlbnQscD0hMDtjYXNlIDUwOnJldHVybiBYbihsLG4sInZlcmlmeSIpLGQ9d24oeW4uZW5jb2RlKG51bGwhPT0oaT1yLnByb3RlY3RlZCkmJnZvaWQgMCE9PWk/aToiIikseW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiByLnBheWxvYWQ/eW4uZW5jb2RlKHIucGF5bG9hZCk6ci5wYXlsb2FkKSx2PWtuKHIuc2lnbmF0dXJlKSxlLm5leHQ9NTUsdGEobCxuLHYsZCk7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgRG47Y2FzZSA1ODppZihnPWY/a24oci5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD95bi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQsbT17cGF5bG9hZDpnfSx2b2lkIDAhPT1yLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPW8pLHZvaWQgMCE9PXIuaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1yLmhlYWRlciksIXApe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6bn0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLG5hLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhYShlLHQscil7cmV0dXJuIGlhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBpYSgpe3JldHVybihpYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgaSxvLHMsdSxjLGY7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihyIGluc3RhbmNlb2YgVWludDhBcnJheSYmKHI9Ym4uZGVjb2RlKHIpKSwic3RyaW5nIj09dHlwZW9mIHIpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBUbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKGk9ci5zcGxpdCgiLiIpLG89aVswXSxzPWlbMV0sdT1pWzJdLDM9PT1pLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IFRuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCxyYSh7cGF5bG9hZDpzLHByb3RlY3RlZDpvLHNpZ25hdHVyZTp1fSxuLGEpO2Nhc2UgODppZihjPWUuc2VudCxmPXtwYXlsb2FkOmMucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Yy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxmKSx7fSx7a2V5OmMua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGYpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgb2E9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0sc2E9ODY0MDAsdWE9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksY2E9ZnVuY3Rpb24oZSl7dmFyIHQ9dWEuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqc2EpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LGZhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sbGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0saGE9ZnVuY3Rpb24oZSx0KXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxpPWEudHlwO2lmKGkmJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxmYShlLnR5cCkhPT1mYShpKSkpdGhyb3cgbmV3IF9uKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7bj1KU09OLnBhcnNlKGJuLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCFKbihuKSl0aHJvdyBuZXcgQW4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgbz1hLmlzc3VlcjtpZihvJiYhKEFycmF5LmlzQXJyYXkobyk/bzpbb10pLmluY2x1ZGVzKG4uaXNzKSl0aHJvdyBuZXcgX24oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmbi5zdWIhPT1zKXRocm93IG5ldyBfbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhbGEobi5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgX24oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gocihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9Y2EoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1vYShmfHxuZXcgRGF0ZSk7aWYodm9pZCAwIT09bi5pYXR8fGEubWF4VG9rZW5BZ2Upe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5pYXQpdGhyb3cgbmV3IF9uKCciaWF0IiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiaWF0IiwiaW52YWxpZCIpO2lmKHZvaWQgMD09PW4uZXhwJiZuLmlhdD5sK3UpdGhyb3cgbmV3IF9uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09bi5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygbi5uYmYpdGhyb3cgbmV3IF9uKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKG4ubmJmPmwrdSl0aHJvdyBuZXcgX24oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1uLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiBuLmV4cCl0aHJvdyBuZXcgX24oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYobi5leHA8PWwtdSl0aHJvdyBuZXcgeG4oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLW4uaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6Y2EoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IHhuKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBfbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiBufTtmdW5jdGlvbiBwYSgpe3JldHVybihwYT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbixhKXt2YXIgaSxvLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhYShyLG4sYSk7Y2FzZSAyOmlmKG89ZS5zZW50LCEobnVsbD09PShpPW8ucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09by5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgQW4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHM9aGEoby5wcm90ZWN0ZWRIZWFkZXIsby5wYXlsb2FkLGEpLHU9e3BheWxvYWQ6cyxwcm90ZWN0ZWRIZWFkZXI6by5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LHUpLHt9LHtrZXk6by5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1KTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gZGEoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IEVuKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIHZhKGUpe3JldHVybiBKbihlKX12YXIgZ2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKGkodGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PXIoZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KHZhKX0odCkpdGhyb3cgbmV3IENuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciBuO3RoaXMuX2p3a3M9KG49dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShuKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4pKSl9dmFyIG47cmV0dXJuIHMoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZToobj1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHIsbil7dmFyIGEsaSxvLHMsdSxjLGYsbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKGE9dCh0KHt9LHIpLG4uaGVhZGVyKSxpPWEuYWxnLG89YS5raWQscz10aGlzLl9qd2tzLmtleXMuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1lLmt0eT09PWRhKGkpO2lmKHQmJiJzdHJpbmciPT10eXBlb2YgbyYmKHQ9bz09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1pPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PWkmJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKGkpe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksdT1zWzBdLDAhPT0oYz1zLmxlbmd0aCkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBQbjtjYXNlIDc6aWYoMT09PWMpe2UubmV4dD05O2JyZWFrfXRocm93IG5ldyBPbjtjYXNlIDk6aWYodm9pZCAwIT09KGY9dGhpcy5fY2FjaGVkLmdldCh1KXx8dGhpcy5fY2FjaGVkLnNldCh1LHt9KS5nZXQodSkpW2ldKXtlLm5leHQ9MTc7YnJlYWt9cmV0dXJuIGUubmV4dD0xMyxWbih0KHQoe30sdSkse30se2V4dDohMH0pLGkpO2Nhc2UgMTM6aWYoISgobD1lLnNlbnQpaW5zdGFuY2VvZiBVaW50OEFycmF5fHwicHVibGljIiE9PWwudHlwZSkpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgQ24oIkpTT04gV2ViIEtleSBTZXQgbWVtYmVycyBtdXN0IGJlIHB1YmxpYyBrZXlzIik7Y2FzZSAxNjpmW2ldPWw7Y2FzZSAxNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZltpXSk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSksZX0oKTt2YXIgbWE9e2V4cG9ydHM6e319LHlhPXtleHBvcnRzOnt9fSxiYT1WKHJuKTsKLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovCiFmdW5jdGlvbihlLHQpe3ZhciByPWJhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPWkpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixpKSxpLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0saS5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0saS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0oeWEseWEuZXhwb3J0cyk7dmFyIHdhPTY1NTM2LGthPTQyOTQ5NjcyOTU7dmFyIFJhPXlhLmV4cG9ydHMuQnVmZmVyLF9hPXouY3J5cHRvfHx6Lm1zQ3J5cHRvO19hJiZfYS5nZXRSYW5kb21WYWx1ZXM/bWEuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+a2EpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1SYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT53YSlmb3IodmFyIG49MDtuPGU7bis9d2EpX2EuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK3dhKSk7ZWxzZSBfYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIGplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06bWEuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIHhhLFNhPW1hLmV4cG9ydHMsRWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpfXJldHVybiBzKGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHBuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBwbi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBtci5mcm9tKHZuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFNhKGUpfX0se2tleToicGFyc2VKd2siLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKHQ9e2tleXM6W2VdfSxnYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IGdhKHQpKSkpO3ZhciB0fX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBwYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsdCx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6byxpc3N1ZXI6YSxzdWJqZWN0Oml9KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpfX1dKSxlfSgpLFRhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsVCxBLEMsUCxPLEQsSSxVLEgsTDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyBycixuPW5ldyBFYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihpPW5ldyBKKGEpLG89YS5nZXREYXRhTGF5ZXIoKSxzPXRyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpLHUsYyxmLGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gaT0hMSx0Lm5leHQ9MyxvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6cmV0dXJuIHU9dC5zZW50LGM9MCx0LnQwPVtdLHQudDE9Yix0Lm5leHQ9OSxvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDk6aWYodC50ND1yPXQuc2VudCx0LnQzPW51bGw9PT10LnQ0LHQudDMpe3QubmV4dD0xMzticmVha310LnQzPXZvaWQgMD09PXI7Y2FzZSAxMzppZighdC50Myl7dC5uZXh0PTE3O2JyZWFrfXQudDU9dm9pZCAwLHQubmV4dD0xODticmVhaztjYXNlIDE3OnQudDU9ci5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxODppZih0LnQ2PW49dC50NSx0LnQyPW51bGwhPT10LnQ2LCF0LnQyKXt0Lm5leHQ9MjI7YnJlYWt9dC50Mj12b2lkIDAhPT1uO2Nhc2UgMjI6aWYoIXQudDIpe3QubmV4dD0yNjticmVha310LnQ3PW4sdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjY6dC50Nz1bXTtjYXNlIDI3OnQudDg9dC50Nyx0LnQ5PSgwLHQudDEpKHQudDgpLHQudDEwPVtudWxsPT11P3ZvaWQgMDp1LnNlcnZlck9yaWdpbl0sZj10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzMTppZighKGM8Zi5sZW5ndGgpKXt0Lm5leHQ9Mzk7YnJlYWt9aWYobD1mW2NdLCEobnVsbD09PShhPW51bGw9PWU/dm9pZCAwOmUudXJsKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zdGFydHNXaXRoKGwpKSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiBpPSEwLHQuYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMzY6YysrLHQubmV4dD0zMTticmVhaztjYXNlIDM5OmlmKCFpKXt0Lm5leHQ9NDM7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHMucmVxdWVzdChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt2YXIgcjtyZXR1cm4gNDAxIT09KG51bGw9PT0ocj1udWxsPT10P3ZvaWQgMDp0LnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpJiYobnVsbD09dD92b2lkIDA6dC5yZXNwb25zZSk/UHJvbWlzZS5yZWplY3QodCk6UygpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMucmVxdWVzdChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRigiV09SS0VSX0NPUkUtSFItRVMwMSIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCIiLCIiLGUpKX0pKX0pKSk7Y2FzZSA0MzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEYoIldPUktFUl9DT1JFLUhSLUlWMDIiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0IiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGksdSxjLGYsbCxoLHAsZCx2LGcsbTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB1PSEwLHQubmV4dD0zLG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpjPXQuc2VudCxmPVIoZSksdC5wcmV2PTUsZi5zKCk7Y2FzZSA3OmlmKChsPWYubigpKS5kb25lKXt0Lm5leHQ9NTA7YnJlYWt9cmV0dXJuIGg9bC52YWx1ZSxwPSExLGQ9MCx0LnQwPVtdLHQudDE9Yix0Lm5leHQ9MTUsby5nZXRDb25maWdEYXRhKCk7Y2FzZSAxNTppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTE5O2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDE5OmlmKCF0LnQzKXt0Lm5leHQ9MjM7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDI0OmlmKHQudDY9bj10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yODticmVha310LnQyPXZvaWQgMCE9PW47Y2FzZSAyODppZighdC50Mil7dC5uZXh0PTMyO2JyZWFrfXQudDc9bix0Lm5leHQ9MzM7YnJlYWs7Y2FzZSAzMjp0LnQ3PVtdO2Nhc2UgMzM6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W251bGw9PWM/dm9pZCAwOmMuc2VydmVyT3JpZ2luXSx2PXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDM3OmlmKCEoZDx2Lmxlbmd0aCkpe3QubmV4dD00NTticmVha31pZihnPXZbZF0sIShudWxsPT09KGk9aC51cmwpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0YXJ0c1dpdGgoZykpKXt0Lm5leHQ9NDI7YnJlYWt9cmV0dXJuIHA9ITAsdC5hYnJ1cHQoImJyZWFrIiw0NSk7Y2FzZSA0MjpkKyssdC5uZXh0PTM3O2JyZWFrO2Nhc2UgNDU6aWYocCl7dC5uZXh0PTQ4O2JyZWFrfXJldHVybiB1PSExLHQuYWJydXB0KCJicmVhayIsNTApO2Nhc2UgNDg6dC5uZXh0PTc7YnJlYWs7Y2FzZSA1MDp0Lm5leHQ9NTU7YnJlYWs7Y2FzZSA1Mjp0LnByZXY9NTIsdC50MTE9dC5jYXRjaCg1KSxmLmUodC50MTEpO2Nhc2UgNTU6cmV0dXJuIHQucHJldj01NSxmLmYoKSx0LmZpbmlzaCg1NSk7Y2FzZSA1ODppZihtPVtdLCF1KXt0Lm5leHQ9NjQ7YnJlYWt9cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bS5wdXNoKHMucmVxdWVzdChlKSl9KSksdC5hYnJ1cHQoInJldHVybiIsKG51bGw9PXM/dm9pZCAwOnMuYWxsKSYmcy5hbGwobSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDQwMT09PShudWxsPT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc3RhdHVzKT9hLnJlZnJlc2hBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMuYWxsJiZzLmFsbChtKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRigiV09SS0VSX0NPUkUtSFJBLUVTMDEiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0QWxsIiwiIiwiIixlKSl9KSk6UHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNjQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBGKCJXT1JLRVJfQ09SRS1IUkEtSVYwMiIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzUsNTIsNTUsNThdXSl9KSkpfSxkPWZ1bmN0aW9uKCl7cy5lbmFibGVIYW5kbGVyJiZzLmVuYWJsZUhhbmRsZXIoKX0sdj1mdW5jdGlvbigpe3MuZGlzYWJsZUhhbmRsZXImJnMuZGlzYWJsZUhhbmRsZXIoKX0sZz1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QXV0aG9yaXphdGlvblVSTChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4saSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49bmV3IFVSTChlKSxpPW51bGwhPT0ocj1uLnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIikpJiZ2b2lkIDAhPT1yP3I6IiIsdC5uZXh0PTQsYS5nZXRQS0NFQ29kZShpKTtjYXNlIDQ6cmV0dXJuIG89dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uVVJMOmUscGtjZTpvfSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sbT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gaS5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxpLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx5PWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBzKCl7dmFyIHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihzKXtmb3IoOzspc3dpdGNoKHMucHJldj1zLm5leHQpe2Nhc2UgMDpyZXR1cm4gcy5uZXh0PTIsby5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKHU9cy5zZW50LCFyfHwhdS5lbmFibGVQS0NFKXtzLm5leHQ9NjticmVha31yZXR1cm4gcy5uZXh0PTYsYS5zZXRQS0NFQ29kZShyLG51bGwhPW4/bjoiIik7Y2FzZSA2OmlmKCFlKXtzLm5leHQ9ODticmVha31yZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsYS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIsbnVsbCE9bj9uOiInIikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksYS5nZXRCYXNpY1VzZXJJbmZvKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA4OnJldHVybiBzLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRigiV09SS0VSX0NPUkUtUkFUMS1ORjAxIiwid29ya2VyLWNvcmUiLCJyZXF1ZXN0QWNjZXNzVG9rZW4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gaS5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxhLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixzLHUsYyxmLGwsaCxwO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITAsYz0hMSx0Lm5leHQ9NCxvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDQ6aWYoZj10LnNlbnQsIShudWxsPT1lP3ZvaWQgMDplLnRva2VuRW5kcG9pbnQpKXt0Lm5leHQ9NDI7YnJlYWt9cmV0dXJuIHU9ITEsbD0wLHQudDA9W10sdC50MT1iLHQubmV4dD0xMixvLmdldENvbmZpZ0RhdGEoKTtjYXNlIDEyOmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTY7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTY6aWYoIXQudDMpe3QubmV4dD0yMDticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MjE7YnJlYWs7Y2FzZSAyMDp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjE6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTI1O2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDI1OmlmKCF0LnQyKXt0Lm5leHQ9Mjk7YnJlYWt9dC50Nz1uLHQubmV4dD0zMDticmVhaztjYXNlIDI5OnQudDc9W107Y2FzZSAzMDp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bbnVsbD09Zj92b2lkIDA6Zi5zZXJ2ZXJPcmlnaW5dLGg9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzQ6aWYoIShsPGgubGVuZ3RoKSl7dC5uZXh0PTQyO2JyZWFrfWlmKHA9aFtsXSwhKG51bGw9PT0ocz1lLnRva2VuRW5kcG9pbnQpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXJ0c1dpdGgocCkpKXt0Lm5leHQ9Mzk7YnJlYWt9cmV0dXJuIGM9ITAsdC5hYnJ1cHQoImJyZWFrIiw0Mik7Y2FzZSAzOTpsKyssdC5uZXh0PTM0O2JyZWFrO2Nhc2UgNDI6aWYoZS5zaG91bGRSZXBsYXlBZnRlclJlZnJlc2gmJm8uc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihCLEpTT04uc3RyaW5naWZ5KGUpKSwhdSYmIWMpe3QubmV4dD00NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsYS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCFlLnJldHVybnNTZXNzaW9uKXtyLm5leHQ9NTticmVha31yZXR1cm4gaS5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksci5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgNTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNDc6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBGKCJXT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIndvcmtlci1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgdG9rZW4gZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLGEucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiBlLm5leHQ9NSxMKCk7Y2FzZSA1OmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5uZXh0PTkseCh0KTtjYXNlIDk6cmV0dXJuIGkucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDEzOnJldHVybiBlLnByZXY9MTMsZS50MD1lLmNhdGNoKDApLGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUudDApKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMCwxM11dKX0pKSl9LEU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sUD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRBY2Nlc3NUb2tlbigpfSxEPWZ1bmN0aW9uKCl7cmV0dXJuIGEuaXNBdXRoZW50aWNhdGVkKCl9LEk9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixvLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFU9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixhLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEg9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG8uZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEw9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG8uZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihCKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sdC5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjp2LGVuYWJsZUh0dHBIYW5kbGVyOmQsZ2V0QWNjZXNzVG9rZW46TyxnZXRBdXRob3JpemF0aW9uVVJMOmcsZ2V0QmFzaWNVc2VySW5mbzpULGdldENvbmZpZ0RhdGE6SCxnZXREZWNvZGVkSURUb2tlbjpBLGdldElEVG9rZW46QyxnZXRPSURDU2VydmljZUVuZHBvaW50czpQLGdldFNpZ25PdXRVUkw6ayxodHRwUmVxdWVzdDpoLGh0dHBSZXF1ZXN0QWxsOnAsaXNBdXRoZW50aWNhdGVkOkQscmVmcmVzaEFjY2Vzc1Rva2VuOlMscmVxdWVzdEFjY2Vzc1Rva2VuOnkscmVxdWVzdEN1c3RvbUdyYW50OngscmV2b2tlQWNjZXNzVG9rZW46RSxzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrOmwsc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrOmMsc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s6ZixzZXRTZXNzaW9uU3RhdGU6SSxzaWduT3V0Oncsc3RhcnRBdXRvUmVmcmVzaFRva2VuOm0sdXBkYXRlQ29uZmlnOlV9KTtjYXNlIDM5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxBYT1zZWxmO0FhLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEscj1lLnBvcnRzO3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG4sYSxpLG8scyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocz1yWzBdLHQudHlwZT09PUt8fHhhKXtlLm5leHQ9NDticmVha31yZXR1cm4gcy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IEYoIkNMSUVOVF9XT1JLRVItT05NU0ctTkYwMSIsImNsaWVudC53b3JrZXIiLHQudHlwZSwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09Sz83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsVGEodSk7Y2FzZSAxMTooeGE9ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKE9hKSx4YS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soQ2EpLHhhLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKFBhKSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODplLnByZXY9MTgsZS50MT1lLmNhdGNoKDcpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4geGEuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI0OnJldHVybiB4YS5yZXF1ZXN0QWNjZXNzVG9rZW4obnVsbD09PShuPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY29kZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zZXNzaW9uU3RhdGUsbnVsbD09PShpPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PWk/dm9pZCAwOmkucGtjZSxudWxsPT09KG89bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09bz92b2lkIDA6by5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIHhhLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIHhhLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMzA6cmV0dXJuIGUucHJldj0zMCxlLnQyPXMsZS50Mz1XLGUubmV4dD0zNSx4YS5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiB4YS5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4geGEucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0ODpyZXR1cm4gZS5wcmV2PTQ4LGUudDc9cyxlLnQ4PVcsZS5uZXh0PTUzLHhhLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9VyxlLm5leHQ9NjcseGEuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ZS50MTQ9ZS5zZW50LGUudDE1PWUudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxMyxlLnQxNCksZS50MTIucG9zdE1lc3NhZ2UuY2FsbChlLnQxMixlLnQxNSksZS5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ZS5wcmV2PTcyLGUudDE2PWUuY2F0Y2goNjIpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PVcsZS5uZXh0PTgxLHhhLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjEpKTtjYXNlIDg5OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA5MDpyZXR1cm4gZS5wcmV2PTkwLGUudDIyPXMsZS50MjM9VyxlLm5leHQ9OTUseGEuZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4geGEuZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIHhhLmRpc2FibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PVcsZS5uZXh0PTExNSx4YS5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDMxKSk7Y2FzZSAxMjM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEyNDpyZXR1cm4gZS5wcmV2PTEyNCxlLnQzMj1zLGUudDMzPVcsZS5uZXh0PTEyOSx4YS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1XLGUubmV4dD0xNDMseGEucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAxNDM6ZS50Mzk9ZS5zZW50LGUudDQwPWUudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzOCxlLnQzOSksZS50MzcucG9zdE1lc3NhZ2UuY2FsbChlLnQzNyxlLnQ0MCksZS5uZXh0PTE1MTticmVhaztjYXNlIDE0ODplLnByZXY9MTQ4LGUudDQxPWUuY2F0Y2goMTM4KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKHhhLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTQ6cmV0dXJuIGUucHJldj0xNTQsZS50NDI9cyxlLnQ0Mz1XLGUubmV4dD0xNTkseGEuc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1XLGUubmV4dD0xNzMseGEudXBkYXRlQ29uZmlnKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNzM6ZS50NDk9ZS5zZW50LGUudDUwPWUudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0OCxlLnQ0OSksZS50NDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ0NyxlLnQ1MCksZS5uZXh0PTE4MTticmVhaztjYXNlIDE3ODplLnByZXY9MTc4LGUudDUxPWUuY2F0Y2goMTY4KSxzLnBvc3RNZXNzYWdlKFcuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1XLGUubmV4dD0xODcseGEuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShXLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTYpKTtjYXNlIDE5NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTk2Om51bGw9PXN8fHMucG9zdE1lc3NhZ2UoVy5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBGKCJDTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJjbGllbnQud29ya2VyIiwib25tZXNzYWdlIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIENhPWZ1bmN0aW9uKCl7QWEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LFBhPWZ1bmN0aW9uKGUpe0FhLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxPYT1mdW5jdGlvbigpe0FhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",TP=null,BP=!1,function(e){return zP=zP||AP(wP,TP,BP),new Worker(zP,e)}),PP=function(e){return sw(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,G,V,f,W,C,v,R,S,Y,K,J,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,a=!1,t.next=5,lT((function(){return sw(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",oT.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 jP,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("WEB_WORKER_CLIENT-COM-TO-01","web-worker-client","communicate","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 sw(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 sw(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 sw(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 sw(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 sw(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 sw(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,!oT.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=Lw.extractPKCEKeyFromStateParam(null!==(n=new URL(l.authorizationURL).searchParams.get(Sw))&&void 0!==n?n:""),l.pkce&&r.enablePKCE&&oT.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 sw(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)&&G(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 sw(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 sw(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=Lw.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(Sw))&&void 0!==r?r:""),oT.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 sw(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=Lw.extractPKCEKeyFromStateParam(n),a={data:{code:e,pkce:i.enablePKCE?oT.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&oT.removePKCE(c),r.abrupt("return",u(a).then((function(e){return u({type:"get_sign_out_url"}).then((function(t){return oT.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)})))},V=function(e,t,n,r){return sw(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 sw(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}return(m=new URL(window.location.href)).searchParams.delete("error"),m.searchParams.delete("error_description"),history.pushState(null,document.title,m.toString()),i.abrupt("return",Promise.reject(new cT("WEB_WORKER_CLIENT-SI-BE","web-worker-client","signIn",d,null!=s?s:"")));case 16:return i.next=18,K();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)===uw.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(c=new URL(window.location.href).searchParams.get(Ww))&&void 0!==c?c:"",h=null!==(a=new URL(window.location.href).searchParams.get(Cw))&&void 0!==a?a:"",b=null!==(l=new URL(window.location.href).searchParams.get(Sw))&&void 0!==l?l:"",oT.removeAuthorizationCode()),!Z){i.next=26;break}return i.abrupt("return",G(Z,h,b));case 26:return i.abrupt("return",X(e).then((function(e){return sw(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,oT.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)})))},f=function(){return K().then((function(e){return sw(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 sw(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,oT.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=oT.getSignOutURL(),t.next=8,oT.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)}))},K=function(){return u({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=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 sw(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:K,refreshAccessToken:J,requestCustomGrant:d,revokeAccessToken:W,setHttpRequestErrorCallback:N,setHttpRequestFinishCallback:x,setHttpRequestStartCallback:H,setHttpRequestSuccessCallback:L,signIn:V,signOut:f,trySignInSilently:y,updateConfig:k});case 36:case"end":return t.stop()}}),t)})))},QP={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:Nw.SessionStorage},MP=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 sw(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 sw(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=KQ,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)}}(JQ,JQ.exports);var NQ=JQ.exports.Buffer,LQ=e.crypto||e.msCrypto;LQ&&LQ.getRandomValues?YQ.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var n=NQ.allocUnsafe(e);if(e>0)if(e>65536)for(var r=0;r<e;r+=65536)LQ.getRandomValues(n.slice(r,r+65536));else LQ.getRandomValues(n);if("function"==typeof t)return OF.nextTick((function(){t(null,n)}));return n}:YQ.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var HQ=YQ.exports,xQ=function(){function e(){l(this,e)}return d(e,[{key:"base64URLEncode",value:function(e){return Cj.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return Cj.decode(e).toString()}},{key:"hashSha256",value:function(e){return Nz.from(Sj((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return HQ(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,o){return function(e,t,n){return RQ.apply(this,arguments)}(e,(a={keys:[t]},SQ.prototype.getKey.bind(new SQ(a))),{algorithms:n,audience:r,clockTolerance:o,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var a}}]),e}(),kQ=function(e){switch(e){case NA.LocalStorage:return new bz;case NA.SessionStorage:return new Iz;case NA.BrowserMemory:return new pz;default:return new Iz}},UQ=function(e){return sA(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,W,C,v,S,Y,J,K,N,L,H,x,k,U,w,T,A,F;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=kQ(e.storage),i=new xQ,c=new TA(r,i),t.next=5,c.initialize(e);case 5:return o=new iF(c),a=c.getDataLayer(),t.next=9,oF((function(){return sA(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:NA.SessionStorage,(function(e){return a.setSessionDataParameter(RA,null!=e?e:"")}));case 9:if(l=t.sent,u=!1,d=hz.getInstance(),s=!0,h=function(e){return sA(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 sA(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,l,u,h;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=c.baseUrl||c.serverOrigin,l=0,t.t0=[],t.t1=V,t.next=10,null==c?void 0:c.resourceServerURLs;case 10:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=14;break}t.t2=void 0!==n;case 14:if(!t.t2){t.next=18;break}t.t4=n,t.next=19;break;case 18:t.t4=[];case 19:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[o],u=t.t0.concat.call(t.t0,t.t6,t.t7);case 23:if(!(l<u.length)){t.next=31;break}if(!(h=u[l])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(h))){t.next=28;break}return i=!0,t.abrupt("break",31);case 28:l++,t.next=23;break;case 31:if(!i){t.next=35;break}return t.abrupt("return",d.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return sA(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 JA("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 35:throw new JA("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 36:case"end":return t.stop()}}),t)})))},X=function(e){return sA(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,o,l,u,h,b,p,I,g,y,X,G;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=l.baseUrl||l.serverOrigin,h=R(e),t.prev=6,h.s();case 8:if((b=h.n()).done){t.next=51;break}return p=b.value,I=!1,g=0,t.t0=[],t.t1=V,t.next=16,l;case 16:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=20;break}t.t3=void 0===n;case 20:if(!t.t3){t.next=24;break}t.t5=void 0,t.next=25;break;case 24:t.t5=n.resourceServerURLs;case 25:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=29;break}t.t2=void 0!==r;case 29:if(!t.t2){t.next=33;break}t.t7=r,t.next=34;break;case 33:t.t7=[];case 34:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[u],y=t.t0.concat.call(t.t0,t.t9,t.t10);case 38:if(!(g<y.length)){t.next=46;break}if(!(X=y[g])||!(null===(i=p.url)||void 0===i?void 0:i.startsWith(X))){t.next=43;break}return I=!0,t.abrupt("break",46);case 43:g++,t.next=38;break;case 46:if(I){t.next=49;break}return o=!1,t.abrupt("break",51);case 49:t.next=8;break;case 51:t.next=56;break;case 53:t.prev=53,t.t11=t.catch(6),h.e(t.t11);case 56:return t.prev=56,h.f(),t.finish(56);case 59:if(G=[],!o){t.next=65;break}return e.forEach((function(e){G.push(d.request(e))})),t.abrupt("return",(null==d?void 0:d.all)&&d.all(G).then((function(e){return Promise.resolve(e)})).catch((function(e){return sA(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 JA("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(G).then((function(e){return Promise.resolve(e)})).catch((function(e){return sA(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 65:throw new JA("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 66:case"end":return t.stop()}}),t,null,[[6,53,56,59]])})))},G=function(){return d},f=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},C=function(){return sA(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 sA(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 sA(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)})))},v=function(e,t,n,r){return sA(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 sA(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(RA,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&&C(),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)===uA.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(u=new URL(window.location.href).searchParams.get(WA))&&void 0!==u?u:"",h=null!==(d=new URL(window.location.href).searchParams.get(RA))&&void 0!==d?d:"",b=null!==(s=new URL(window.location.href).searchParams.get(SA))&&void 0!==s?s:"",cF.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 JA("SPA-MAIN_THREAD_CLIENT-SI-SE01",p,null!=I?I:"");case 30:return i.abrupt("return",c.getAuthorizationURL(e).then((function(e){return sA(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!==NA.BrowserMemory||!m.enablePKCE){t.next=8;break}return n=KA.extractPKCEKeyFromStateParam(b),t.t0=cF,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,cF.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 sA(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=cF.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,cF.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},Y=function(e){return sA(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,l,d,s,m,Z,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l=!0,d=!1,s=e.baseUrl||e.serverOrigin,!(null==e?void 0:e.tokenEndpoint)){t.next=40;break}return l=!1,m=0,t.t0=[],t.t1=V,t.next=10,a.getConfigData();case 10:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=14;break}t.t3=void 0===n;case 14:if(!t.t3){t.next=18;break}t.t5=void 0,t.next=19;break;case 18:t.t5=n.resourceServerURLs;case 19:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=23;break}t.t2=void 0!==r;case 23:if(!t.t2){t.next=27;break}t.t7=r,t.next=28;break;case 27:t.t7=[];case 28:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[s],Z=t.t0.concat.call(t.t0,t.t9,t.t10);case 32:if(!(m<Z.length)){t.next=40;break}if(!(h=Z[m])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(h))){t.next=37;break}return d=!0,t.abrupt("break",40);case 37:m++,t.next=32;break;case 40:if(e.shouldReplayAfterRefresh&&a.setTemporaryDataParameter("custom_grant_config",JSON.stringify(e)),!l&&!d){t.next=45;break}return t.abrupt("return",c.requestCustomGrant(e).then((function(t){return sA(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 45:return t.abrupt("return",Promise.reject(new JA("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 46:case"end":return t.stop()}}),t)})))},J=function(){return sA(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,F();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)}))},N=function(e,t,n){return sA(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!==NA.BrowserMemory||!i.enablePKCE){r.next=7;break}return l=cF.getPKCE(KA.extractPKCEKeyFromStateParam(n)),r.next=7,c.setPKCECode(KA.extractPKCEKeyFromStateParam(n),l);case 7:return r.abrupt("return",c.requestAccessToken(e,t,n).then((function(){return sA(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=cF,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&&C(),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 sA(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,!cF.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!==NA.BrowserMemory||!n.enablePKCE){e.next=24;break}return s=u.searchParams.get(SA),e.t0=cF,e.t1=KA.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 sA(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)&&N(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 sA(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 sA(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 sA(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 sA(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)})))},w=function(){return sA(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)})))},T=function(){return sA(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)})))},A=function(e){return sA(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(),C());case 8:case"end":return t.stop()}}),t)})))},F=function(){return sA(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:f,getAccessToken:w,getBasicUserInfo:H,getDecodedIDToken:x,getHttpClient:G,getIDToken:k,getOIDCServiceEndpoints:U,httpRequest:y,httpRequestAll:X,isAuthenticated:T,refreshAccessToken:J,requestCustomGrant:Y,revokeAccessToken:K,setHttpRequestErrorCallback:g,setHttpRequestFinishCallback:I,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:p,signIn:v,signOut:S,trySignInSilently:L,updateConfig:A});case 44:case"end":return t.stop()}}),t)})))};function wQ(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 TQ,AQ,FQ,BQ,zQ=(TQ="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24obyxhLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24obyxhLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBpKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfQovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24geChlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24oYSxpKXtmdW5jdGlvbiBvKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9hKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihvLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgUzshZnVuY3Rpb24oZSl7ZS5mb3JtUG9zdD0iZm9ybV9wb3N0IixlLnF1ZXJ5PSJxdWVyeSJ9KFN8fChTPXt9KSk7dmFyIEU7IWZ1bmN0aW9uKGUpe2UuQ29uZmlnRGF0YT0iY29uZmlnX2RhdGEiLGUuT0lEQ1Byb3ZpZGVyTWV0YURhdGE9Im9pZGNfcHJvdmlkZXJfbWV0YV9kYXRhIixlLlNlc3Npb25EYXRhPSJzZXNzaW9uX2RhdGEiLGUuVGVtcG9yYXJ5RGF0YT0idGVtcG9yYXJ5X2RhdGEifShFfHwoRT17fSkpO3ZhciBBLFQ9InJlZnJlc2hfdG9rZW5fdGltZXIiLEM9WyJSUzI1NiIsIlJTNTEyIiwiUlMzODQiLCJQUzI1NiJdOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KEF8fChBPXt9KSk7dmFyIFA9cygoZnVuY3Rpb24gZSh0LHIsbil7aSh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMiksbj10WzBdLGE9dFsxXSxpPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3JbaV09YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7Ty5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBELEksVT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO2kodGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4geChuLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1yfXJldHVybiBzKGUsW3trZXk6InJlc29sdmVXZWxsS25vd25FbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudCxuPXIud2VsbEtub3duRW5kcG9pbnR8fChudWxsPT09KGU9bnVsbD09cj92b2lkIDA6ci5lbmRwb2ludHMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLndlbGxLbm93bkVuZHBvaW50KSxhPXIuYmFzZVVybHx8ci5zZXJ2ZXJPcmlnaW4sdC5hYnJ1cHQoInJldHVybiIsbnx8YSsiL29hdXRoMi90b2tlbi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiIpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKG4ub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcmJm4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7clt0XT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxyKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKHI9ZS5zZW50LG49WyJhdXRob3JpemF0aW9uX2VuZHBvaW50IiwiZW5kX3Nlc3Npb25fZW5kcG9pbnQiLCJqd2tzX3VyaSIsImNoZWNrX3Nlc3Npb25faWZyYW1lIiwicmV2b2NhdGlvbl9lbmRwb2ludCIsInRva2VuX2VuZHBvaW50IiwiaXNzdWVyIiwidXNlcmluZm9fZW5kcG9pbnQiXSxyLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobnVsbD09cj92b2lkIDA6ci5lbmRwb2ludHMpLmV2ZXJ5KChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTtyZXR1cm4gbi5pbmNsdWRlcyh0KX0pKSl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfSEVMUEVSLVJFRS1ORjAxIiwiTm8gcmVxdWlyZWQgZW5kcG9pbnRzLiIsIlJlcXVpcmVkIG9pZGMgZW5kcG9pbnRzIGFyZSBub3QgZGVmaW5lZCIpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKHIuZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhyLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7dFtuXT0obnVsbD09cj92b2lkIDA6ci5lbmRwb2ludHMpP3IuZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oe30sdCkpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD17fSxlLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6aWYocj1lLnNlbnQsbj1yLmJhc2VVcmx8fHIuc2VydmVyT3JpZ2luKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiByLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxhPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQobikuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpLG8scyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBQKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChyLHtjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9BLkluY2x1ZGU6QS5TYW1lT3JpZ2lufSk7Y2FzZSAxMTphPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBQKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1hLnN0YXR1cyYmYS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPVAsdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoYS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixhLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBpPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGEuanNvbigpO2Nhc2UgMjk6cmV0dXJuIG89dC5zZW50LHM9by5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0scyk7Y2FzZSAzMzpyZXR1cm4gdT10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9dSx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1pP2k6IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGk9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksbz1PLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChpKSxzPW51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPWkuZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1pLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1pLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjpvLHVzZXJuYW1lOnN9LE8uZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKGkpKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0ib3BlbmlkIixuLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIGk9bi5zZW50LG4ubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIG89bi5zZW50LG4uYWJydXB0KCJyZXR1cm4iLChpLnNjb3BlJiZpLnNjb3BlLmxlbmd0aD4wJiYoaS5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fGkuc2NvcGUucHVzaCgib3BlbmlkIiksYT1pLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLG8uYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKG8uaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGEpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsaS5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShyPWkuY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09cj9yOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLGk9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtyLm5leHQ9NzticmVha31yZXR1cm4gci50MD1QLHIudDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksci5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IHIudDI9ci5zZW50LG5ldyByLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsci50MSxyLnQyKTtjYXNlIDc6cmV0dXJuIHIubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4obj1yLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksci5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIXIuc2VudC52YWxpZGF0ZUlEVG9rZW4pe3IubmV4dD0xNTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4obi5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4geChpLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDI6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGE9e2FjY2Vzc1Rva2VuOm4uYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDpuLmNyZWF0ZWRfYXQsZXhwaXJlc0luOm4uZXhwaXJlc19pbixpZFRva2VuOm4uaWRfdG9rZW4scmVmcmVzaFRva2VuOm4ucmVmcmVzaF90b2tlbixzY29wZTpuLnNjb3BlLHRva2VuVHlwZTpuLnRva2VuX3R5cGV9LHIubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEobix0KTtjYXNlIDE4OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoYSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsYT1bXSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZhLnB1c2goZSl9KSksaT1hLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiBzKGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Uih0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYobi5raWQ9PT1pLmtpZClyZXR1cm4gaX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IFAoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LEMscixuLGEsaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgUCgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9dGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRGVjb2RlKGUuc3BsaXQoIi4iKVsxXSk7cmV0dXJuIEpTT04ucGFyc2UodCl9Y2F0Y2goZSl7dGhyb3cgbmV3IFAoIkpTLUNSWVBUT19VVElMLURJVC1JVjAxIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dmFyIG49dGhpcztpKHRoaXMsZSksdGhpcy5fY3J5cHRvVXRpbHM9cix0aGlzLl9jcnlwdG9IZWxwZXI9bmV3IEgociksdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXI9bmV3IFUodCx0aGlzLl9jcnlwdG9IZWxwZXIpLHRoaXMuX2RhdGFMYXllcj10LHRoaXMuX2NvbmZpZz1mdW5jdGlvbigpe3JldHVybiB4KG4sdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YT1mdW5jdGlvbigpe3JldHVybiB4KG4sdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19cmV0dXJuIHMoZSxbe2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGE7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGMsZixsLGgscCxkLHYsZyxtLGI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihpKXtmb3IoOzspc3dpdGNoKGkucHJldj1pLm5leHQpe2Nhc2UgMDpyZXR1cm4gaS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBvPWkuc2VudCxpLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYocz1pLnNlbnQsbyYmMCE9PW8udHJpbSgpLmxlbmd0aCl7aS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybih1PW5ldyBVUkwobykpLnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksdS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJjbGllbnRfaWQiLHMuY2xpZW50SUQpLGM9Im9wZW5pZCIscy5zY29wZSYmcy5zY29wZS5sZW5ndGg+MCYmKHMuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxzLnNjb3BlLnB1c2goIm9wZW5pZCIpLGM9cy5zY29wZS5qb2luKCIgIikpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgic2NvcGUiLGMpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVkaXJlY3RfdXJpIixzLnNpZ25JblJlZGlyZWN0VVJMKSxzLnJlc3BvbnNlTW9kZSYmdS5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV9tb2RlIixzLnJlc3BvbnNlTW9kZSksaS5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGY9aS5zZW50LCFzLmVuYWJsZVBLQ0Upe2kubmV4dD0yMTticmVha31yZXR1cm4gbD1udWxsPT09KHI9dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5nZXRDb2RlVmVyaWZpZXIoKSxoPW51bGw9PT0obj10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldENvZGVDaGFsbGVuZ2UobCksaS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGYsbCx0KTtjYXNlIDE5OnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwiUzI1NiIpLHUuc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2UiLGgpO2Nhc2UgMjE6aWYocy5wcm9tcHQmJnUuc2VhcmNoUGFyYW1zLmFwcGVuZCgicHJvbXB0IixzLnByb21wdCkscD1lKWZvcihkPTAsdj1PYmplY3QuZW50cmllcyhwKTtkPHYubGVuZ3RoO2QrKylnPXkodltkXSwyKSxtPWdbMF0sYj1nWzFdLCIiIT1tJiYiIiE9YiYmInN0YXRlIiE9PW0mJnUuc2VhcmNoUGFyYW1zLmFwcGVuZChtLGIudG9TdHJpbmcoKSk7cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLCh1LnNlYXJjaFBhcmFtcy5hcHBlbmQoInN0YXRlIixPLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihmLHA/bnVsbD09PShhPXAuc3RhdGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnRvU3RyaW5nKCk6IiIpKSx1LnRvU3RyaW5nKCkpKTtjYXNlIDI1OmNhc2UiZW5kIjpyZXR1cm4gaS5zdG9wKCl9fSksaSx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1LGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGk9YS5zZW50LnRva2VuX2VuZHBvaW50LGEubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihvPWEuc2VudCxpJiYwIT09aS50cmltKCkubGVuZ3RoKXthLm5leHQ9ODticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLVJBVDEtTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6aWYoYS50MD10LCFhLnQwKXthLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGEubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLHQsbik7Y2FzZSAxMjppZigocz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG8uY2xpZW50SUQpKSxvLmNsaWVudFNlY3JldCYmby5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZzLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoby5jbGllbnRTZWNyZXQpKSx1PWUscy5wdXNoKCJjb2RlPSIuY29uY2F0KHUpKSxzLnB1c2goImdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlIikscy5wdXNoKCJyZWRpcmVjdF91cmk9Ii5jb25jYXQoby5zaWduSW5SZWRpcmVjdFVSTCkpLGEudDE9by5lbmFibGVQS0NFLCFhLnQxKXthLm5leHQ9Mjk7YnJlYWt9cmV0dXJuIGEudDI9cyxhLnQzPSJjb2RlX3ZlcmlmaWVyPSIsYS5uZXh0PTI0LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI0OnJldHVybiBhLnQ0PWEuc2VudCxhLnQ1PWEudDMuY29uY2F0LmNhbGwoYS50MyxhLnQ0KSxhLnQyLnB1c2guY2FsbChhLnQyLGEudDUpLGEubmV4dD0yOSx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihPLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0ociksbik7Y2FzZSAyOTpyZXR1cm4gYS5wcmV2PTI5LGEubmV4dD0zMixmZXRjaChpLHtib2R5OnMuam9pbigiJiIpLGNyZWRlbnRpYWxzOm8uc2VuZENvb2tpZXNJblJlcXVlc3RzP0EuSW5jbHVkZTpBLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMzI6Yz1hLnNlbnQsYS5uZXh0PTM4O2JyZWFrO2Nhc2UgMzU6dGhyb3cgYS5wcmV2PTM1LGEudDY9YS5jYXRjaCgyOSksbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQxLU5FMDIiLCJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQiLG51bGwhPWEudDY/YS50NjoiVGhlIHJlcXVlc3QgdG8gZ2V0IHRoZSBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iKTtjYXNlIDM4OmlmKGMub2spe2EubmV4dD00NTticmVha31yZXR1cm4gYS50Nz1QLGEudDg9IlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCB3aXRoICIuY29uY2F0KGMuc3RhdHVzVGV4dCksYS5uZXh0PTQzLGMuanNvbigpO2Nhc2UgNDM6dGhyb3cgYS50OT1hLnNlbnQsbmV3IGEudDcoIkpTLUFVVEhfQ09SRS1SQVQxLUhFMDMiLGEudDgsYS50OSk7Y2FzZSA0NTpyZXR1cm4gYS5uZXh0PTQ3LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoYyxuKTtjYXNlIDQ3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnNlbnQpO2Nhc2UgNDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMsW1syOSwzNV1dKX0pKSl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnRva2VuX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gbj10LnNlbnQsdC5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgODppZigoYT10LnNlbnQpLnJlZnJlc2hfdG9rZW4pe3QubmV4dD0xMTticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLVJBVDItTkYwMSIsIk5vIHJlZnJlc2ggdG9rZW4gZm91bmQuIiwiVGhlcmUgd2FzIG5vIHJlZnJlc2ggdG9rZW4gZm91bmQuIEFzZ2FyZGVvIGRvZXNuJ3QgcmV0dXJuIGEgcmVmcmVzaCB0b2tlbiBpZiB0aGUgcmVmcmVzaCB0b2tlbiBncmFudCBpcyBub3QgZW5hYmxlZC4iKTtjYXNlIDExOmlmKHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD0xMzticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLVJBVDItTkYwMiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCB3YXMgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZWZyZXNoIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgMTM6cmV0dXJuKGk9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChuLmNsaWVudElEKSksaS5wdXNoKCJyZWZyZXNoX3Rva2VuPSIuY29uY2F0KGEucmVmcmVzaF90b2tlbikpLGkucHVzaCgiZ3JhbnRfdHlwZT1yZWZyZXNoX3Rva2VuIiksbi5jbGllbnRTZWNyZXQmJm4uY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmaS5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KG4uY2xpZW50U2VjcmV0KSksdC5wcmV2PTE1LHQubmV4dD0xOCxmZXRjaChyLHtib2R5Omkuam9pbigiJiIpLGNyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP0EuSW5jbHVkZTpBLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMTg6bz10LnNlbnQsdC5uZXh0PTI0O2JyZWFrO2Nhc2UgMjE6dGhyb3cgdC5wcmV2PTIxLHQudDA9dC5jYXRjaCgxNSksbmV3IFAoIkpTLUFVVEhfQ09SRS1SQVQyLU5SMDMiLCJSZWZyZXNoIGFjY2VzcyB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPXQudDA/dC50MDoiVGhlIHJlcXVlc3QgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iKTtjYXNlIDI0OmlmKG8ub2spe3QubmV4dD0zMTticmVha31yZXR1cm4gdC50MT1QLHQudDI9IlJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCB3aXRoICIuY29uY2F0KG8uc3RhdHVzVGV4dCksdC5uZXh0PTI5LG8uanNvbigpO2Nhc2UgMjk6dGhyb3cgdC50Mz10LnNlbnQsbmV3IHQudDEoIkpTLUFVVEhfQ09SRS1SQVQyLUhFMDQiLHQudDIsdC50Myk7Y2FzZSAzMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShvLGUpKTtjYXNlIDMyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTUsMjFdXSl9KSkpfX0se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5yZXZvY2F0aW9uX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihuPXQuc2VudCxyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9ODticmVha310aHJvdyBuZXcgUCgiSlMtQVVUSF9DT1JFLVJBVDMtTkYwMSIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4oYT1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSx0LnQwPWEsdC50MT0idG9rZW49Iix0Lm5leHQ9MTQsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTQ6cmV0dXJuIHQudDI9dC5zZW50LmFjY2Vzc190b2tlbix0LnQzPXQudDEuY29uY2F0LmNhbGwodC50MSx0LnQyKSx0LnQwLnB1c2guY2FsbCh0LnQwLHQudDMpLGEucHVzaCgidG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbiIpLHQucHJldj0xOCx0Lm5leHQ9MjEsZmV0Y2gocix7Ym9keTphLmpvaW4oIiYiKSxjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9BLkluY2x1ZGU6QS5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTy5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDIxOmk9dC5zZW50LHQubmV4dD0yNzticmVhaztjYXNlIDI0OnRocm93IHQucHJldj0yNCx0LnQ0PXQuY2F0Y2goMTgpLG5ldyBQKCJKUy1BVVRIX0NPUkUtUkFUMy1ORTAyIiwiVGhlIHJlcXVlc3QgdG8gcmV2b2tlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT10LnQ0P3QudDQ6IlRoZSByZXF1ZXN0IHNlbnQgdG8gcmV2b2tlIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjc6aWYoMjAwPT09aS5zdGF0dXMmJmkub2spe3QubmV4dD0zNDticmVha31yZXR1cm4gdC50NT1QLHQudDY9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciByZXZva2UgYWNjZXNzIHRva2VuIHJlcXVlc3QgKCIuY29uY2F0KGkuc3RhdHVzVGV4dCwiKS4iKSx0Lm5leHQ9MzIsaS5qc29uKCk7Y2FzZSAzMjp0aHJvdyB0LnQ3PXQuc2VudCxuZXcgdC50NSgiSlMtQVVUSF9DT1JFLVJBVDMtSEUwMyIsdC50Nix0LnQ3KTtjYXNlIDM0OnJldHVybiB0LmFicnVwdCgicmV0dXJuIiwodGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSksUHJvbWlzZS5yZXNvbHZlKGkpKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzE4LDI0XV0pfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLGksbyxzLHUsYyxmPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihhPXIuc2VudCwoaT1lLnRva2VuRW5kcG9pbnQmJjAhPT1lLnRva2VuRW5kcG9pbnQudHJpbSgpLmxlbmd0aD9lLnRva2VuRW5kcG9pbnQ6bi50b2tlbl9lbmRwb2ludCkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXRocm93IG5ldyBQKCJKUy1BVVRIX0NPUkUtUkNHLU5GMDEiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiByLm5leHQ9MTAsUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoZS5kYXRhKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPXkoZSwyKSxuPXJbMF0sYT1yWzFdO3JldHVybiB4KGYsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyhhLHQpO2Nhc2UgMjpyZXR1cm4gcj1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsIiIuY29uY2F0KG4sIj0iKS5jb25jYXQocikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDEwOmlmKG89ci5zZW50LHM9T2JqZWN0LmFzc2lnbih7fSxPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksci50MD1lLmF0dGFjaFRva2VuLCFyLnQwKXtyLm5leHQ9MjM7YnJlYWt9cmV0dXJuIHIudDE9T2JqZWN0LHIudDI9T2JqZWN0LmFzc2lnbih7fSxzKSxyLnQzPSJCZWFyZXIgIixyLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKHQpO2Nhc2UgMTk6ci50ND1yLnNlbnQuYWNjZXNzX3Rva2VuLHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDY9e0F1dGhvcml6YXRpb246ci50NX0scz1yLnQxLmFzc2lnbi5jYWxsKHIudDEsci50MixyLnQ2KTtjYXNlIDIzOnJldHVybiB1PXtib2R5Om8uam9pbigiJiIpLGNyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP0EuSW5jbHVkZTpBLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhzKSxtZXRob2Q6IlBPU1QifSxyLnByZXY9MjQsci5uZXh0PTI3LGZldGNoKGksdSk7Y2FzZSAyNzpjPXIuc2VudCxyLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMDp0aHJvdyByLnByZXY9MzAsci50Nz1yLmNhdGNoKDI0KSxuZXcgUCgiSlMtQVVUSF9DT1JFLVJDRy1ORTAyIiwiVGhlIGN1c3RvbSBncmFudCByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPXIudDc/ci50NzoiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGN1c3RvbSBncmFudCBmYWlsZWQuIik7Y2FzZSAzMzppZigyMDA9PT1jLnN0YXR1cyYmYy5vayl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLnQ4PVAsci50OT0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdC4gKCIuY29uY2F0KGMuc3RhdHVzVGV4dCwiKSIpLHIubmV4dD0zOCxjLmpzb24oKTtjYXNlIDM4OnRocm93IHIudDEwPXIuc2VudCxuZXcgci50OCgiSlMtQVVUSF9DT1JFLVJDRy1IRTAzIixyLnQ5LHIudDEwKTtjYXNlIDQwOmlmKCFlLnJldHVybnNTZXNzaW9uKXtyLm5leHQ9NDQ7YnJlYWt9ci50MTE9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShjLHQpLHIubmV4dD00OTticmVhaztjYXNlIDQ0OnJldHVybiByLnQxMj1Qcm9taXNlLHIubmV4dD00NyxjLmpzb24oKTtjYXNlIDQ3OnIudDEzPXIuc2VudCxyLnQxMT1yLnQxMi5yZXNvbHZlLmNhbGwoci50MTIsci50MTMpO2Nhc2UgNDk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDExKTtjYXNlIDUwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzLFtbMjQsMzBdXSl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LG49dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKG51bGw9PXI/dm9pZCAwOnIuaWRfdG9rZW4pLGE9e2FsbG93ZWRTY29wZXM6ci5zY29wZSxzZXNzaW9uU3RhdGU6ci5zZXNzaW9uX3N0YXRlfSx0LmFicnVwdCgicmV0dXJuIiwoT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09bltlXSYmIiIhPT1uW2VdJiZudWxsIT09bltlXXx8ZGVsZXRlIG5bZV19KSksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSksbikpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5pZF90b2tlbix0LmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQuaWRfdG9rZW4pO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsaTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9jb25maWcoKTtjYXNlIDI6aWYobj1yLnNlbnQsci50MD0hZSwhci50MCl7ci5uZXh0PTg7YnJlYWt9cmV0dXJuIHIubmV4dD03LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA3OnIudDA9ci5zZW50O2Nhc2UgODppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAxMDppZighKGE9bi53ZWxsS25vd25FbmRwb2ludHx8KG51bGw9PT0odD1udWxsPT1uP3ZvaWQgMDpuLmVuZHBvaW50cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQud2VsbEtub3duRW5kcG9pbnQpKSl7ci5uZXh0PTM2O2JyZWFrfXJldHVybiByLnByZXY9MTIsci5uZXh0PTE1LGZldGNoKGEpO2Nhc2UgMTU6aWYoMjAwPT09KGk9ci5zZW50KS5zdGF0dXMmJmkub2spe3IubmV4dD0xODticmVha310aHJvdyBuZXcgRXJyb3I7Y2FzZSAxODpyLm5leHQ9MjM7YnJlYWs7Y2FzZSAyMDp0aHJvdyByLnByZXY9MjAsci50MT1yLmNhdGNoKDEyKSxuZXcgUCgiSlMtQVVUSF9DT1JFLUdPUE1ELUhFMDEiLCJJbnZhbGlkIHdlbGwta25vd24gcmVzcG9uc2UiLCJUaGUgd2VsbCBrbm93biBlbmRwb2ludCByZXNwb25zZSBoYXMgYmVlbiBmYWlsZWQgd2l0aCBhbiBlcnJvci4iKTtjYXNlIDIzOnJldHVybiByLnQyPXRoaXMuX2RhdGFMYXllcixyLnQzPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHIubmV4dD0yNyxpLmpzb24oKTtjYXNlIDI3OnJldHVybiByLnQ0PXIuc2VudCxyLm5leHQ9MzAsci50My5yZXNvbHZlRW5kcG9pbnRzLmNhbGwoci50MyxyLnQ0KTtjYXNlIDMwOnJldHVybiByLnQ1PXIuc2VudCxyLm5leHQ9MzMsci50Mi5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHIudDIsci50NSk7Y2FzZSAzMzpyZXR1cm4gci5uZXh0PTM1LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAzNTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMzY6aWYoIW4uYmFzZVVybCYmIW4uc2VydmVyT3JpZ2luKXtyLm5leHQ9NTI7YnJlYWt9cmV0dXJuIHIucHJldj0zNyxyLnQ2PXRoaXMuX2RhdGFMYXllcixyLm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHIudDc9ci5zZW50LHIubmV4dD00NCxyLnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwoci50NixyLnQ3KTtjYXNlIDQ0OnIubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHIucHJldj00NixyLnQ4PXIuY2F0Y2goMzcpLG5ldyBQKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9ci50OD9yLnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiByLm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gci5wcmV2PTUyLHIudDk9dGhpcy5fZGF0YUxheWVyLHIubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHIudDEwPXIuc2VudCxyLm5leHQ9NTksci50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHIudDksci50MTApO2Nhc2UgNTk6ci5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgci5wcmV2PTYxLHIudDExPXIuY2F0Y2goNTIpLG5ldyBQKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9ci50MTE/ci50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gci5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4sYSxpLG8scyx1LGM7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBmKCl7dmFyIGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihmKXtmb3IoOzspc3dpdGNoKGYucHJldj1mLm5leHQpe2Nhc2UgMDpyZXR1cm4gZi5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGw9Zi5zZW50LGYudDA9bnVsbCE9PShlPWwuYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixmLnQxPW51bGwhPT0odD1sLmNoZWNrX3Nlc3Npb25faWZyYW1lKSYmdm9pZCAwIT09dD90OiIiLGYudDI9bnVsbCE9PShyPWwuZW5kX3Nlc3Npb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1yP3I6IiIsZi50Mz1udWxsIT09KG49bC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGYudDQ9bnVsbCE9PShhPWwuaXNzdWVyKSYmdm9pZCAwIT09YT9hOiIiLGYudDU9bnVsbCE9PShpPWwuandrc191cmkpJiZ2b2lkIDAhPT1pP2k6IiIsZi50Nj1udWxsIT09KG89bC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1vP286IiIsZi50Nz1udWxsIT09KHM9bC5yZXZvY2F0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cz9zOiIiLGYudDg9bnVsbCE9PSh1PWwudG9rZW5fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsZi50OT1udWxsIT09KGM9bC51c2VyaW5mb19lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIixmLm5leHQ9MTUsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSAxNTpyZXR1cm4gZi50MTA9Zi5zZW50LGYuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6Zi50MCxjaGVja1Nlc3Npb25JZnJhbWU6Zi50MSxlbmRTZXNzaW9uRW5kcG9pbnQ6Zi50MixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6Zi50Myxpc3N1ZXI6Zi50NCxqd2tzVXJpOmYudDUscmVnaXN0cmF0aW9uRW5kcG9pbnQ6Zi50NixyZXZvY2F0aW9uRW5kcG9pbnQ6Zi50Nyx0b2tlbkVuZHBvaW50OmYudDgsdXNlcmluZm9FbmRwb2ludDpmLnQ5LHdlbGxLbm93bkVuZHBvaW50OmYudDEwfSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGYuc3RvcCgpfX0pLGYsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKGEudDE9dD1hLnNlbnQsYS50MD1udWxsPT09YS50MSxhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj12b2lkIDAsYS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6YS50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIGk9YS50MixhLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihvPWEuc2VudCxpJiYwIT09aS50cmltKCkubGVuZ3RoKXthLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDEiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gYS5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKGEudDQ9cj1hLnNlbnQsYS50Mz1udWxsPT09YS50NCxhLnQzKXthLm5leHQ9MjM7YnJlYWt9YS50Mz12b2lkIDA9PT1yO2Nhc2UgMjM6aWYoIWEudDMpe2EubmV4dD0yNzticmVha31hLnQ1PXZvaWQgMCxhLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzphLnQ1PXIuaWRfdG9rZW47Y2FzZSAyODppZigocz1hLnQ1KSYmMCE9PXMudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBQKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAyIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKHU9bnVsbCE9PShuPW51bGw9PW8/dm9pZCAwOm8uc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09bj9uOm51bGw9PW8/dm9pZCAwOm8uc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09dS50cmltKCkubGVuZ3RoKXthLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IFAoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDMiLCJObyBzaWduLW91dCByZWRpcmVjdCBVUkwgZm91bmQuIiwiVGhlIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBjYW5ub3QgYmUgZm91bmQgb3IgdGhlIFVSTCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4gTm8gc2lnbi1pbiByZWRpcmVjdCBVUkwgaGFzIGJlZW4gZm91bmQgZWl0aGVyLiAiKTtjYXNlIDM0OnJldHVybiBhLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQoaSwiP2lkX3Rva2VuX2hpbnQ9IikuY29uY2F0KHMsIiZwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9IikuY29uY2F0KHUsIiZzdGF0ZT1zaWduX291dF9zdWNjZXNzIikpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTChlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjppZihyLnQxPXQ9ci5zZW50LHIudDA9bnVsbD09PXIudDEsci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDA9PT10O2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9dm9pZCAwLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9dC5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUJvb2xlYW4sdC5uZXh0PTMsdGhpcy5nZXRBY2Nlc3NUb2tlbihlKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCgwLHQudDApKHQudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShlKSx0KTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSxlLHIpO2Nhc2UgMjpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOmlmKCFlLm92ZXJyaWRlV2VsbEVuZHBvaW50Q29uZmlnKXt0Lm5leHQ9MTM7YnJlYWt9aWYodC50MD1udWxsPT1lP3ZvaWQgMDplLmVuZHBvaW50cywhdC50MCl7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQxPXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9OCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzKHt9KTtjYXNlIDg6cmV0dXJuIHQudDI9dC5zZW50LHQubmV4dD0xMSx0LnQxLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50MSx0LnQyKTtjYXNlIDExOnQubmV4dD0xNzticmVhaztjYXNlIDEzOmlmKHQudDM9bnVsbD09ZT92b2lkIDA6ZS5lbmRwb2ludHMsIXQudDMpe3QubmV4dD0xNzticmVha31yZXR1cm4gdC5uZXh0PTE3LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxNPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe2kodGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG8scztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixpPWEmJkpTT04ucGFyc2UoYSksbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksdCkscz1KU09OLnN0cmluZ2lmeShvKSxuLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG47cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoYS50MT1uPWEuc2VudCxhLnQwPW51bGwhPT1hLnQxLCFhLnQwKXthLm5leHQ9NjticmVha31hLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFhLnQwKXthLm5leHQ9MTA7YnJlYWt9YS50Mj1uLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9bnVsbDtjYXNlIDExOnJldHVybiBpPWEudDIsbz1pJiZKU09OLnBhcnNlKGkpLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHUoe30sdCxyKSksYz1KU09OLnN0cmluZ2lmeShzKSxhLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1uLnQyLGk9YSYmSlNPTi5wYXJzZShhKSxkZWxldGUobz1PYmplY3QuYXNzaWduKHt9LGkpKVt0XSxzPUpTT04uc3RyaW5naWZ5KG8pLG4ubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUscyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQsIi0iKS5jb25jYXQodCk6IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQpfX0se2tleToic2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBuPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsciksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX1dKSxlfSgpLGo9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpTLnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sTj1mdW5jdGlvbigpewovKioKICAgICAgICAgKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSAuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0b3JlfSBzdG9yZSAtIFRoZSBzdG9yZSBvYmplY3QuCiAgICAgICAgICoKICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAqIGBgYAogICAgICAgICAqIGNvbnN0IF9zdG9yZTogU3RvcmUgPSBuZXcgRGF0YVN0b3JlKCk7CiAgICAgICAgICogY29uc3QgYXV0aCA9IG5ldyBBc2dhcmRlb0F1dGhDbGllbnQ8Q3VzdG9tQ2xpZW50Q29uZmlnPihfc3RvcmUpOwogICAgICAgICAqIGBgYAogICAgICAgICAqCiAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2NvbnN0cnVjdG9yCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovCmZ1bmN0aW9uIGUodCxyKXtpKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IE0oImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgTCh0aGlzLl9kYXRhTGF5ZXIscil9Ci8qKgogICAgICAgICAqCiAgICAgICAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFNESyB3aXRoIHRoZSBjb25maWcgZGF0YS4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7QXV0aENsaWVudENvbmZpZzxUPn0gY29uZmlnIC0gVGhlIGNvbmZpZyBvYmplY3QgdG8gaW5pdGlhbGl6ZSB3aXRoLgogICAgICAgICAqCiAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAogICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCiAgICAgICAgICogICAgIHNlcnZlck9yaWdpbjogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICogfQogICAgICAgICAqCiAgICAgICAgICogYXdhaXQgYXV0aC5pbml0aWFsaXplKGNvbmZpZyk7CiAgICAgICAgICoKICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaW5pdGlhbGl6ZQogICAgICAgICAqCiAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICovcmV0dXJuIHMoZSxbe2tleToiaW5pdGlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGopLGUpLHtzY29wZTpbXS5jb25jYXQoYihudWxsIT09KHQ9ai5zY29wZSkmJnZvaWQgMCE9PXQ/dDpbXSksYihudWxsIT09KG49bnVsbD09PShyPWUuc2NvcGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIShudWxsPT09KHQ9bnVsbD09aj92b2lkIDA6ai5zY29wZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZSkpfSkpKSYmdm9pZCAwIT09bj9uOltdKSl9KSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYERhdGFMYXllcmAgb2JqZWN0IHRoYXQgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYXV0aGVudGljYXRpb24gZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtEYXRhTGF5ZXJ9IC0gVGhlIGBEYXRhTGF5ZXJgIG9iamVjdC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkYXRhID0gYXV0aC5nZXREYXRhTGF5ZXIoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREYXRhTGF5ZXIKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfQovKioKICAgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge0dldEF1dGhVUkxDb25maWd9IGNvbmZpZyAtIChPcHRpb25hbCkgQSBjb25maWcgb2JqZWN0IHRvIGZvcmNlIGluaXRpYWxpemF0aW9uIGFuZCBwYXNzCiAgICAgICAgICAgKiBjdXN0b20gcGF0aCBwYXJhbWV0ZXJzIHN1Y2ggYXMgdGhlIGZpZHAgcGFyYW1ldGVyLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5nZXRBdXRob3JpemF0aW9uVVJMKCkudGhlbigodXJsKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHVybCk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBdXRob3JpemF0aW9uVVJMCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBudWxsPT0obj1PYmplY3QuYXNzaWduKHt9LGUpKXx8ZGVsZXRlIG4uZm9yY2VJbml0LHIubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OmlmKCFyLnNlbnQpe3IubmV4dD04O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwobix0KSxyLm5leHQ9OTticmVhaztjYXNlIDg6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEobnVsbD09ZT92b2lkIDA6ZS5mb3JjZUluaXQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGEuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKG4sdCl9KSk7Y2FzZSA5OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCBzZW5kcyBhIHJlcXVlc3QgdG8gb2J0YWluIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlCiAgICAgICAgICAgKiB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JpemF0aW9uQ29kZSAtIFRoZSBhdXRob3JpemF0aW9uIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvblN0YXRlIC0gVGhlIHNlc3Npb24gc3RhdGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXF1ZXN0QWNjZXNzVG9rZW4oYXV0aENvZGUsIHNlc3Npb25TdGF0ZSkudGhlbigodG9rZW4pPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codG9rZW4pOwogICAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICogfSk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDI6aWYoIWEuc2VudCl7YS5uZXh0PTY7YnJlYWt9YS50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxyLG4pLGEubmV4dD03O2JyZWFrO2Nhc2UgNjphLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQscixuKX0pKTtjYXNlIDc6cmV0dXJuIGEuYWJydXB0KCJyZXR1cm4iLGEudDApO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGEuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYXV0aGVudGljYXRpb24gZGF0YSBhbmQgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5zaWduT3V0KCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjc2lnbk91dAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNpZ25PdXQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBkb2Vzbid0IGNsZWFyIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBzaWduT3V0VXJsID0gYXdhaXQgYXV0aC5nZXRTaWduT3V0VVJMKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0U2lnbk91dFVSTAogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFNpZ25PdXRVUkwoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cyB0aGF0IGFyZSBmZXRjaGVkIGZyb20gdGhlIGAud2VsbC1rbm93bmAgZW5kcG9pbnQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxPSURDRW5kcG9pbnRzPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBPSURDIHNlcnZpY2UgZW5kcG9pbnRzLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IGVuZHBvaW50cyA9IGF3YWl0IGF1dGguZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRPSURDU2VydmljZUVuZHBvaW50cwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIGRlY29kZXMgdGhlIHBheWxvYWQgb2YgdGhlIElEIHRva2VuIGFuZCByZXR1cm5zIGl0LgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxEZWNvZGVkSURUb2tlblBheWxvYWQ+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRlY29kZWQgSUQgdG9rZW4gcGF5bG9hZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBkZWNvZGVkSWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0RGVjb2RlZElEVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREZWNvZGVkSURUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXREZWNvZGVkSURUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgSUQgdG9rZW4uCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogY29uc3QgaWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0SURUb2tlbigpOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldElEVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uIG9idGFpbmVkIGZyb20gdGhlIElEIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxCYXNpY1VzZXJJbmZvPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGNvbnN0IHVzZXJJbmZvID0gYXdhaXQgYXV0aC5nZXRCYXNpY1VzZXJJbmZvKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QmFzaWNVc2VySW5mbwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldm9rZXMgdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqICoqVGhpcyBtZXRob2QgYWxzbyBjbGVhcnMgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIG9mIHRoZSByZXZva2UtYWNjZXNzLXRva2VuIHJlcXVlc3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewogICAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICAgICAqIH0pOwogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3Jldm9rZUFjY2Vzc1Rva2VuCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbihlKX0KLyoqCiAgICAgICAgICAgKiBUaGlzIG1ldGhvZCByZWZyZXNoZXMgdGhlIGFjY2VzcyB0b2tlbiBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYWNjZXNzCiAgICAgICAgICAgKiB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGV4YW1wbGUKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogYXV0aC5yZWZyZXNoQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZWZyZXNoQWNjZXNzVG9rZW4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oZSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYWNjZXNzIHRva2VuLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VySUQgLSAoT3B0aW9uYWwpIEEgdW5pcXVlIElEIG9mIHRoZSB1c2VyIHRvIGJlIGF1dGhlbnRpY2F0ZWQuIFRoaXMgaXMgdXNlZnVsIGluIG11bHRpLXVzZXIKICAgICAgICAgICAqIHNjZW5hcmlvcyB3aGVyZSBlYWNoIHVzZXIgc2hvdWxkIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGFjY2VzcyB0b2tlbi4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGF1dGguZ2V0QWNjZXNzVG9rZW4oKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBY2Nlc3NUb2tlbgogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBjdXN0b20tZ3JhbnQgcmVxdWVzdCBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZQogICAgICAgICAgICogZGVwZW5kaW5nIG9uIHRoZSBjb25maWcgcGFzc2VkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBwYXJhbSB7Q3VzdG9tR3JhbnRDb25maWd9IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCBjb250YWluaW5nIHRoZSBjdXN0b20gZ3JhbnQgY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEIC0gKE9wdGlvbmFsKSBBIHVuaXF1ZSBJRCBvZiB0aGUgdXNlciB0byBiZSBhdXRoZW50aWNhdGVkLiBUaGlzIGlzIHVzZWZ1bCBpbiBtdWx0aS11c2VyCiAgICAgICAgICAgKiBzY2VuYXJpb3Mgd2hlcmUgZWFjaCB1c2VyIHNob3VsZCBiZSB1bmlxdWVseSBpZGVudGlmaWVkLgogICAgICAgICAgICoKICAgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZSB8IEZldGNoUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRlcGVuZGluZwogICAgICAgICAgICogb24geW91ciBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgIGF0dGFjaFRva2VuOiBmYWxzZSwKICAgICAgICAgICAqICAgZGF0YTogewogICAgICAgICAgICogICAgICAgY2xpZW50X2lkOiAie3tjbGllbnRJRH19IiwKICAgICAgICAgICAqICAgICAgIGdyYW50X3R5cGU6ICJhY2NvdW50X3N3aXRjaCIsCiAgICAgICAgICAgKiAgICAgICBzY29wZTogInt7c2NvcGV9fSIsCiAgICAgICAgICAgKiAgICAgICB0b2tlbjogInt7dG9rZW59fSIsCiAgICAgICAgICAgKiAgIH0sCiAgICAgICAgICAgKiAgIGlkOiAiYWNjb3VudC1zd2l0Y2giLAogICAgICAgICAgICogICByZXR1cm5SZXNwb25zZTogdHJ1ZSwKICAgICAgICAgICAqICAgcmV0dXJuc1Nlc3Npb246IHRydWUsCiAgICAgICAgICAgKiAgIHNpZ25JblJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXV0aC5yZXF1ZXN0Q3VzdG9tR3JhbnQoY29uZmlnKS50aGVuKChyZXNwb25zZSk9PnsKICAgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CiAgICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgKiB9KTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXF1ZXN0Q3VzdG9tR3JhbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlLHQpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLgogICAgICAgICAgICoKICAgICAgICAgICAqIEBleGFtcGxlCiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqIGF3YWl0IGF1dGguaXNBdXRoZW50aWNhdGVkKCk7CiAgICAgICAgICAgKiBgYGAKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNBdXRoZW50aWNhdGVkCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5pc0F1dGhlbnRpY2F0ZWQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIFBLQ0UgY29kZSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZSAtIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgdGhhdCB3YXMgcGFzc2VkIGluIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIFBLQ0UgY29kZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBwa2NlID0gYXdhaXQgZ2V0UEtDRUNvZGUoKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICoKICAgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRQS0NFQ29kZQogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqL30se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFBLQ0VDb2RlKGUsdCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfQovKioKICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIFBLQ0UgY29kZSB0byB0aGUgZGF0YSBzdG9yZS4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGtjZSAtIFRoZSBQS0NFIGNvZGUuCiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgcGFyYW1ldGVyIHRoYXQgd2FzIHBhc3NlZCBpbiB0aGUgYXV0aGVudGljYXRpb24gVVJMLgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJJRCAtIChPcHRpb25hbCkgQSB1bmlxdWUgSUQgb2YgdGhlIHVzZXIgdG8gYmUgYXV0aGVudGljYXRlZC4gVGhpcyBpcyB1c2VmdWwgaW4gbXVsdGktdXNlcgogICAgICAgICAgICogc2NlbmFyaW9zIHdoZXJlIGVhY2ggdXNlciBzaG91bGQgYmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBhd2FpdCBhdXRoLnNldFBLQ0VDb2RlKCJwa2NlX2NvZGUiKQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NldFBLQ0VDb2RlCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlLHQscik7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaXMgc3VjY2Vzc2Z1bCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzU2lnbk91dFN1Y2Nlc3NmdWwKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CiAgICAgICAgICAgKgogICAgICAgICAgICogQHByZXNlcnZlCiAgICAgICAgICAgKi99LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3Igd2hlbiBpbnN0YW50aWF0aW5nIHRoaXMgY2xhc3MuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtQYXJ0aWFsPEF1dGhDbGllbnRDb25maWc8VD4+fSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgdG8gdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlvbnMgd2l0aC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiBAZXhhbXBsZQogICAgICAgICAgICogYGBgCiAgICAgICAgICAgKiBjb25zdCBjb25maWcgPSB7CiAgICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCiAgICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAogICAgICAgICAgICogICAgIHNlcnZlck9yaWdpbjogImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMiCiAgICAgICAgICAgKiB9CiAgICAgICAgICAgKgogICAgICAgICAgICogYXdhaXQgYXV0aC51cGRhdGVDb25maWcoY29uZmlnKTsKICAgICAgICAgICAqIGBgYAogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3VwZGF0ZUNvbmZpZwogICAgICAgICAgICoKICAgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKICAgICAgICAgICAqCiAgICAgICAgICAgKiBAcHJlc2VydmUKICAgICAgICAgICAqLwpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dLFt7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmIW59Ci8qKgogICAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBpZiB0aGUgc2lnbi1vdXQgaGFzIGZhaWxlZCBvciBub3QuCiAgICAgICAgICAgKgogICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KICAgICAgICAgICAqCiAgICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKICAgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCiAgICAgICAgICAgKgogICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCiAgICAgICAgICAgKgogICAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2RpZFNpZ25PdXRGYWlsCiAgICAgICAgICAgKgogICAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAogICAgICAgICAgICoKICAgICAgICAgICAqIEBwcmVzZXJ2ZQogICAgICAgICAgICovfSx7a2V5OiJkaWRTaWduT3V0RmFpbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJm59fV0pLGV9KCkscT0iaW5pdCI7IWZ1bmN0aW9uKGUpe2UuTG9jYWxTdG9yYWdlPSJsb2NhbFN0b3JhZ2UiLGUuU2Vzc2lvblN0b3JhZ2U9InNlc3Npb25TdG9yYWdlIixlLldlYldvcmtlcj0id2ViV29ya2VyIixlLkJyb3dzZXJNZW1vcnk9ImJyb3dzZXJNZW1vcnkifShEfHwoRD17fSkpLGZ1bmN0aW9uKGUpe2UuU2lnbkluPSJzaWduLWluIixlLlNpZ25PdXQ9InNpZ24tb3V0IixlLkluaXRpYWxpemU9ImluaXRpYWxpemUiLGUuSHR0cFJlcXVlc3RTdGFydD0iaHR0cC1yZXF1ZXN0LXN0YXJ0IixlLkh0dHBSZXF1ZXN0RmluaXNoPSJodHRwLXJlcXVlc3QtZmluaXNoIixlLkh0dHBSZXF1ZXN0RXJyb3I9Imh0dHAtcmVxdWVzdC1lcnJvciIsZS5IdHRwUmVxdWVzdFN1Y2Nlc3M9Imh0dHAtcmVxdWVzdC1zdWNjZXNzIixlLlJldm9rZUFjY2Vzc1Rva2VuPSJyZXZva2UtYWNjZXNzLXRva2VuIixlLkN1c3RvbUdyYW50PSJjdXN0b20tZ3JhbnQiLGUuU2lnbk91dEZhaWxlZD0ic2lnbi1vdXQtZmFpbGVkIn0oSXx8KEk9e30pKTt2YXIgSz0iY3VzdG9tX2dyYW50X2NvbmZpZyIsSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aSh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpfXJldHVybiBzKGUsW3trZXk6InJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLGE9dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6aWYoISh0PWUuc2VudCkucmVmcmVzaF90b2tlbil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIHI9cGFyc2VJbnQodC5leHBpcmVzX2luKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIF8oYSx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSwxZTMqKHI8PTEwP3I6ci0xMCkpLGUubmV4dD05LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKFQsSlNPTi5zdHJpbmdpZnkobikpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKFQpO2Nhc2UgMjppZighZS5zZW50KXtlLm5leHQ9OTticmVha31yZXR1cm4gZS50MD1KU09OLGUubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKFQpO2Nhc2UgNjplLnQxPWUuc2VudCx0PWUudDAucGFyc2UuY2FsbChlLnQwLGUudDEpLGNsZWFyVGltZW91dCh0KTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19XSksZX0oKSxCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2kodGhpcyxlKX1yZXR1cm4gcyhlLG51bGwsW3trZXk6ImdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybntibG9iOihudWxsPT1lP3ZvaWQgMDplLmRhdGEpaW5zdGFuY2VvZiBCbG9iP251bGw9PWU/dm9pZCAwOmUuZGF0YTpudWxsLGRhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiEwfX19LHtrZXk6ImdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybihudWxsPT1lP3ZvaWQgMDplLnRvSlNPTikmJmRlbGV0ZSBlLnRvSlNPTix7ZXJyb3I6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSxzdWNjZXNzOiExfX19XSksZX0oKSxGPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gVyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIHooZSl7aWYoZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9KSksdH12YXIgWT17ZXhwb3J0czp7fX0sVj1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fSxHPVYsWD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uICQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gWihlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBRKGUpe3JldHVybiJbb2JqZWN0IEFycmF5QnVmZmVyXSI9PT1YLmNhbGwoZSl9ZnVuY3Rpb24gZWUoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PXIoZSl9ZnVuY3Rpb24gdGUoZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1YLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PVguY2FsbChlKX1mdW5jdGlvbiBuZShlLHQpe2lmKG51bGwhPWUpaWYoIm9iamVjdCIhPT1yKGUpJiYoZT1bZV0pLCQoZSkpZm9yKHZhciBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXQuY2FsbChudWxsLGVbbl0sbixlKTtlbHNlIGZvcih2YXIgaSBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZ0LmNhbGwobnVsbCxlW2ldLGksZSl9dmFyIGFlPXtpc0FycmF5OiQsaXNBcnJheUJ1ZmZlcjpRLGlzQnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT09ZSYmIVooZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhWihlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRm9ybURhdGFdIj09PVguY2FsbChlKX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmUShlLmJ1ZmZlcil9LGlzU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0saXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfSxpc09iamVjdDplZSxpc1BsYWluT2JqZWN0OnRlLGlzVW5kZWZpbmVkOlosaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PVguY2FsbChlKX0saXNGaWxlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZpbGVdIj09PVguY2FsbChlKX0saXNCbG9iOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEJsb2JdIj09PVguY2FsbChlKX0saXNGdW5jdGlvbjpyZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gZWUoZSkmJnJlKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10iPT09WC5jYWxsKGUpfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOm5lLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7dGUodFtuXSkmJnRlKHIpP3Rbbl09ZSh0W25dLHIpOnRlKHIpP3Rbbl09ZSh7fSxyKTokKHIpP3Rbbl09ci5zbGljZSgpOnRbbl09cn1mb3IodmFyIG49MCxhPWFyZ3VtZW50cy5sZW5ndGg7bjxhO24rKyluZShhcmd1bWVudHNbbl0scik7cmV0dXJuIHR9LGV4dGVuZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIG5lKHQsKGZ1bmN0aW9uKHQsbil7ZVtuXT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgdD9HKHQscik6dH0pKSxlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGUpe3JldHVybiA2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSksZX19LGllPWFlO2Z1bmN0aW9uIG9lKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfXZhciBzZT1mdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7dmFyIG47aWYociluPXIodCk7ZWxzZSBpZihpZS5pc1VSTFNlYXJjaFBhcmFtcyh0KSluPXQudG9TdHJpbmcoKTtlbHNle3ZhciBhPVtdO2llLmZvckVhY2godCwoZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYoaWUuaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLGllLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7aWUuaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOmllLmlzT2JqZWN0KGUpJiYoZT1KU09OLnN0cmluZ2lmeShlKSksYS5wdXNoKG9lKHQpKyI9IitvZShlKSl9KSkpfSkpLG49YS5qb2luKCImIil9aWYobil7dmFyIGk9ZS5pbmRleE9mKCIjIik7LTEhPT1pJiYoZT1lLnNsaWNlKDAsaSkpLGUrPSgtMT09PWUuaW5kZXhPZigiPyIpPyI/IjoiJiIpK259cmV0dXJuIGV9LHVlPWFlO2Z1bmN0aW9uIGNlKCl7dGhpcy5oYW5kbGVycz1bXX1jZS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOiEhciYmci5zeW5jaHJvbm91cyxydW5XaGVuOnI/ci5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSxjZS5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9LGNlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe3VlLmZvckVhY2godGhpcy5oYW5kbGVycywoZnVuY3Rpb24odCl7bnVsbCE9PXQmJmUodCl9KSl9O3ZhciBmZT1jZSxsZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9O2Z1bmN0aW9uIGhlKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcGUoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciBkZT1oZSx2ZT1wZTtmdW5jdGlvbiBnZShlKXtpZihkZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoZGU9PT1oZXx8IWRlKSYmc2V0VGltZW91dClyZXR1cm4gZGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBkZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gZGUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGRlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIGxlLnNldFRpbWVvdXQmJihkZT1zZXRUaW1lb3V0KSwiZnVuY3Rpb24iPT10eXBlb2YgbGUuY2xlYXJUaW1lb3V0JiYodmU9Y2xlYXJUaW1lb3V0KTt2YXIgbWUseWU9W10sYmU9ITEsd2U9LTE7ZnVuY3Rpb24ga2UoKXtiZSYmbWUmJihiZT0hMSxtZS5sZW5ndGg/eWU9bWUuY29uY2F0KHllKTp3ZT0tMSx5ZS5sZW5ndGgmJlJlKCkpfWZ1bmN0aW9uIFJlKCl7aWYoIWJlKXt2YXIgZT1nZShrZSk7YmU9ITA7Zm9yKHZhciB0PXllLmxlbmd0aDt0Oyl7Zm9yKG1lPXllLHllPVtdOysrd2U8dDspbWUmJm1lW3dlXS5ydW4oKTt3ZT0tMSx0PXllLmxlbmd0aH1tZT1udWxsLGJlPSExLGZ1bmN0aW9uKGUpe2lmKHZlPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKHZlPT09cGV8fCF2ZSkmJmNsZWFyVGltZW91dClyZXR1cm4gdmU9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7dmUoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiB2ZS5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIHZlLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gX2UoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1fZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX07ZnVuY3Rpb24geGUoKXt9dmFyIFNlPXhlLEVlPXhlLEFlPXhlLFRlPXhlLENlPXhlLFBlPXhlLE9lPXhlO3ZhciBEZT1sZS5wZXJmb3JtYW5jZXx8e30sSWU9RGUubm93fHxEZS5tb3pOb3d8fERlLm1zTm93fHxEZS5vTm93fHxEZS53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBVZT1uZXcgRGF0ZTt2YXIgSGU9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07eWUucHVzaChuZXcgX2UoZSx0KSksMSE9PXllLmxlbmd0aHx8YmV8fGdlKFJlKX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpTZSxhZGRMaXN0ZW5lcjpFZSxvbmNlOkFlLG9mZjpUZSxyZW1vdmVMaXN0ZW5lcjpDZSxyZW1vdmVBbGxMaXN0ZW5lcnM6UGUsZW1pdDpPZSxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSpJZS5jYWxsKERlKSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1VZSkvMWUzfX0sTGU9SGUsTWU9YWUsamU9ZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4gZS5jb25maWc9dCxyJiYoZS5jb2RlPXIpLGUucmVxdWVzdD1uLGUucmVzcG9uc2U9YSxlLmlzQXhpb3NFcnJvcj0hMCxlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19LGV9LE5lPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSxxZT1qZSxLZT1mdW5jdGlvbihlLHQscixuLGEpe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gcWUoaSx0LHIsbixhKX0sSmU9S2UsQmU9YWUsRmU9QmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3ZhciBvPVtdO28ucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLEJlLmlzTnVtYmVyKHIpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxCZS5pc1N0cmluZyhuKSYmby5wdXNoKCJwYXRoPSIrbiksQmUuaXNTdHJpbmcoYSkmJm8ucHVzaCgiZG9tYWluPSIrYSksITA9PT1pJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSxXZT1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfSx6ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfSxZZT1hZSxWZT1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLEdlPWFlLFhlPUdlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPUdlLmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH07ZnVuY3Rpb24gJGUoZSl7dGhpcy5tZXNzYWdlPWV9JGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LCRlLnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwO3ZhciBaZT0kZSxRZT1hZSxldD1mdW5jdGlvbihlLHQscil7dmFyIG49ci5jb25maWcudmFsaWRhdGVTdGF0dXM7ci5zdGF0dXMmJm4mJiFuKHIuc3RhdHVzKT90KEplKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrci5zdGF0dXMsci5jb25maWcsbnVsbCxyLnJlcXVlc3QscikpOmUocil9LHR0PUZlLHJ0PXNlLG50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiFXZSh0KT96ZShlLHQpOnR9LGF0PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhPXt9O3JldHVybiBlPyhZZS5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKG49ZS5pbmRleE9mKCI6IiksdD1ZZS50cmltKGUuc3Vic3RyKDAsbikpLnRvTG93ZXJDYXNlKCkscj1ZZS50cmltKGUuc3Vic3RyKG4rMSkpLHQpe2lmKGFbdF0mJlZlLmluZGV4T2YodCk+PTApcmV0dXJuO2FbdF09InNldC1jb29raWUiPT09dD8oYVt0XT9hW3RdOltdKS5jb25jYXQoW3JdKTphW3RdP2FbdF0rIiwgIityOnJ9fSkpLGEpOmF9LGl0PVhlLG90PUtlLHN0PU5lLHV0PVplLGN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXt2YXIgbixhPWUuZGF0YSxpPWUuaGVhZGVycyxvPWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHMoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsbil9UWUuaXNGb3JtRGF0YShhKSYmZGVsZXRlIGlbIkNvbnRlbnQtVHlwZSJdO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBjPWUuYXV0aC51c2VybmFtZXx8IiIsZj1lLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO2kuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGMrIjoiK2YpfXZhciBsPW50KGUuYmFzZVVSTCxlLnVybCk7ZnVuY3Rpb24gaCgpe2lmKHUpe3ZhciBuPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gdT9hdCh1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGE9e2RhdGE6byYmInRleHQiIT09byYmImpzb24iIT09bz91LnJlc3BvbnNlOnUucmVzcG9uc2VUZXh0LHN0YXR1czp1LnN0YXR1cyxzdGF0dXNUZXh0OnUuc3RhdHVzVGV4dCxoZWFkZXJzOm4sY29uZmlnOmUscmVxdWVzdDp1fTtldCgoZnVuY3Rpb24oZSl7dChlKSxzKCl9KSwoZnVuY3Rpb24oZSl7cihlKSxzKCl9KSxhKSx1PW51bGx9fWlmKHUub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHJ0KGwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksdS50aW1lb3V0PWUudGltZW91dCwib25sb2FkZW5kImluIHU/dS5vbmxvYWRlbmQ9aDp1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UmJjQ9PT11LnJlYWR5U3RhdGUmJigwIT09dS5zdGF0dXN8fHUucmVzcG9uc2VVUkwmJjA9PT11LnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KGgpfSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXt1JiYocihvdCgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGwpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyKG90KCJOZXR3b3JrIEVycm9yIixlLG51bGwsdSkpLHU9bnVsbH0sdS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsbj1lLnRyYW5zaXRpb25hbHx8c3Q7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIob3QodCxlLG4uY2xhcmlmeVRpbWVvdXRFcnJvcj8iRVRJTUVET1VUIjoiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsfSxRZS5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgcD0oZS53aXRoQ3JlZGVudGlhbHN8fGl0KGwpKSYmZS54c3JmQ29va2llTmFtZT90dC5yZWFkKGUueHNyZkNvb2tpZU5hbWUpOnZvaWQgMDtwJiYoaVtlLnhzcmZIZWFkZXJOYW1lXT1wKX0ic2V0UmVxdWVzdEhlYWRlciJpbiB1JiZRZS5mb3JFYWNoKGksKGZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09YSYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGlbdF06dS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSksUWUuaXNVbmRlZmluZWQoZS53aXRoQ3JlZGVudGlhbHMpfHwodS53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksbyYmImpzb24iIT09byYmKHUucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkRvd25sb2FkUHJvZ3Jlc3MmJnUuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzJiZ1LnVwbG9hZCYmdS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25VcGxvYWRQcm9ncmVzcyksKGUuY2FuY2VsVG9rZW58fGUuc2lnbmFsKSYmKG49ZnVuY3Rpb24oZSl7dSYmKHIoIWV8fGUmJmUudHlwZT9uZXcgdXQoImNhbmNlbGVkIik6ZSksdS5hYm9ydCgpLHU9bnVsbCl9LGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiYoZS5zaWduYWwuYWJvcnRlZD9uKCk6ZS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pKSksYXx8KGE9bnVsbCksdS5zZW5kKGEpfSkpfSxmdD1hZSxsdD1mdW5jdGlvbihlLHQpe01lLmZvckVhY2goZSwoZnVuY3Rpb24ocixuKXtuIT09dCYmbi50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpJiYoZVt0XT1yLGRlbGV0ZSBlW25dKX0pKX0saHQ9amUscHQ9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifTtmdW5jdGlvbiBkdChlLHQpeyFmdC5pc1VuZGVmaW5lZChlKSYmZnQuaXNVbmRlZmluZWQoZVsiQ29udGVudC1UeXBlIl0pJiYoZVsiQ29udGVudC1UeXBlIl09dCl9dmFyIHZ0LGd0PXt0cmFuc2l0aW9uYWw6TmUsYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PUxlJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoTGUpKSYmKHZ0PWN0KSx2dCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gbHQodCwiQWNjZXB0IiksbHQodCwiQ29udGVudC1UeXBlIiksZnQuaXNGb3JtRGF0YShlKXx8ZnQuaXNBcnJheUJ1ZmZlcihlKXx8ZnQuaXNCdWZmZXIoZSl8fGZ0LmlzU3RyZWFtKGUpfHxmdC5pc0ZpbGUoZSl8fGZ0LmlzQmxvYihlKT9lOmZ0LmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOmZ0LmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhkdCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6ZnQuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhkdCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKGZ0LmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksZnQudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fGd0LnRyYW5zaXRpb25hbCxyPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGE9IXImJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKGF8fG4mJmZ0LmlzU3RyaW5nKGUpJiZlLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7aWYoYSl7aWYoIlN5bnRheEVycm9yIj09PWUubmFtZSl0aHJvdyBodChlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O2Z0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe2d0LmhlYWRlcnNbZV09e319KSksZnQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtndC5oZWFkZXJzW2VdPWZ0Lm1lcmdlKHB0KX0pKTt2YXIgbXQ9Z3QseXQ9YWUsYnQ9bXQsd3Q9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9LGt0PWFlLFJ0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxidDtyZXR1cm4geXQuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sX3Q9d3QseHQ9bXQsU3Q9WmU7ZnVuY3Rpb24gRXQoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IFN0KCJjYW5jZWxlZCIpfXZhciBBdD1hZSxUdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307ZnVuY3Rpb24gbihlLHQpe3JldHVybiBBdC5pc1BsYWluT2JqZWN0KGUpJiZBdC5pc1BsYWluT2JqZWN0KHQpP0F0Lm1lcmdlKGUsdCk6QXQuaXNQbGFpbk9iamVjdCh0KT9BdC5tZXJnZSh7fSx0KTpBdC5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGEocil7cmV0dXJuIEF0LmlzVW5kZWZpbmVkKHRbcl0pP0F0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKGVbcl0sdFtyXSl9ZnVuY3Rpb24gaShlKXtpZighQXQuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG4odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIG8ocil7cmV0dXJuIEF0LmlzVW5kZWZpbmVkKHRbcl0pP0F0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKHZvaWQgMCx0W3JdKX1mdW5jdGlvbiBzKHIpe3JldHVybiByIGluIHQ/bihlW3JdLHRbcl0pOnIgaW4gZT9uKHZvaWQgMCxlW3JdKTp2b2lkIDB9dmFyIHU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOm8sdHJhbnNmb3JtUmVxdWVzdDpvLHRyYW5zZm9ybVJlc3BvbnNlOm8scGFyYW1zU2VyaWFsaXplcjpvLHRpbWVvdXQ6byx0aW1lb3V0TWVzc2FnZTpvLHdpdGhDcmVkZW50aWFsczpvLGFkYXB0ZXI6byxyZXNwb25zZVR5cGU6byx4c3JmQ29va2llTmFtZTpvLHhzcmZIZWFkZXJOYW1lOm8sb25VcGxvYWRQcm9ncmVzczpvLG9uRG93bmxvYWRQcm9ncmVzczpvLGRlY29tcHJlc3M6byxtYXhDb250ZW50TGVuZ3RoOm8sbWF4Qm9keUxlbmd0aDpvLHRyYW5zcG9ydDpvLGh0dHBBZ2VudDpvLGh0dHBzQWdlbnQ6byxjYW5jZWxUb2tlbjpvLHNvY2tldFBhdGg6byxyZXNwb25zZUVuY29kaW5nOm8sdmFsaWRhdGVTdGF0dXM6c307cmV0dXJuIEF0LmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9dVtlXXx8YSxuPXQoZSk7QXQuaXNVbmRlZmluZWQobikmJnQhPT1zfHwocltlXT1uKX0pKSxyfSxDdD0iMC4yNi4xIixQdD1DdCxPdD17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7T3RbZV09ZnVuY3Rpb24obil7cmV0dXJuIHIobik9PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIER0PXt9O090LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLHQpe3JldHVybiJbQXhpb3MgdiIrUHQrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhyPyIuICIrcjoiIil9cmV0dXJuIGZ1bmN0aW9uKHIsYSxpKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG4oYSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhRHRbYV0mJihEdFthXT0hMCxjb25zb2xlLndhcm4obihhLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFlfHxlKHIsYSxpKX19O3ZhciBJdD17YXNzZXJ0T3B0aW9uczpmdW5jdGlvbihlLHQsbil7aWYoIm9iamVjdCIhPT1yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtmb3IodmFyIGE9T2JqZWN0LmtleXMoZSksaT1hLmxlbmd0aDtpLS0gPjA7KXt2YXIgbz1hW2ldLHM9dFtvXTtpZihzKXt2YXIgdT1lW29dLGM9dm9pZCAwPT09dXx8cyh1LG8sZSk7aWYoITAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiAiK28rIiBtdXN0IGJlICIrYyl9ZWxzZSBpZighMCE9PW4pdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIrbyl9fSx2YWxpZGF0b3JzOk90fSxVdD1hZSxIdD1zZSxMdD1mZSxNdD1mdW5jdGlvbihlKXtyZXR1cm4gRXQoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPVJ0LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPWt0Lm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksa3QuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHx4dC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gRXQoZSksdC5kYXRhPVJ0LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIF90KHQpfHwoRXQoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1SdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxqdD1UdCxOdD1JdCxxdD1OdC52YWxpZGF0b3JzO2Z1bmN0aW9uIEt0KGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgTHQscmVzcG9uc2U6bmV3IEx0fX1LdC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZT8odD10fHx7fSkudXJsPWU6dD1lfHx7fSwodD1qdCh0aGlzLmRlZmF1bHRzLHQpKS5tZXRob2Q/dC5tZXRob2Q9dC5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD90Lm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnQubWV0aG9kPSJnZXQiO3ZhciByPXQudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXImJk50LmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6cXQudHJhbnNpdGlvbmFsKHF0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOnF0LnRyYW5zaXRpb25hbChxdC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOnF0LnRyYW5zaXRpb25hbChxdC5ib29sZWFuKX0sITEpO3ZhciBuPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5ydW5XaGVuJiYhMT09PWUucnVuV2hlbih0KXx8KGE9YSYmZS5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZS5mdWxmaWxsZWQsZS5yZWplY3RlZCkpfSkpO3ZhciBpLG89W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFhKXt2YXIgcz1bTXQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkocyxuKSxzPXMuY29uY2F0KG8pLGk9UHJvbWlzZS5yZXNvbHZlKHQpO3MubGVuZ3RoOylpPWkudGhlbihzLnNoaWZ0KCkscy5zaGlmdCgpKTtyZXR1cm4gaX1mb3IodmFyIHU9dDtuLmxlbmd0aDspe3ZhciBjPW4uc2hpZnQoKSxmPW4uc2hpZnQoKTt0cnl7dT1jKHUpfWNhdGNoKGUpe2YoZSk7YnJlYWt9fXRyeXtpPU10KHUpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO28ubGVuZ3RoOylpPWkudGhlbihvLnNoaWZ0KCksby5zaGlmdCgpKTtyZXR1cm4gaX0sS3QucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1qdCh0aGlzLmRlZmF1bHRzLGUpLEh0KGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LFV0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtLdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGp0KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSksVXQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtLdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoanQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIEp0PUt0LEJ0PVplO2Z1bmN0aW9uIEZ0KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihyLl9saXN0ZW5lcnMpe3ZhciB0LG49ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8bjt0Kyspci5fbGlzdGVuZXJzW3RdKGUpO3IuX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKHQpfSxufSxlKChmdW5jdGlvbihlKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBCdChlKSx0KHIucmVhc29uKSl9KSl9RnQucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sRnQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sRnQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9fSxGdC5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZSx0PW5ldyBGdCgoZnVuY3Rpb24odCl7ZT10fSkpO3JldHVybnt0b2tlbjp0LGNhbmNlbDplfX07dmFyIFd0PUZ0LHp0PWFlLFl0PWFlLFZ0PVYsR3Q9SnQsWHQ9VHQ7dmFyICR0PWZ1bmN0aW9uIGUodCl7dmFyIHI9bmV3IEd0KHQpLG49VnQoR3QucHJvdG90eXBlLnJlcXVlc3Qscik7cmV0dXJuIFl0LmV4dGVuZChuLEd0LnByb3RvdHlwZSxyKSxZdC5leHRlbmQobixyKSxuLmNyZWF0ZT1mdW5jdGlvbihyKXtyZXR1cm4gZShYdCh0LHIpKX0sbn0obXQpOyR0LkF4aW9zPUd0LCR0LkNhbmNlbD1aZSwkdC5DYW5jZWxUb2tlbj1XdCwkdC5pc0NhbmNlbD13dCwkdC5WRVJTSU9OPUN0LCR0LmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZSl9LCR0LnNwcmVhZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkobnVsbCx0KX19LCR0LmlzQXhpb3NFcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4genQuaXNPYmplY3QoZSkmJiEwPT09ZS5pc0F4aW9zRXJyb3J9LFkuZXhwb3J0cz0kdCxZLmV4cG9ydHMuZGVmYXVsdD0kdDt2YXIgWnQsUXQ9WS5leHBvcnRzO3ZhciBlcj1adD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSksdGhpcy5hdHRhY2hUb2tlbj1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLmluaXQ9dGhpcy5pbml0LmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2suYmluZCh0aGlzKX1yZXR1cm4gcyhlLFt7a2V5OiJyZXF1ZXN0SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmF0dGFjaFRva2VuKGUpO2Nhc2UgMjpyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS5zaG91bGRFbmNvZGVUb0Zvcm1EYXRhKSYmKHI9bnVsbD09ZT92b2lkIDA6ZS5kYXRhLG49bmV3IEZvcm1EYXRhLE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe24uYXBwZW5kKGUscltlXSl9KSksZS5kYXRhPW4pLFp0LmlzSGFuZGxlckVuYWJsZWQmJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrKGUpLHQuYWJydXB0KCJyZXR1cm4iLGUpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZXJyb3JIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXt0aHJvdyBadC5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJnRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6InN1Y2Nlc3NIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gWnQuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMDtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOlp0LmlzSGFuZGxlckVuYWJsZWQ9ZSx0aGlzLmF0dGFjaFRva2VuPXQ7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJlbmFibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITB9fSx7a2V5OiJkaXNhYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSExfX0se2tleToiZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06WnQuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVDtadC5pc0hhbmRsZXJFbmFibGVkPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMH0pLGUpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWV9fV0sW3trZXk6ImdldEluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuYXhpb3NJbnN0YW5jZXx8KHRoaXMuYXhpb3NJbnN0YW5jZT1RdC5jcmVhdGUoe3dpdGhDcmVkZW50aWFsczohMH0pLHRoaXMuY2xpZW50SW5zdGFuY2V8fCh0aGlzLmNsaWVudEluc3RhbmNlPW5ldyBadCksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIF8oZSx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5jbGllbnRJbnN0YW5jZS5yZXF1ZXN0SGFuZGxlcih0KTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLnN1Y2Nlc3NIYW5kbGVyKHQpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLmVycm9ySGFuZGxlcih0KX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuYWxsPVF0LmFsbCx0aGlzLmF4aW9zSW5zdGFuY2Uuc3ByZWFkPVF0LnNwcmVhZCx0aGlzLmF4aW9zSW5zdGFuY2UuaW5pdD10aGlzLmNsaWVudEluc3RhbmNlLmluaXQsdGhpcy5heGlvc0luc3RhbmNlLmVuYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5lbmFibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0PXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSx0aGlzLmF4aW9zSW5zdGFuY2V9fV0pLGV9KCk7ZXIuREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVD0xZTMsZXI9WnQ9ZnVuY3Rpb24oZSx0LG4sYSl7dmFyIGksbz1hcmd1bWVudHMubGVuZ3RoLHM9bzwzP3Q6bnVsbD09PWE/YT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik6YTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3Q/InVuZGVmaW5lZCI6cihSZWZsZWN0KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQsbixhKTtlbHNlIGZvcih2YXIgdT1lLmxlbmd0aC0xO3U+PTA7dS0tKShpPWVbdV0pJiYocz0obzwzP2kocyk6bz4zP2kodCxuLHMpOmkodCxuKSl8fHMpO3JldHVybiBvPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4scyksc30oW2Z1bmN0aW9uKGUpe31dLGVyKTt2YXIgdHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aSh0aGlzLGUpLHRoaXMuX2RhdGE9bmV3IE1hcH1yZXR1cm4gcyhlLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5zZXQoZSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHI7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbnVsbCE9PShyPW51bGw9PT0odD10aGlzLl9kYXRhKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXQoZSkpJiZ2b2lkIDAhPT1yP3I6Int9Iik7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuZGVsZXRlKGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHJyPVtdLG5yPVtdLGFyPSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LGlyPSExO2Z1bmN0aW9uIG9yKCl7aXI9ITA7Zm9yKHZhciBlPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIix0PTAscj1lLmxlbmd0aDt0PHI7Kyt0KXJyW3RdPWVbdF0sbnJbZS5jaGFyQ29kZUF0KHQpXT10O25yWyItIi5jaGFyQ29kZUF0KDApXT02MixuclsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gc3IoZSx0LHIpe2Zvcih2YXIgbixhLGk9W10sbz10O288cjtvKz0zKW49KGVbb108PDE2KSsoZVtvKzFdPDw4KStlW28rMl0saS5wdXNoKHJyWyhhPW4pPj4xOCY2M10rcnJbYT4+MTImNjNdK3JyW2E+PjYmNjNdK3JyWzYzJmFdKTtyZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiB1cihlKXt2YXIgdDtpcnx8b3IoKTtmb3IodmFyIHI9ZS5sZW5ndGgsbj1yJTMsYT0iIixpPVtdLG89MTYzODMscz0wLHU9ci1uO3M8dTtzKz1vKWkucHVzaChzcihlLHMscytvPnU/dTpzK28pKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLGErPXJyW3Q+PjJdLGErPXJyW3Q8PDQmNjNdLGErPSI9PSIpOjI9PT1uJiYodD0oZVtyLTJdPDw4KStlW3ItMV0sYSs9cnJbdD4+MTBdLGErPXJyW3Q+PjQmNjNdLGErPXJyW3Q8PDImNjNdLGErPSI9IiksaS5wdXNoKGEpLGkuam9pbigiIil9ZnVuY3Rpb24gY3IoZSx0LHIsbixhKXt2YXIgaSxvLHM9OCphLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGw9cj9hLTE6MCxoPXI/LTE6MSxwPWVbdCtsXTtmb3IobCs9aCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtsXSxsKz1oLGYtPTgpO2ZvcihvPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDtvPTI1NipvK2VbdCtsXSxsKz1oLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIG8/TmFOOjEvMCoocD8tMToxKTtvKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqbypNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24gZnIoZSx0LHIsbixhLGkpe3ZhciBvLHMsdSxjPTgqaS1hLTEsZj0oMTw8YyktMSxsPWY+PjEsaD0yMz09PWE/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHA9bj8wOmktMSxkPW4/MTotMSx2PXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8ocz1pc05hTih0KT8xOjAsbz1mKToobz1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0Kih1PU1hdGgucG93KDIsLW8pKTwxJiYoby0tLHUqPTIpLCh0Kz1vK2w+PTE/aC91OmgqTWF0aC5wb3coMiwxLWwpKSp1Pj0yJiYobysrLHUvPTIpLG8rbD49Zj8ocz0wLG89Zik6bytsPj0xPyhzPSh0KnUtMSkqTWF0aC5wb3coMixhKSxvKz1sKToocz10Kk1hdGgucG93KDIsbC0xKSpNYXRoLnBvdygyLGEpLG89MCkpO2E+PTg7ZVtyK3BdPTI1NSZzLHArPWQscy89MjU2LGEtPTgpO2ZvcihvPW88PGF8cyxjKz1hO2M+MDtlW3IrcF09MjU1Jm8scCs9ZCxvLz0yNTYsYy09OCk7ZVtyK3AtZF18PTEyOCp2fXZhciBscj17fS50b1N0cmluZyxocj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1sci5jYWxsKGUpfTtnci5UWVBFRF9BUlJBWV9TVVBQT1JUPXZvaWQgMD09PWxlLlRZUEVEX0FSUkFZX1NVUFBPUlR8fGxlLlRZUEVEX0FSUkFZX1NVUFBPUlQ7dmFyIHByPWRyKCk7ZnVuY3Rpb24gZHIoKXtyZXR1cm4gZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gdnIoZSx0KXtpZihkcigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9bmV3IFVpbnQ4QXJyYXkodCkpLl9fcHJvdG9fXz1nci5wcm90b3R5cGU6KG51bGw9PT1lJiYoZT1uZXcgZ3IodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gZ3IoZSx0LHIpe2lmKCEoZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIGdyKSlyZXR1cm4gbmV3IGdyKGUsdCxyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIklmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIGJyKHRoaXMsZSl9cmV0dXJuIG1yKHRoaXMsZSx0LHIpfWZ1bmN0aW9uIG1yKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7Z3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT10KS5fX3Byb3RvX189Z3IucHJvdG90eXBlOmU9d3IoZSx0KTtyZXR1cm4gZX0oZSx0LHIsbik6InN0cmluZyI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09dHlwZW9mIHImJiIiIT09cnx8KHI9InV0ZjgiKTtpZighZ3IuaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfF9yKHQsciksYT0oZT12cihlLG4pKS53cml0ZSh0LHIpO2EhPT1uJiYoZT1lLnNsaWNlKDAsYSkpO3JldHVybiBlfShlLHQscik6ZnVuY3Rpb24oZSx0KXtpZihScih0KSl7dmFyIHI9MHxrcih0Lmxlbmd0aCk7cmV0dXJuIDA9PT0oZT12cihlLHIpKS5sZW5ndGh8fHQuY29weShlLDAsMCxyKSxlfWlmKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdClyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQubGVuZ3RofHwobj10Lmxlbmd0aCkhPW4/dnIoZSwwKTp3cihlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZocih0LmRhdGEpKXJldHVybiB3cihlLHQuZGF0YSl9dmFyIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfShlLHQpfWZ1bmN0aW9uIHlyKGUpe2lmKCJudW1iZXIiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJyl9ZnVuY3Rpb24gYnIoZSx0KXtpZih5cih0KSxlPXZyKGUsdDwwPzA6MHxrcih0KSksIWdyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciByPTA7cjx0OysrcillW3JdPTA7cmV0dXJuIGV9ZnVuY3Rpb24gd3IoZSx0KXt2YXIgcj10Lmxlbmd0aDwwPzA6MHxrcih0Lmxlbmd0aCk7ZT12cihlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24ga3IoZSl7aWYoZT49ZHIoKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrZHIoKS50b1N0cmluZygxNikrIiBieXRlcyIpO3JldHVybiAwfGV9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIShudWxsPT1lfHwhZS5faXNCdWZmZXIpfWZ1bmN0aW9uIF9yKGUsdCl7aWYoUnIoZSkpcmV0dXJuIGUubGVuZ3RoO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcmJihBcnJheUJ1ZmZlci5pc1ZpZXcoZSl8fGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpcmV0dXJuIGUuYnl0ZUxlbmd0aDsic3RyaW5nIiE9dHlwZW9mIGUmJihlPSIiK2UpO3ZhciByPWUubGVuZ3RoO2lmKDA9PT1yKXJldHVybiAwO2Zvcih2YXIgbj0hMTs7KXN3aXRjaCh0KXtjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiByO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSB2b2lkIDA6cmV0dXJuIFhyKGUpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqcjtjYXNlImhleCI6cmV0dXJuIHI+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gJHIoZSkubGVuZ3RoO2RlZmF1bHQ6aWYobilyZXR1cm4gWHIoZSkubGVuZ3RoO3Q9KCIiK3QpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24geHIoZSx0LHIpe3ZhciBuPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuIiI7aWYoKHI+Pj49MCk8PSh0Pj4+PTApKXJldHVybiIiO2ZvcihlfHwoZT0idXRmOCIpOzspc3dpdGNoKGUpe2Nhc2UiaGV4IjpyZXR1cm4gTnIodGhpcyx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIEhyKHRoaXMsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gTXIodGhpcyx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGpyKHRoaXMsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIFVyKHRoaXMsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIHFyKHRoaXMsdCxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIFNyKGUsdCxyKXt2YXIgbj1lW3RdO2VbdF09ZVtyXSxlW3JdPW59ZnVuY3Rpb24gRXIoZSx0LHIsbixhKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxyPStyLGlzTmFOKHIpJiYocj1hPzA6ZS5sZW5ndGgtMSkscjwwJiYocj1lLmxlbmd0aCtyKSxyPj1lLmxlbmd0aCl7aWYoYSlyZXR1cm4tMTtyPWUubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFhKXJldHVybi0xO3I9MH1pZigic3RyaW5nIj09dHlwZW9mIHQmJih0PWdyLmZyb20odCxuKSksUnIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTpBcihlLHQscixuLGEpO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJiJmdW5jdGlvbiI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2E/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxyKTpBcihlLFt0XSxyLG4sYSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gQXIoZSx0LHIsbixhKXt2YXIgaSxvPTEscz1lLmxlbmd0aCx1PXQubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJigidWNzMiI9PT0obj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fCJ1Y3MtMiI9PT1ufHwidXRmMTZsZSI9PT1ufHwidXRmLTE2bGUiPT09bikpe2lmKGUubGVuZ3RoPDJ8fHQubGVuZ3RoPDIpcmV0dXJuLTE7bz0yLHMvPTIsdS89MixyLz0yfWZ1bmN0aW9uIGMoZSx0KXtyZXR1cm4gMT09PW8/ZVt0XTplLnJlYWRVSW50MTZCRSh0Km8pfWlmKGEpe3ZhciBmPS0xO2ZvcihpPXI7aTxzO2krKylpZihjKGUsaSk9PT1jKHQsLTE9PT1mPzA6aS1mKSl7aWYoLTE9PT1mJiYoZj1pKSxpLWYrMT09PXUpcmV0dXJuIGYqb31lbHNlLTEhPT1mJiYoaS09aS1mKSxmPS0xfWVsc2UgZm9yKHIrdT5zJiYocj1zLXUpLGk9cjtpPj0wO2ktLSl7Zm9yKHZhciBsPSEwLGg9MDtoPHU7aCsrKWlmKGMoZSxpK2gpIT09Yyh0LGgpKXtsPSExO2JyZWFrfWlmKGwpcmV0dXJuIGl9cmV0dXJuLTF9ZnVuY3Rpb24gVHIoZSx0LHIsbil7cj1OdW1iZXIocil8fDA7dmFyIGE9ZS5sZW5ndGgtcjtuPyhuPU51bWJlcihuKSk+YSYmKG49YSk6bj1hO3ZhciBpPXQubGVuZ3RoO2lmKGklMiE9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtuPmkvMiYmKG49aS8yKTtmb3IodmFyIG89MDtvPG47KytvKXt2YXIgcz1wYXJzZUludCh0LnN1YnN0cigyKm8sMiksMTYpO2lmKGlzTmFOKHMpKXJldHVybiBvO2VbcitvXT1zfXJldHVybiBvfWZ1bmN0aW9uIENyKGUsdCxyLG4pe3JldHVybiBacihYcih0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBQcihlLHQscixuKXtyZXR1cm4gWnIoZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChyKSk7cmV0dXJuIHR9KHQpLGUscixuKX1mdW5jdGlvbiBPcihlLHQscixuKXtyZXR1cm4gUHIoZSx0LHIsbil9ZnVuY3Rpb24gRHIoZSx0LHIsbil7cmV0dXJuIFpyKCRyKHQpLGUscixuKX1mdW5jdGlvbiBJcihlLHQscixuKXtyZXR1cm4gWnIoZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsbixhLGk9W10sbz0wO288ZS5sZW5ndGgmJiEoKHQtPTIpPDApOysrbyluPShyPWUuY2hhckNvZGVBdChvKSk+PjgsYT1yJTI1NixpLnB1c2goYSksaS5wdXNoKG4pO3JldHVybiBpfSh0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBVcihlLHQscil7cmV0dXJuIDA9PT10JiZyPT09ZS5sZW5ndGg/dXIoZSk6dXIoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBIcihlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sYT10O2E8cjspe3ZhciBpLG8scyx1LGM9ZVthXSxmPW51bGwsbD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKGErbDw9cilzd2l0Y2gobCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbYSsxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW2ErMV0sbz1lW2ErMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJm8pPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVthKzFdLG89ZVthKzJdLHM9ZVthKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJm8pJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmbyk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsbD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLGErPWx9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PUxyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz1McikpO3JldHVybiByfShuKX1nci5wb29sU2l6ZT04MTkyLGdyLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1nci5wcm90b3R5cGUsZX0sZ3IuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIG1yKG51bGwsZSx0LHIpfSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoZ3IucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxnci5fX3Byb3RvX189VWludDhBcnJheSksZ3IuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtyZXR1cm4geXIodCksdDw9MD92cihlLHQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBuP3ZyKGUsdCkuZmlsbChyLG4pOnZyKGUsdCkuZmlsbChyKTp2cihlLHQpfShudWxsLGUsdCxyKX0sZ3IuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGJyKG51bGwsZSl9LGdyLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gYnIobnVsbCxlKX0sZ3IuaXNCdWZmZXI9UXIsZ3IuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFScihlKXx8IVJyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxhPTAsaT1NYXRoLm1pbihyLG4pO2E8aTsrK2EpaWYoZVthXSE9PXRbYV0pe3I9ZVthXSxuPXRbYV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxnci5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxnci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighaHIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZ3IuYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09dClmb3IodD0wLHI9MDtyPGUubGVuZ3RoOysrcil0Kz1lW3JdLmxlbmd0aDt2YXIgbj1nci5hbGxvY1Vuc2FmZSh0KSxhPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighUnIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLGEpLGErPWkubGVuZ3RofXJldHVybiBufSxnci5ieXRlTGVuZ3RoPV9yLGdyLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsZ3IucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilTcih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sZ3IucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NClTcih0aGlzLHQsdCszKSxTcih0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxnci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KVNyKHRoaXMsdCx0KzcpLFNyKHRoaXMsdCsxLHQrNiksU3IodGhpcyx0KzIsdCs1KSxTcih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxnci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9Icih0aGlzLDAsZSk6eHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFScihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09Z3IuY29tcGFyZSh0aGlzLGUpfSxnci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxnci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQscixuLGEpe2lmKCFScihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1hJiYoYT10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fGE+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PWEmJnQ+PXIpcmV0dXJuIDA7aWYobj49YSlyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgaT0oYT4+Pj0wKS0obj4+Pj0wKSxvPShyPj4+PTApLSh0Pj4+PTApLHM9TWF0aC5taW4oaSxvKSx1PXRoaXMuc2xpY2UobixhKSxjPWUuc2xpY2UodCxyKSxmPTA7ZjxzOysrZilpZih1W2ZdIT09Y1tmXSl7aT11W2ZdLG89Y1tmXTticmVha31yZXR1cm4gaTxvPy0xOm88aT8xOjB9LGdyLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LHIpfSxnci5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIEVyKHRoaXMsZSx0LHIsITApfSxnci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBFcih0aGlzLGUsdCxyLCExKX0sZ3IucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBhPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+YSkmJihyPWEpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBUcih0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBDcih0aGlzLGUsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gUHIodGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gT3IodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBEcih0aGlzLGUsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIElyKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LGdyLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBMcj00MDk2O2Z1bmN0aW9uIE1yKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24ganIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbYV0pO3JldHVybiBufWZ1bmN0aW9uIE5yKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIGE9IiIsaT10O2k8cjsrK2kpYSs9R3IoZVtpXSk7cmV0dXJuIGF9ZnVuY3Rpb24gcXIoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksYT0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gYX1mdW5jdGlvbiBLcihlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gSnIoZSx0LHIsbixhLGkpe2lmKCFScihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5hfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gQnIoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTthPGk7KythKWVbcithXT0odCYyNTU8PDgqKG4/YToxLWEpKT4+PjgqKG4/YToxLWEpfWZ1bmN0aW9uIEZyKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgYT0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTthPGk7KythKWVbcithXT10Pj4+OCoobj9hOjMtYSkmMjU1fWZ1bmN0aW9uIFdyKGUsdCxyLG4sYSxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24genIoZSx0LHIsbixhKXtyZXR1cm4gYXx8V3IoZSwwLHIsNCksZnIoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gWXIoZSx0LHIsbixhKXtyZXR1cm4gYXx8V3IoZSwwLHIsOCksZnIoZSx0LHIsbiw1Miw4KSxyKzh9Z3IucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQpKHI9dGhpcy5zdWJhcnJheShlLHQpKS5fX3Byb3RvX189Z3IucHJvdG90eXBlO2Vsc2V7dmFyIGE9dC1lO3I9bmV3IGdyKGEsdm9pZCAwKTtmb3IodmFyIGk9MDtpPGE7KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxnci5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fEtyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBufSxnci5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fEtyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZSstLXRdLGE9MTt0PjAmJihhKj0yNTYpOyluKz10aGlzW2UrLS10XSphO3JldHVybiBufSxnci5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxnci5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXTw8OHx0aGlzW2UrMV19LGdyLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxnci5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sZ3IucHJvdG90eXBlLnJlYWRJbnRMRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fEtyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0sYT0xLGk9MDsrK2k8dCYmKGEqPTI1Nik7KW4rPXRoaXNbZStpXSphO3JldHVybiBuPj0oYSo9MTI4KSYmKG4tPU1hdGgucG93KDIsOCp0KSksbn0sZ3IucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fEtyKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsYT0xLGk9dGhpc1tlKy0tbl07bj4wJiYoYSo9MjU2KTspaSs9dGhpc1tlKy0tbl0qYTtyZXR1cm4gaT49KGEqPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LGdyLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSxnci5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24oZSx0KXt0fHxLcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxnci5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxLcihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxnci5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LGdyLnByb3RvdHlwZS5yZWFkSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDI0fHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXX0sZ3IucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCEwLDIzLDQpfSxnci5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITEsMjMsNCl9LGdyLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw4LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITAsNTIsOCl9LGdyLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw4LHRoaXMubGVuZ3RoKSxjcih0aGlzLGUsITEsNTIsOCl9LGdyLnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fEpyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9MSxpPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihhKj0yNTYpOyl0aGlzW3QraV09ZS9hJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxKcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPXItMSxpPTE7Zm9yKHRoaXNbdCthXT0yNTUmZTstLWE+PTAmJihpKj0yNTYpOyl0aGlzW3QrYV09ZS9pJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwxLDI1NSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPTI1NSZlLHQrMX0sZ3IucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiw2NTUzNSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6QnIodGhpcyxlLHQsITApLHQrMn0sZ3IucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiw2NTUzNSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6QnIodGhpcyxlLHQsITEpLHQrMn0sZ3IucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6RnIodGhpcyxlLHQsITApLHQrNH0sZ3IucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6RnIodGhpcyxlLHQsITEpLHQrNH0sZ3IucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtKcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9MCxvPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpLTFdJiYocz0xKSx0aGlzW3QraV09KGUvbz4+MCktcyYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgYT1NYXRoLnBvdygyLDgqci0xKTtKcih0aGlzLGUsdCxyLGEtMSwtYSl9dmFyIGk9ci0xLG89MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxnci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDEsMTI3LC0xMjgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LGdyLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpCcih0aGlzLGUsdCwhMCksdCsyfSxnci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6QnIodGhpcyxlLHQsITEpLHQrMn0sZ3IucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6RnIodGhpcyxlLHQsITApLHQrNH0sZ3IucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6RnIodGhpcyxlLHQsITEpLHQrNH0sZ3IucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHpyKHRoaXMsZSx0LCEwLHIpfSxnci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4genIodGhpcyxlLHQsITEscil9LGdyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWXIodGhpcyxlLHQsITAscil9LGdyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gWXIodGhpcyxlLHQsITEscil9LGdyLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIGEsaT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihhPWktMTthPj0wOy0tYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgaWYoaTwxZTN8fCFnci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihhPTA7YTxpOysrYSllW2ErdF09dGhpc1thK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscitpKSx0KTtyZXR1cm4gaX0sZ3IucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQ/KG49dCx0PTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGE9ZS5jaGFyQ29kZUF0KDApO2E8MjU2JiYoZT1hKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIWdyLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBvPVJyKGUpP2U6WHIobmV3IGdyKGUsbikudG9TdHJpbmcoKSkscz1vLmxlbmd0aDtmb3IoaT0wO2k8ci10OysraSl0aGlzW2krdF09b1tpJXNdfXJldHVybiB0aGlzfTt2YXIgVnI9L1teK1wvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gR3IoZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFhyKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGE9bnVsbCxpPVtdLG89MDtvPG47KytvKXtpZigocj1lLmNoYXJDb2RlQXQobykpPjU1Mjk1JiZyPDU3MzQ0KXtpZighYSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKG8rMT09PW4peyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1hPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLGE9cjtjb250aW51ZX1yPTY1NTM2KyhhLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGEmJih0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtpZihhPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiAkcihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaSxvO2lyfHxvcigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxvPW5ldyBhcigzKnMvNC1pKSxuPWk+MD9zLTQ6czt2YXIgdT0wO2Zvcih0PTAscj0wO3Q8bjt0Kz00LHIrPTMpYT1ucltlLmNoYXJDb2RlQXQodCldPDwxOHxucltlLmNoYXJDb2RlQXQodCsxKV08PDEyfG5yW2UuY2hhckNvZGVBdCh0KzIpXTw8NnxucltlLmNoYXJDb2RlQXQodCszKV0sb1t1KytdPWE+PjE2JjI1NSxvW3UrK109YT4+OCYyNTUsb1t1KytdPTI1NSZhO3JldHVybiAyPT09aT8oYT1ucltlLmNoYXJDb2RlQXQodCldPDwyfG5yW2UuY2hhckNvZGVBdCh0KzEpXT4+NCxvW3UrK109MjU1JmEpOjE9PT1pJiYoYT1ucltlLmNoYXJDb2RlQXQodCldPDwxMHxucltlLmNoYXJDb2RlQXQodCsxKV08PDR8bnJbZS5jaGFyQ29kZUF0KHQrMildPj4yLG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmEpLG99KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2UoVnIsIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIFpyKGUsdCxyLG4pe2Zvcih2YXIgYT0wO2E8biYmIShhK3I+PXQubGVuZ3RofHxhPj1lLmxlbmd0aCk7KythKXRbYStyXT1lW2FdO3JldHVybiBhfWZ1bmN0aW9uIFFyKGUpe3JldHVybiBudWxsIT1lJiYoISFlLl9pc0J1ZmZlcnx8ZW4oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRGbG9hdExFJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zbGljZSYmZW4oZS5zbGljZSgwLDApKX0oZSkpfWZ1bmN0aW9uIGVuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIHRuPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJ1ZmZlcjpncixJTlNQRUNUX01BWF9CWVRFUzo1MCxTbG93QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxnci5hbGxvYygrZSl9LGlzQnVmZmVyOlFyLGtNYXhMZW5ndGg6cHJ9KSxybj17ZXhwb3J0czp7fX0sbm49e30sYW49e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGFuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhbi5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9dCU0O2lmKCFyKXJldHVybiBlO3ZhciBuPXQsYT00LXIsaT10K2Esbz1nci5hbGxvYyhpKTtmb3Ioby53cml0ZShlKTthLS07KW8ud3JpdGUoIj0iLG4rKyk7cmV0dXJuIG8udG9TdHJpbmcoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG5uLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb249YW47ZnVuY3Rpb24gc24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxnci5pc0J1ZmZlcihlKT9jbihlLnRvU3RyaW5nKCJiYXNlNjQiKSk6Y24oZ3IuZnJvbShlLHQpLnRvU3RyaW5nKCJiYXNlNjQiKSl9ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIGU9ZS50b1N0cmluZygpLG9uLmRlZmF1bHQoZSkucmVwbGFjZSgvXC0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpfWZ1bmN0aW9uIGNuKGUpe3JldHVybiBlLnJlcGxhY2UoLz0vZywiIikucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKX12YXIgZm4sbG49c247bG4uZW5jb2RlPXNuLGxuLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLGdyLmZyb20odW4oZSksImJhc2U2NCIpLnRvU3RyaW5nKHQpfSxsbi50b0Jhc2U2ND11bixsbi5mcm9tQmFzZTY0PWNuLGxuLnRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBnci5mcm9tKHVuKGUpLCJiYXNlNjQiKX0sbm4uZGVmYXVsdD1sbiwoZm49cm4pLmV4cG9ydHM9bm4uZGVmYXVsdCxmbi5leHBvcnRzLmRlZmF1bHQ9Zm4uZXhwb3J0czt2YXIgaG49cm4uZXhwb3J0cyxwbj17ZXhwb3J0czp7fX07IWZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0LHIpe3ZhciBuPXt9OyFmdW5jdGlvbihlKXtlLl9fZXNNb2R1bGU9ITAsZS5kaWdlc3RMZW5ndGg9MzIsZS5ibG9ja1NpemU9NjQ7dmFyIHQ9bmV3IFVpbnQzMkFycmF5KFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKTtmdW5jdGlvbiByKGUscixuLGEsaSl7Zm9yKHZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcsbSx5O2k+PTY0Oyl7Zm9yKG89clswXSxzPXJbMV0sdT1yWzJdLGM9clszXSxmPXJbNF0sbD1yWzVdLGg9cls2XSxwPXJbN10sdj0wO3Y8MTY7disrKWc9YSs0KnYsZVt2XT0oMjU1Jm5bZ10pPDwyNHwoMjU1Jm5bZysxXSk8PDE2fCgyNTUmbltnKzJdKTw8OHwyNTUmbltnKzNdO2Zvcih2PTE2O3Y8NjQ7disrKW09KChkPWVbdi0yXSk+Pj4xN3xkPDwxNSleKGQ+Pj4xOXxkPDwxMyleZD4+PjEwLHk9KChkPWVbdi0xNV0pPj4+N3xkPDwyNSleKGQ+Pj4xOHxkPDwxNCleZD4+PjMsZVt2XT0obStlW3YtN118MCkrKHkrZVt2LTE2XXwwKTtmb3Iodj0wO3Y8NjQ7disrKW09KCgoZj4+PjZ8Zjw8MjYpXihmPj4+MTF8Zjw8MjEpXihmPj4+MjV8Zjw8NykpKyhmJmxefmYmaCl8MCkrKHArKHRbdl0rZVt2XXwwKXwwKXwwLHk9KChvPj4+MnxvPDwzMCleKG8+Pj4xM3xvPDwxOSleKG8+Pj4yMnxvPDwxMCkpKyhvJnNebyZ1XnMmdSl8MCxwPWgsaD1sLGw9ZixmPWMrbXwwLGM9dSx1PXMscz1vLG89bSt5fDA7clswXSs9byxyWzFdKz1zLHJbMl0rPXUsclszXSs9YyxyWzRdKz1mLHJbNV0rPWwscls2XSs9aCxyWzddKz1wLGErPTY0LGktPTY0fXJldHVybiBhfXZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZGlnZXN0TGVuZ3RoPWUuZGlnZXN0TGVuZ3RoLHRoaXMuYmxvY2tTaXplPWUuYmxvY2tTaXplLHRoaXMuc3RhdGU9bmV3IEludDMyQXJyYXkoOCksdGhpcy50ZW1wPW5ldyBJbnQzMkFycmF5KDY0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxMjgpLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5yZXNldCgpfXJldHVybiB0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlWzBdPTE3NzkwMzM3MDMsdGhpcy5zdGF0ZVsxXT0zMTQ0MTM0Mjc3LHRoaXMuc3RhdGVbMl09MTAxMzkwNDI0Mix0aGlzLnN0YXRlWzNdPTI3NzM0ODA3NjIsdGhpcy5zdGF0ZVs0XT0xMzU5ODkzMTE5LHRoaXMuc3RhdGVbNV09MjYwMDgyMjkyNCx0aGlzLnN0YXRlWzZdPTUyODczNDYzNSx0aGlzLnN0YXRlWzddPTE1NDE0NTkyMjUsdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5idWZmZXIubGVuZ3RoO2UrKyl0aGlzLmJ1ZmZlcltlXT0wO2ZvcihlPTA7ZTx0aGlzLnRlbXAubGVuZ3RoO2UrKyl0aGlzLnRlbXBbZV09MDt0aGlzLnJlc2V0KCl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQmJih0PWUubGVuZ3RoKSx0aGlzLmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiU0hBMjU2OiBjYW4ndCB1cGRhdGUgYmVjYXVzZSBoYXNoIHdhcyBmaW5pc2hlZC4iKTt2YXIgbj0wO2lmKHRoaXMuYnl0ZXNIYXNoZWQrPXQsdGhpcy5idWZmZXJMZW5ndGg+MCl7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw2NCYmdD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tOzY0PT09dGhpcy5idWZmZXJMZW5ndGgmJihyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsNjQpLHRoaXMuYnVmZmVyTGVuZ3RoPTApfWZvcih0Pj02NCYmKG49cih0aGlzLnRlbXAsdGhpcy5zdGF0ZSxlLG4sdCksdCU9NjQpO3Q+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmZpbmlzaGVkKXt2YXIgdD10aGlzLmJ5dGVzSGFzaGVkLG49dGhpcy5idWZmZXJMZW5ndGgsYT10LzUzNjg3MDkxMnwwLGk9dDw8MyxvPXQlNjQ8NTY/NjQ6MTI4O3RoaXMuYnVmZmVyW25dPTEyODtmb3IodmFyIHM9bisxO3M8by04O3MrKyl0aGlzLmJ1ZmZlcltzXT0wO3RoaXMuYnVmZmVyW28tOF09YT4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltvLTddPWE+Pj4xNiYyNTUsdGhpcy5idWZmZXJbby02XT1hPj4+OCYyNTUsdGhpcy5idWZmZXJbby01XT1hPj4+MCYyNTUsdGhpcy5idWZmZXJbby00XT1pPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tM109aT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTJdPWk+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTFdPWk+Pj4wJjI1NSxyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsbyksdGhpcy5maW5pc2hlZD0hMH1mb3Iocz0wO3M8ODtzKyspZVs0KnMrMF09dGhpcy5zdGF0ZVtzXT4+PjI0JjI1NSxlWzQqcysxXT10aGlzLnN0YXRlW3NdPj4+MTYmMjU1LGVbNCpzKzJdPXRoaXMuc3RhdGVbc10+Pj44JjI1NSxlWzQqcyszXT10aGlzLnN0YXRlW3NdPj4+MCYyNTU7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sdC5wcm90b3R5cGUuX3NhdmVTdGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuc3RhdGUubGVuZ3RoO3QrKyllW3RdPXRoaXMuc3RhdGVbdF19LHQucHJvdG90eXBlLl9yZXN0b3JlU3RhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHRoaXMuc3RhdGUubGVuZ3RoO3IrKyl0aGlzLnN0YXRlW3JdPWVbcl07dGhpcy5ieXRlc0hhc2hlZD10LHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5idWZmZXJMZW5ndGg9MH0sdH0oKTtlLkhhc2g9bjt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pbm5lcj1uZXcgbix0aGlzLm91dGVyPW5ldyBuLHRoaXMuYmxvY2tTaXplPXRoaXMuaW5uZXIuYmxvY2tTaXplLHRoaXMuZGlnZXN0TGVuZ3RoPXRoaXMuaW5uZXIuZGlnZXN0TGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KHRoaXMuYmxvY2tTaXplKTtpZihlLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSkobmV3IG4pLnVwZGF0ZShlKS5maW5pc2godCkuY2xlYW4oKTtlbHNlIGZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRbcl09ZVtyXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTU0O3RoaXMuaW5uZXIudXBkYXRlKHQpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49MTA2O3RoaXMub3V0ZXIudXBkYXRlKHQpLHRoaXMuaXN0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLm9zdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5pbm5lci5fc2F2ZVN0YXRlKHRoaXMuaXN0YXRlKSx0aGlzLm91dGVyLl9zYXZlU3RhdGUodGhpcy5vc3RhdGUpO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT0wfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVyLl9yZXN0b3JlU3RhdGUodGhpcy5pc3RhdGUsdGhpcy5pbm5lci5ibG9ja1NpemUpLHRoaXMub3V0ZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLm9zdGF0ZSx0aGlzLm91dGVyLmJsb2NrU2l6ZSksdGhpc30sZS5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuaXN0YXRlLmxlbmd0aDtlKyspdGhpcy5vc3RhdGVbZV09dGhpcy5pc3RhdGVbZV09MDt0aGlzLmlubmVyLmNsZWFuKCksdGhpcy5vdXRlci5jbGVhbigpfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKGUpLHRoaXN9LGUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci5maW5pc2hlZD90aGlzLm91dGVyLmZpbmlzaChlKToodGhpcy5pbm5lci5maW5pc2goZSksdGhpcy5vdXRlci51cGRhdGUoZSx0aGlzLmRpZ2VzdExlbmd0aCkuZmluaXNoKGUpKSx0aGlzfSxlLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LGV9KCk7ZnVuY3Rpb24gaShlKXt2YXIgdD0obmV3IG4pLnVwZGF0ZShlKSxyPXQuZGlnZXN0KCk7cmV0dXJuIHQuY2xlYW4oKSxyfWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1uZXcgYShlKS51cGRhdGUodCksbj1yLmRpZ2VzdCgpO3JldHVybiByLmNsZWFuKCksbn1mdW5jdGlvbiBzKGUsdCxyLG4pe3ZhciBhPW5bMF07aWYoMD09PWEpdGhyb3cgbmV3IEVycm9yKCJoa2RmOiBjYW5ub3QgZXhwYW5kIG1vcmUiKTt0LnJlc2V0KCksYT4xJiZ0LnVwZGF0ZShlKSxyJiZ0LnVwZGF0ZShyKSx0LnVwZGF0ZShuKSx0LmZpbmlzaChlKSxuWzBdKyt9ZS5ITUFDPWEsZS5oYXNoPWksZS5kZWZhdWx0PWksZS5obWFjPW87dmFyIHU9bmV3IFVpbnQ4QXJyYXkoZS5kaWdlc3RMZW5ndGgpO2Z1bmN0aW9uIGMoZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9dSksdm9pZCAwPT09biYmKG49MzIpO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShbMV0pLGM9byh0LGUpLGY9bmV3IGEoYyksbD1uZXcgVWludDhBcnJheShmLmRpZ2VzdExlbmd0aCksaD1sLmxlbmd0aCxwPW5ldyBVaW50OEFycmF5KG4pLGQ9MDtkPG47ZCsrKWg9PT1sLmxlbmd0aCYmKHMobCxmLHIsaSksaD0wKSxwW2RdPWxbaCsrXTtyZXR1cm4gZi5jbGVhbigpLGwuZmlsbCgwKSxpLmZpbGwoMCkscH1mdW5jdGlvbiBmKGUsdCxyLG4pe2Zvcih2YXIgaT1uZXcgYShlKSxvPWkuZGlnZXN0TGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoNCksdT1uZXcgVWludDhBcnJheShvKSxjPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IFVpbnQ4QXJyYXkobiksbD0wO2wqbzxuO2wrKyl7dmFyIGg9bCsxO3NbMF09aD4+PjI0JjI1NSxzWzFdPWg+Pj4xNiYyNTUsc1syXT1oPj4+OCYyNTUsc1szXT1oPj4+MCYyNTUsaS5yZXNldCgpLGkudXBkYXRlKHQpLGkudXBkYXRlKHMpLGkuZmluaXNoKGMpO2Zvcih2YXIgcD0wO3A8bztwKyspdVtwXT1jW3BdO2ZvcihwPTI7cDw9cjtwKyspe2kucmVzZXQoKSxpLnVwZGF0ZShjKS5maW5pc2goYyk7Zm9yKHZhciBkPTA7ZDxvO2QrKyl1W2RdXj1jW2RdfWZvcihwPTA7cDxvJiZsKm8rcDxuO3ArKylmW2wqbytwXT11W3BdfWZvcihsPTA7bDxvO2wrKyl1W2xdPWNbbF09MDtmb3IobD0wO2w8NDtsKyspc1tsXT0wO3JldHVybiBpLmNsZWFuKCksZn1lLmhrZGY9YyxlLnBia2RmMj1mfShuKTt2YXIgYT1uLmRlZmF1bHQ7Zm9yKHZhciBpIGluIG4pYVtpXT1uW2ldO2UuZXhwb3J0cz1hfSgpfShwbik7dmFyIGRuPVcocG4uZXhwb3J0cyksdm49Y3J5cHRvO2Z1bmN0aW9uIGduKGUpe3RyeXtyZXR1cm4gbnVsbCE9ZSYmImJvb2xlYW4iPT10eXBlb2YgZS5leHRyYWN0YWJsZSYmInN0cmluZyI9PXR5cGVvZiBlLmFsZ29yaXRobS5uYW1lJiYic3RyaW5nIj09dHlwZW9mIGUudHlwZX1jYXRjaChlKXtyZXR1cm4hMX19dmFyIG1uPW5ldyBUZXh0RW5jb2Rlcix5bj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gYm4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksaT0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsaSksaSs9ZS5sZW5ndGh9KSksYX12YXIgd249ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9eW4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXRvYihlKS5zcGxpdCgiIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQ29kZUF0KDApfSkpKX0odCl9Y2F0Y2goZSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGlucHV0IHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLiIpfX0sa249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhO3JldHVybiBpKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KT1NFX0dFTkVSSUMiLG4ubmFtZT1uLmNvbnN0cnVjdG9yLm5hbWUsbnVsbD09PShhPUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKXx8dm9pZCAwPT09YXx8YS5jYWxsKEVycm9yLHYobiksbi5jb25zdHJ1Y3Rvciksbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9HRU5FUklDIn19XSkscn0oZChFcnJvcikpLFJuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixvPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBpKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQiLG4uY2xhaW09YSxuLnJlYXNvbj1vLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCJ9fV0pLHJ9KGtuKSxfbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gaSh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0VYUElSRUQiLG4uY2xhaW09YSxuLnJlYXNvbj1vLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9FWFBJUkVEIn19XSkscn0oa24pLHhuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIn19XSkscn0oa24pLFNuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gaSh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX05PVF9TVVBQT1JURUQifX1dKSxyfShrbiksRW49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1NfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX0lOVkFMSUQifX1dKSxyfShrbiksQW49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1RfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0lOVkFMSUQifX1dKSxyfShrbiksVG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfSU5WQUxJRCJ9fV0pLHJ9KGtuKSxDbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIixlLm1lc3NhZ2U9Im5vIGFwcGxpY2FibGUga2V5IGZvdW5kIGluIHRoZSBKU09OIFdlYiBLZXkgU2V0IixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX05PX01BVENISU5HX0tFWSJ9fV0pLHJ9KGtuKSxQbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIGkodGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyIsZS5tZXNzYWdlPSJtdWx0aXBsZSBtYXRjaGluZyBrZXlzIGZvdW5kIGluIHRoZSBKU09OIFdlYiBLZXkgU2V0IixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMifX1dKSxyfShrbiksT249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBpKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQiLGUubWVzc2FnZT0ic2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCJ9fV0pLHJ9KGtuKTtmdW5jdGlvbiBEbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXZWJTb2NrZXRQYWlyfWZ1bmN0aW9uIEluKCl7dHJ5e3JldHVybiB2b2lkIDAhPT1MZS52ZXJzaW9ucy5ub2RlfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBVbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImFsZ29yaXRobS5uYW1lIjtyZXR1cm4gbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyAiLmNvbmNhdCh0LCIgbXVzdCBiZSAiKS5jb25jYXQoZSkpfWZ1bmN0aW9uIEhuKGUsdCl7cmV0dXJuIGUubmFtZT09PXR9ZnVuY3Rpb24gTG4oZSl7cmV0dXJuIHBhcnNlSW50KGUubmFtZS5zbGljZSg0KSwxMCl9ZnVuY3Rpb24gTW4oZSl7c3dpdGNoKGUpe2Nhc2UiRVMyNTYiOnJldHVybiJQLTI1NiI7Y2FzZSJFUzM4NCI6cmV0dXJuIlAtMzg0IjtjYXNlIkVTNTEyIjpyZXR1cm4iUC01MjEiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlYWNoYWJsZSIpfX1mdW5jdGlvbiBqbihlLHQpe2lmKHQubGVuZ3RoJiYhdC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gZS51c2FnZXMuaW5jbHVkZXModCl9KSkpe3ZhciByPSJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzIHVzYWdlcyBtdXN0IGluY2x1ZGUgIjtpZih0Lmxlbmd0aD4yKXt2YXIgbj10LnBvcCgpO3IrPSJvbmUgb2YgIi5jb25jYXQodC5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChuLCIuIil9ZWxzZSAyPT09dC5sZW5ndGg/cis9Im9uZSBvZiAiLmNvbmNhdCh0WzBdLCIgb3IgIikuY29uY2F0KHRbMV0sIi4iKTpyKz0iIi5jb25jYXQodFswXSwiLiIpO3Rocm93IG5ldyBUeXBlRXJyb3Iocil9fXZhciBObj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9IktleSBtdXN0IGJlICIsbj1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KG4+MT9uLTE6MCksaT0xO2k8bjtpKyspYVtpLTFdPWFyZ3VtZW50c1tpXTtpZihhLmxlbmd0aD4yKXt2YXIgbz1hLnBvcCgpO3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhLmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KG8sIi4iKX1lbHNlIDI9PT1hLmxlbmd0aD90Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYVswXSwiIG9yICIpLmNvbmNhdChhWzFdLCIuIik6dCs9Im9mIHR5cGUgIi5jb25jYXQoYVswXSwiLiIpO3JldHVybiBudWxsPT1lP3QrPSIgUmVjZWl2ZWQgIi5jb25jYXQoZSk6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUubmFtZT90Kz0iIFJlY2VpdmVkIGZ1bmN0aW9uICIuY29uY2F0KGUubmFtZSk6Im9iamVjdCI9PT1yKGUpJiZudWxsIT1lJiZlLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWUmJih0Kz0iIFJlY2VpdmVkIGFuIGluc3RhbmNlIG9mICIuY29uY2F0KGUuY29uc3RydWN0b3IubmFtZSkpLHR9LHFuPWZ1bmN0aW9uKGUpe3JldHVybiBnbihlKX0sS249WyJDcnlwdG9LZXkiXSxKbj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuLGE9dC5maWx0ZXIoQm9vbGVhbik7aWYoMD09PWEubGVuZ3RofHwxPT09YS5sZW5ndGgpcmV0dXJuITA7dmFyIGksbz1SKGEpO3RyeXtmb3Ioby5zKCk7IShpPW8ubigpKS5kb25lOyl7dmFyIHM9aS52YWx1ZSx1PU9iamVjdC5rZXlzKHMpO2lmKG4mJjAhPT1uLnNpemUpZm9yKHZhciBjPTAsZj11O2M8Zi5sZW5ndGg7YysrKXt2YXIgbD1mW2NdO2lmKG4uaGFzKGwpKXJldHVybiExO24uYWRkKGwpfWVsc2Ugbj1uZXcgU2V0KHUpfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4hMH07ZnVuY3Rpb24gQm4oZSl7aWYoIm9iamVjdCIhPT1yKHQ9ZSl8fG51bGw9PT10fHwiW29iamVjdCBPYmplY3RdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4hMTt2YXIgdDtpZihudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKXJldHVybiEwO2Zvcih2YXIgbj1lO251bGwhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7KW49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1ufXZhciBGbj1mdW5jdGlvbihlLHQpe2lmKGUuc3RhcnRzV2l0aCgiUlMiKXx8ZS5zdGFydHNXaXRoKCJQUyIpKXt2YXIgcj10LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoO2lmKCJudW1iZXIiIT10eXBlb2Ygcnx8cjwyMDQ4KXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KGUsIiByZXF1aXJlcyBrZXkgbW9kdWx1c0xlbmd0aCB0byBiZSAyMDQ4IGJpdHMgb3IgbGFyZ2VyIikpfX07ZnVuY3Rpb24gV24oZSl7dmFyIHQscjtzd2l0Y2goZS5rdHkpe2Nhc2Uib2N0Ijpzd2l0Y2goZS5hbGcpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnQ9e25hbWU6IkhNQUMiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPVsic2lnbiIsInZlcmlmeSJdO2JyZWFrO2Nhc2UiQTEyOENCQy1IUzI1NiI6Y2FzZSJBMTkyQ0JDLUhTMzg0IjpjYXNlIkEyNTZDQkMtSFM1MTIiOnRocm93IG5ldyBTbigiIi5jb25jYXQoZS5hbGcsIiBrZXlzIGNhbm5vdCBiZSBpbXBvcnRlZCBhcyBDcnlwdG9LZXkgaW5zdGFuY2VzIikpO2Nhc2UiQTEyOEdDTSI6Y2FzZSJBMTkyR0NNIjpjYXNlIkEyNTZHQ00iOmNhc2UiQTEyOEdDTUtXIjpjYXNlIkExOTJHQ01LVyI6Y2FzZSJBMjU2R0NNS1ciOnQ9e25hbWU6IkFFUy1HQ00ifSxyPVsiZW5jcnlwdCIsImRlY3J5cHQiXTticmVhaztjYXNlIkExMjhLVyI6Y2FzZSJBMTkyS1ciOmNhc2UiQTI1NktXIjp0PXtuYW1lOiJBRVMtS1cifSxyPVsid3JhcEtleSIsInVud3JhcEtleSJdO2JyZWFrO2Nhc2UiUEJFUzItSFMyNTYrQTEyOEtXIjpjYXNlIlBCRVMyLUhTMzg0K0ExOTJLVyI6Y2FzZSJQQkVTMi1IUzUxMitBMjU2S1ciOnQ9e25hbWU6IlBCS0RGMiJ9LHI9WyJkZXJpdmVCaXRzIl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiUlNBIjpzd2l0Y2goZS5hbGcpe2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnQ9e25hbWU6IlJTQS1QU1MiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnQ9e25hbWU6IlJTQVNTQS1QS0NTMS12MV81IixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTQS1PQUVQIjpjYXNlIlJTQS1PQUVQLTI1NiI6Y2FzZSJSU0EtT0FFUC0zODQiOmNhc2UiUlNBLU9BRVAtNTEyIjp0PXtuYW1lOiJSU0EtT0FFUCIsaGFzaDoiU0hBLSIuY29uY2F0KHBhcnNlSW50KGUuYWxnLnNsaWNlKC0zKSwxMCl8fDEpfSxyPWUuZD9bImRlY3J5cHQiLCJ1bndyYXBLZXkiXTpbImVuY3J5cHQiLCJ3cmFwS2V5Il07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiRUMiOnN3aXRjaChlLmFsZyl7Y2FzZSJFUzI1NiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMjU2In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTMzg0Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0zODQifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVM1MTIiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTUyMSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFQ0RILUVTIjpjYXNlIkVDREgtRVMrQTEyOEtXIjpjYXNlIkVDREgtRVMrQTE5MktXIjpjYXNlIkVDREgtRVMrQTI1NktXIjp0PXtuYW1lOiJFQ0RIIixuYW1lZEN1cnZlOmUuY3J2fSxyPWUuZD9bImRlcml2ZUJpdHMiXTpbXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZShEbigpfHxJbigpKSYmIk9LUCI6aWYoIkVkRFNBIiE9PWUuYWxnKXRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyk7c3dpdGNoKGUuY3J2KXtjYXNlIkVkMjU1MTkiOnQ9e25hbWU6Ik5PREUtRUQyNTUxOSIsbmFtZWRDdXJ2ZToiTk9ERS1FRDI1NTE5In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIEluKCkmJiJFZDQ0OCI6dD17bmFtZToiTk9ERS1FRDQ0OCIsbmFtZWRDdXJ2ZToiTk9ERS1FRDQ0OCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJjcnYiIChTdWJ0eXBlIG9mIEtleSBQYWlyKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKX1yZXR1cm57YWxnb3JpdGhtOnQsa2V5VXNhZ2VzOnJ9fXZhciB6bj1mdW5jdGlvbigpe3ZhciBlPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocil7dmFyIG4sYSxpLG8scyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYobz1XbihyKSxzPW8uYWxnb3JpdGhtLHU9by5rZXlVc2FnZXMsYz1bcyxudWxsIT09KGE9ci5leHQpJiZ2b2lkIDAhPT1hJiZhLG51bGwhPT0oaT1yLmtleV9vcHMpJiZ2b2lkIDAhPT1pP2k6dV0sIlBCS0RGMiIhPT1zLm5hbWUpe2UubmV4dD00O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIiwoZj12bi5zdWJ0bGUpLmltcG9ydEtleS5hcHBseShmLFsicmF3Iix3bihyLmspXS5jb25jYXQoYykpKTtjYXNlIDQ6cmV0dXJuIGRlbGV0ZShsPXQoe30scikpLmFsZyxlLmFicnVwdCgicmV0dXJuIiwobj12bi5zdWJ0bGUpLmltcG9ydEtleS5hcHBseShuLFsiandrIixsXS5jb25jYXQoYykpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gWW4oZSx0LHIpe3JldHVybiBWbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVm4oKXtyZXR1cm4oVm49YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihCbihyKSl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcigiSldLIG11c3QgYmUgYW4gb2JqZWN0Iik7Y2FzZSAyOmlmKG58fChuPXIuYWxnKSwic3RyaW5nIj09dHlwZW9mIG4mJm4pe2UubmV4dD01O2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJyJhbGciIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHdoZW4gImp3ay5hbGciIGlzIG5vdCBwcmVzZW50Jyk7Y2FzZSA1OmUudDA9ci5rdHksZS5uZXh0PSJvY3QiPT09ZS50MD84OiJSU0EiPT09ZS50MD8xNDoiRUMiPT09ZS50MHx8Ik9LUCI9PT1lLnQwPzE2OjE3O2JyZWFrO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHIuayYmci5rKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignbWlzc2luZyAiayIgKEtleSBWYWx1ZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSAxMDppZihudWxsIT1hfHwoYT0hMCE9PXIuZXh0KSwhYSl7ZS5uZXh0PTEzO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix6bih0KHQoe30scikse30se2FsZzpuLGV4dDohMX0pKSk7Y2FzZSAxMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsd24oci5rKSk7Y2FzZSAxNDppZih2b2lkIDA9PT1yLm90aCl7ZS5uZXh0PTE2O2JyZWFrfXRocm93IG5ldyBTbignUlNBIEpXSyAib3RoIiAoT3RoZXIgUHJpbWVzIEluZm8pIFBhcmFtZXRlciB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkJyk7Y2FzZSAxNjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsem4odCh0KHt9LHIpLHt9LHthbGc6bn0pKSk7Y2FzZSAxNzp0aHJvdyBuZXcgU24oJ1Vuc3VwcG9ydGVkICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBHbj1mdW5jdGlvbihlLHQscil7ZS5zdGFydHNXaXRoKCJIUyIpfHwiZGlyIj09PWV8fGUuc3RhcnRzV2l0aCgiUEJFUzIiKXx8L15BXGR7M30oPzpHQ00pP0tXJC8udGVzdChlKT9mdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl7aWYoIXFuKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQoYihLbiksWyJVaW50OEFycmF5Il0pKSk7aWYoInNlY3JldCIhPT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IGJlIG9mIHR5cGUgInNlY3JldCInKSl9fSh0KTpmdW5jdGlvbihlLHQpe2lmKCFxbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoS24pKSkpO2lmKCJzZWNyZXQiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3Qgbm90IGJlIG9mIHR5cGUgInNlY3JldCInKSk7aWYoInNpZ24iPT09dCYmInB1YmxpYyI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBzaWduaW5nIG11c3QgYmUgb2YgdHlwZSAicHJpdmF0ZSInKSk7aWYoImRlY3J5cHQiPT09dCYmInB1YmxpYyI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBkZWNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHJpdmF0ZSInKSk7aWYoZS5hbGdvcml0aG0mJiJ2ZXJpZnkiPT09dCYmInByaXZhdGUiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gdmVyaWZ5aW5nIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKTtpZihlLmFsZ29yaXRobSYmImVuY3J5cHQiPT09dCYmInByaXZhdGUiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZW5jcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSl9KHQscil9O2Z1bmN0aW9uIFhuKGUsdCxyLG4sYSl7aWYodm9pZCAwIT09YS5jcml0JiZ2b2lkIDA9PT1uLmNyaXQpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBpbnRlZ3JpdHkgcHJvdGVjdGVkJyk7aWYoIW58fHZvaWQgMD09PW4uY3JpdClyZXR1cm4gbmV3IFNldDtpZighQXJyYXkuaXNBcnJheShuLmNyaXQpfHwwPT09bi5jcml0Lmxlbmd0aHx8bi5jcml0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZXx8MD09PWUubGVuZ3RofSkpKXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgYW4gYXJyYXkgb2Ygbm9uLWVtcHR5IHN0cmluZ3Mgd2hlbiBwcmVzZW50Jyk7dmFyIGk7aT12b2lkIDAhPT1yP25ldyBNYXAoW10uY29uY2F0KGIoT2JqZWN0LmVudHJpZXMocikpLGIodC5lbnRyaWVzKCkpKSk6dDt2YXIgbyxzPVIobi5jcml0KTt0cnl7Zm9yKHMucygpOyEobz1zLm4oKSkuZG9uZTspe3ZhciB1PW8udmFsdWU7aWYoIWkuaGFzKHUpKXRocm93IG5ldyBTbignRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgaXMgbm90IHJlY29nbml6ZWQnKSk7aWYodm9pZCAwPT09YVt1XSl0aHJvdyBuZXcgZSgnRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgaXMgbWlzc2luZycpKTtpZihpLmdldCh1KSYmdm9pZCAwPT09blt1XSl0aHJvdyBuZXcgZSgnRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgTVVTVCBiZSBpbnRlZ3JpdHkgcHJvdGVjdGVkJykpfX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX1yZXR1cm4gbmV3IFNldChuLmNyaXQpfXZhciAkbj1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQmJighQXJyYXkuaXNBcnJheSh0KXx8dC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV9KSkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyInLmNvbmNhdChlLCciIG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKSk7aWYodClyZXR1cm4gbmV3IFNldCh0KX07ZnVuY3Rpb24gWm4oZSx0KXt2YXIgcj0iU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKTtzd2l0Y2goZSl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJITUFDIn07Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0EtUFNTIixzYWx0TGVuZ3RoOmUuc2xpY2UoLTMpPj4zfTtjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQVNTQS1QS0NTMS12MV81In07Y2FzZSJFUzI1NiI6Y2FzZSJFUzM4NCI6Y2FzZSJFUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZTp0Lm5hbWVkQ3VydmV9O2Nhc2UoRG4oKXx8SW4oKSkmJiJFZERTQSI6dmFyIG49dC5uYW1lZEN1cnZlO3JldHVybntuYW1lOm4sbmFtZWRDdXJ2ZTpufTtkZWZhdWx0OnRocm93IG5ldyBTbigiYWxnICIuY29uY2F0KGUsIiBpcyBub3Qgc3VwcG9ydGVkIGVpdGhlciBieSBKT1NFIG9yIHlvdXIgamF2YXNjcmlwdCBydW50aW1lIikpfX1mdW5jdGlvbiBRbihlLHQscil7aWYoZ24odCkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOmlmKCFIbihlLmFsZ29yaXRobSwiSE1BQyIpKXRocm93IFVuKCJITUFDIik7dmFyIHI9cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoTG4oZS5hbGdvcml0aG0uaGFzaCkhPT1yKXRocm93IFVuKCJTSEEtIi5jb25jYXQociksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6aWYoIUhuKGUuYWxnb3JpdGhtLCJSU0FTU0EtUEtDUzEtdjFfNSIpKXRocm93IFVuKCJSU0FTU0EtUEtDUzEtdjFfNSIpO3ZhciBuPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKExuKGUuYWxnb3JpdGhtLmhhc2gpIT09bil0aHJvdyBVbigiU0hBLSIuY29uY2F0KG4pLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOmlmKCFIbihlLmFsZ29yaXRobSwiUlNBLVBTUyIpKXRocm93IFVuKCJSU0EtUFNTIik7dmFyIGE9cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoTG4oZS5hbGdvcml0aG0uaGFzaCkhPT1hKXRocm93IFVuKCJTSEEtIi5jb25jYXQoYSksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSBJbigpJiYiRWREU0EiOmlmKCJOT0RFLUVEMjU1MTkiIT09ZS5hbGdvcml0aG0ubmFtZSYmIk5PREUtRUQ0NDgiIT09ZS5hbGdvcml0aG0ubmFtZSl0aHJvdyBVbigiTk9ERS1FRDI1NTE5IG9yIE5PREUtRUQ0NDgiKTticmVhaztjYXNlIERuKCkmJiJFZERTQSI6aWYoIUhuKGUuYWxnb3JpdGhtLCJOT0RFLUVEMjU1MTkiKSl0aHJvdyBVbigiTk9ERS1FRDI1NTE5Iik7YnJlYWs7Y2FzZSJFUzI1NiI6Y2FzZSJFUzM4NCI6Y2FzZSJFUzUxMiI6aWYoIUhuKGUuYWxnb3JpdGhtLCJFQ0RTQSIpKXRocm93IFVuKCJFQ0RTQSIpO3ZhciBpPU1uKHQpO2lmKGUuYWxnb3JpdGhtLm5hbWVkQ3VydmUhPT1pKXRocm93IFVuKGksImFsZ29yaXRobS5uYW1lZEN1cnZlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiIpfWZvcih2YXIgbz1hcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KG8+Mj9vLTI6MCksdT0yO3U8bzt1Kyspc1t1LTJdPWFyZ3VtZW50c1t1XTtqbihlLHMpfSh0LGUsciksdDtpZih0IGluc3RhbmNlb2YgVWludDhBcnJheSl7aWYoIWUuc3RhcnRzV2l0aCgiSFMiKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KGIoS24pKSkpO3JldHVybiB2bi5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHQse2hhc2g6IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSksbmFtZToiSE1BQyJ9LCExLFtyXSl9dGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEtuKSxbIlVpbnQ4QXJyYXkiXSkpKX12YXIgZWE9ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQscixuLGEpe3ZhciBpLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsUW4odCxyLCJ2ZXJpZnkiKTtjYXNlIDI6cmV0dXJuIGk9ZS5zZW50LEZuKHQsaSksbz1abih0LGkuYWxnb3JpdGhtKSxlLnByZXY9NSxlLm5leHQ9OCx2bi5zdWJ0bGUudmVyaWZ5KG8saSxuLGEpO2Nhc2UgODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDExOnJldHVybiBlLnByZXY9MTEsZS50MD1lLmNhdGNoKDUpLGUuYWJydXB0KCJyZXR1cm4iLCExKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNSwxMV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQscixuLGEpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gdGEoZSx0LHIpe3JldHVybiByYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmEoKXtyZXR1cm4gcmE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLG07cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihCbihyKSl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IEVuKCJGbGF0dGVuZWQgSldTIG11c3QgYmUgYW4gb2JqZWN0Iik7Y2FzZSAyOmlmKHZvaWQgMCE9PXIucHJvdGVjdGVkfHx2b2lkIDAhPT1yLmhlYWRlcil7ZS5uZXh0PTQ7YnJlYWt9dGhyb3cgbmV3IEVuKCdGbGF0dGVuZWQgSldTIG11c3QgaGF2ZSBlaXRoZXIgb2YgdGhlICJwcm90ZWN0ZWQiIG9yICJoZWFkZXIiIG1lbWJlcnMnKTtjYXNlIDQ6aWYodm9pZCAwPT09ci5wcm90ZWN0ZWR8fCJzdHJpbmciPT10eXBlb2Ygci5wcm90ZWN0ZWQpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDY6aWYodm9pZCAwIT09ci5wYXlsb2FkKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG1pc3NpbmciKTtjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLnNpZ25hdHVyZSl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFNpZ25hdHVyZSBtaXNzaW5nIG9yIGluY29ycmVjdCB0eXBlIik7Y2FzZSAxMDppZih2b2lkIDA9PT1yLmhlYWRlcnx8Qm4oci5oZWFkZXIpKXtlLm5leHQ9MTI7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSAxMjppZihvPXt9LCFyLnByb3RlY3RlZCl7ZS5uZXh0PTIyO2JyZWFrfXM9d24oci5wcm90ZWN0ZWQpLGUucHJldj0xNSxvPUpTT04ucGFyc2UoeW4uZGVjb2RlKHMpKSxlLm5leHQ9MjI7YnJlYWs7Y2FzZSAxOTp0aHJvdyBlLnByZXY9MTksZS50MD1lLmNhdGNoKDE1KSxuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGlzIGludmFsaWQiKTtjYXNlIDIyOmlmKEpuKG8sci5oZWFkZXIpKXtlLm5leHQ9MjQ7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUHJvdGVjdGVkIGFuZCBKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIGRpc2pvaW50Iik7Y2FzZSAyNDppZih1PXQodCh7fSxvKSxyLmhlYWRlciksYz1YbihFbixuZXcgTWFwKFtbImI2NCIsITBdXSksbnVsbD09YT92b2lkIDA6YS5jcml0LG8sdSksZj0hMCwhYy5oYXMoImI2NCIpKXtlLm5leHQ9MzE7YnJlYWt9aWYoImJvb2xlYW4iPT10eXBlb2YoZj1vLmI2NCkpe2UubmV4dD0zMTticmVha310aHJvdyBuZXcgRW4oJ1RoZSAiYjY0IiAoYmFzZTY0dXJsLWVuY29kZSBwYXlsb2FkKSBIZWFkZXIgUGFyYW1ldGVyIG11c3QgYmUgYSBib29sZWFuJyk7Y2FzZSAzMTppZigic3RyaW5nIj09dHlwZW9mKGw9dS5hbGcpJiZsKXtlLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEVuKCdKV1MgImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBtaXNzaW5nIG9yIGludmFsaWQnKTtjYXNlIDM0OmlmKCEoaD1hJiYkbigiYWxnb3JpdGhtcyIsYS5hbGdvcml0aG1zKSl8fGguaGFzKGwpKXtlLm5leHQ9Mzc7YnJlYWt9dGhyb3cgbmV3IHhuKCciYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG5vdCBhbGxvd2VkJyk7Y2FzZSAzNzppZighZil7ZS5uZXh0PTQyO2JyZWFrfWlmKCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkKXtlLm5leHQ9NDA7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIik7Y2FzZSA0MDplLm5leHQ9NDQ7YnJlYWs7Y2FzZSA0MjppZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZHx8ci5wYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSl7ZS5uZXh0PTQ0O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBVaW50OEFycmF5IGluc3RhbmNlIik7Y2FzZSA0NDppZihwPSExLCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9NTA7YnJlYWt9cmV0dXJuIGUubmV4dD00OCxuKG8scik7Y2FzZSA0ODpuPWUuc2VudCxwPSEwO2Nhc2UgNTA6cmV0dXJuIEduKGwsbiwidmVyaWZ5IiksZD1ibihtbi5lbmNvZGUobnVsbCE9PShpPXIucHJvdGVjdGVkKSYmdm9pZCAwIT09aT9pOiIiKSxtbi5lbmNvZGUoIi4iKSwic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD9tbi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQpLHY9d24oci5zaWduYXR1cmUpLGUubmV4dD01NSxlYShsLG4sdixkKTtjYXNlIDU1OmlmKGUuc2VudCl7ZS5uZXh0PTU4O2JyZWFrfXRocm93IG5ldyBPbjtjYXNlIDU4OmlmKGc9Zj93bihyLnBheWxvYWQpOiJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkP21uLmVuY29kZShyLnBheWxvYWQpOnIucGF5bG9hZCxtPXtwYXlsb2FkOmd9LHZvaWQgMCE9PXIucHJvdGVjdGVkJiYobS5wcm90ZWN0ZWRIZWFkZXI9byksdm9pZCAwIT09ci5oZWFkZXImJihtLnVucHJvdGVjdGVkSGVhZGVyPXIuaGVhZGVyKSwhcCl7ZS5uZXh0PTY0O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sbSkse30se2tleTpufSkpO2Nhc2UgNjQ6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG0pO2Nhc2UgNjU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1sxNSwxOV1dKX0pKSkscmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG5hKGUsdCxyKXtyZXR1cm4gYWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGFhKCl7cmV0dXJuKGFhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBpLG8scyx1LGMsZjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYocj15bi5kZWNvZGUocikpLCJzdHJpbmciPT10eXBlb2Ygcil7ZS5uZXh0PTM7YnJlYWt9dGhyb3cgbmV3IEVuKCJDb21wYWN0IEpXUyBtdXN0IGJlIGEgc3RyaW5nIG9yIFVpbnQ4QXJyYXkiKTtjYXNlIDM6aWYoaT1yLnNwbGl0KCIuIiksbz1pWzBdLHM9aVsxXSx1PWlbMl0sMz09PWkubGVuZ3RoKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgRW4oIkludmFsaWQgQ29tcGFjdCBKV1MiKTtjYXNlIDY6cmV0dXJuIGUubmV4dD04LHRhKHtwYXlsb2FkOnMscHJvdGVjdGVkOm8sc2lnbmF0dXJlOnV9LG4sYSk7Y2FzZSA4OmlmKGM9ZS5zZW50LGY9e3BheWxvYWQ6Yy5wYXlsb2FkLHByb3RlY3RlZEhlYWRlcjpjLnByb3RlY3RlZEhlYWRlcn0sImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD0xMjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LGYpLHt9LHtrZXk6Yy5rZXl9KSk7Y2FzZSAxMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZik7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBpYT1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlLmdldFRpbWUoKS8xZTMpfSxvYT04NjQwMCxzYT0vXihcZCt8XGQrXC5cZCspID8oc2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KSQvaSx1YT1mdW5jdGlvbihlKXt2YXIgdD1zYS5leGVjKGUpO2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgdGltZSBwZXJpb2QgZm9ybWF0Iik7dmFyIHI9cGFyc2VGbG9hdCh0WzFdKTtzd2l0Y2godFsyXS50b0xvd2VyQ2FzZSgpKXtjYXNlInNlYyI6Y2FzZSJzZWNzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNvbmRzIjpjYXNlInMiOnJldHVybiBNYXRoLnJvdW5kKHIpO2Nhc2UibWludXRlIjpjYXNlIm1pbnV0ZXMiOmNhc2UibWluIjpjYXNlIm1pbnMiOmNhc2UibSI6cmV0dXJuIE1hdGgucm91bmQoNjAqcik7Y2FzZSJob3VyIjpjYXNlImhvdXJzIjpjYXNlImhyIjpjYXNlImhycyI6Y2FzZSJoIjpyZXR1cm4gTWF0aC5yb3VuZCgzNjAwKnIpO2Nhc2UiZGF5IjpjYXNlImRheXMiOmNhc2UiZCI6cmV0dXJuIE1hdGgucm91bmQocipvYSk7Y2FzZSJ3ZWVrIjpjYXNlIndlZWtzIjpjYXNlInciOnJldHVybiBNYXRoLnJvdW5kKDYwNDgwMCpyKTtkZWZhdWx0OnJldHVybiBNYXRoLnJvdW5kKDMxNTU3NjAwKnIpfX0sY2E9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eYXBwbGljYXRpb25cLy8sIiIpfSxmYT1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT90LmluY2x1ZGVzKGUpOiEhQXJyYXkuaXNBcnJheShlKSYmdC5zb21lKFNldC5wcm90b3R5cGUuaGFzLmJpbmQobmV3IFNldChlKSkpfSxsYT1mdW5jdGlvbihlLHQpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LGk9YS50eXA7aWYoaSYmKCJzdHJpbmciIT10eXBlb2YgZS50eXB8fGNhKGUudHlwKSE9PWNhKGkpKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgInR5cCIgSldUIGhlYWRlciB2YWx1ZScsInR5cCIsImNoZWNrX2ZhaWxlZCIpO3RyeXtuPUpTT04ucGFyc2UoeW4uZGVjb2RlKHQpKX1jYXRjaChlKXt9aWYoIUJuKG4pKXRocm93IG5ldyBBbigiSldUIENsYWltcyBTZXQgbXVzdCBiZSBhIHRvcC1sZXZlbCBKU09OIG9iamVjdCIpO3ZhciBvPWEuaXNzdWVyO2lmKG8mJiEoQXJyYXkuaXNBcnJheShvKT9vOltvXSkuaW5jbHVkZXMobi5pc3MpKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAiaXNzIiBjbGFpbSB2YWx1ZScsImlzcyIsImNoZWNrX2ZhaWxlZCIpO3ZhciBzPWEuc3ViamVjdDtpZihzJiZuLnN1YiE9PXMpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJzdWIiIGNsYWltIHZhbHVlJywic3ViIiwiY2hlY2tfZmFpbGVkIik7dmFyIHUsYz1hLmF1ZGllbmNlO2lmKGMmJiFmYShuLmF1ZCwic3RyaW5nIj09dHlwZW9mIGM/W2NdOmMpKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAiYXVkIiBjbGFpbSB2YWx1ZScsImF1ZCIsImNoZWNrX2ZhaWxlZCIpO3N3aXRjaChyKGEuY2xvY2tUb2xlcmFuY2UpKXtjYXNlInN0cmluZyI6dT11YShhLmNsb2NrVG9sZXJhbmNlKTticmVhaztjYXNlIm51bWJlciI6dT1hLmNsb2NrVG9sZXJhbmNlO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjp1PTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGNsb2NrVG9sZXJhbmNlIG9wdGlvbiB0eXBlIil9dmFyIGY9YS5jdXJyZW50RGF0ZSxsPWlhKGZ8fG5ldyBEYXRlKTtpZih2b2lkIDAhPT1uLmlhdHx8YS5tYXhUb2tlbkFnZSl7aWYoIm51bWJlciIhPXR5cGVvZiBuLmlhdCl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwPT09bi5leHAmJm4uaWF0PmwrdSl0aHJvdyBuZXcgUm4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1uLm5iZil7aWYoIm51bWJlciIhPXR5cGVvZiBuLm5iZil0aHJvdyBuZXcgUm4oJyJuYmYiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJuYmYiLCJpbnZhbGlkIik7aWYobi5uYmY+bCt1KXRocm93IG5ldyBSbignIm5iZiIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCcsIm5iZiIsImNoZWNrX2ZhaWxlZCIpfWlmKHZvaWQgMCE9PW4uZXhwKXtpZigibnVtYmVyIiE9dHlwZW9mIG4uZXhwKXRocm93IG5ldyBSbignImV4cCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImV4cCIsImludmFsaWQiKTtpZihuLmV4cDw9bC11KXRocm93IG5ldyBfbignImV4cCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCcsImV4cCIsImNoZWNrX2ZhaWxlZCIpfWlmKGEubWF4VG9rZW5BZ2Upe3ZhciBoPWwtbi5pYXQscD0ibnVtYmVyIj09dHlwZW9mIGEubWF4VG9rZW5BZ2U/YS5tYXhUb2tlbkFnZTp1YShhLm1heFRva2VuQWdlKTtpZihoLXU+cCl0aHJvdyBuZXcgX24oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKHRvbyBmYXIgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIik7aWYoaDwwLXUpdGhyb3cgbmV3IFJuKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9cmV0dXJuIG59O2Z1bmN0aW9uIGhhKCl7cmV0dXJuKGhhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBpLG8scyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG5hKHIsbixhKTtjYXNlIDI6aWYobz1lLnNlbnQsIShudWxsPT09KGk9by5wcm90ZWN0ZWRIZWFkZXIuY3JpdCl8fHZvaWQgMD09PWk/dm9pZCAwOmkuaW5jbHVkZXMoImI2NCIpKXx8ITEhPT1vLnByb3RlY3RlZEhlYWRlci5iNjQpe2UubmV4dD01O2JyZWFrfXRocm93IG5ldyBBbigiSldUcyBNVVNUIE5PVCB1c2UgdW5lbmNvZGVkIHBheWxvYWQiKTtjYXNlIDU6aWYocz1sYShvLnByb3RlY3RlZEhlYWRlcixvLnBheWxvYWQsYSksdT17cGF5bG9hZDpzLHByb3RlY3RlZEhlYWRlcjpvLnByb3RlY3RlZEhlYWRlcn0sImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD05O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sdSkse30se2tleTpvLmtleX0pKTtjYXNlIDk6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBwYShlKXtzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBlJiZlLnNsaWNlKDAsMikpe2Nhc2UiUlMiOmNhc2UiUFMiOnJldHVybiJSU0EiO2Nhc2UiRVMiOnJldHVybiJFQyI7Y2FzZSJFZCI6cmV0dXJuIk9LUCI7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ1Vuc3VwcG9ydGVkICJhbGciIHZhbHVlIGZvciBhIEpTT04gV2ViIEtleSBTZXQnKX19ZnVuY3Rpb24gZGEoZSl7cmV0dXJuIEJuKGUpfXZhciB2YT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aWYoaSh0aGlzLGUpLHRoaXMuX2NhY2hlZD1uZXcgV2Vha01hcCwhZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT09cihlKSYmQXJyYXkuaXNBcnJheShlLmtleXMpJiZlLmtleXMuZXZlcnkoZGEpfSh0KSl0aHJvdyBuZXcgVG4oIkpTT04gV2ViIEtleSBTZXQgbWFsZm9ybWVkIik7dmFyIG47dGhpcy5fandrcz0obj10LCJmdW5jdGlvbiI9PXR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmU/c3RydWN0dXJlZENsb25lKG4pOkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobikpKX12YXIgbjtyZXR1cm4gcyhlLFt7a2V5OiJnZXRLZXkiLHZhbHVlOihuPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuKXt2YXIgYSxpLG8scyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoYT10KHQoe30sciksbi5oZWFkZXIpLGk9YS5hbGcsbz1hLmtpZCxzPXRoaXMuX2p3a3Mua2V5cy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PWUua3R5PT09cGEoaSk7aWYodCYmInN0cmluZyI9PXR5cGVvZiBvJiYodD1vPT09ZS5raWQpLHQmJiJzdHJpbmciPT10eXBlb2YgZS5hbGcmJih0PWk9PT1lLmFsZyksdCYmInN0cmluZyI9PXR5cGVvZiBlLnVzZSYmKHQ9InNpZyI9PT1lLnVzZSksdCYmQXJyYXkuaXNBcnJheShlLmtleV9vcHMpJiYodD1lLmtleV9vcHMuaW5jbHVkZXMoInZlcmlmeSIpKSx0JiYiRWREU0EiPT09aSYmKHQ9IkVkMjU1MTkiPT09ZS5jcnZ8fCJFZDQ0OCI9PT1lLmNydiksdClzd2l0Y2goaSl7Y2FzZSJFUzI1NiI6dD0iUC0yNTYiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzI1NksiOnQ9InNlY3AyNTZrMSI9PT1lLmNydjticmVhaztjYXNlIkVTMzg0Ijp0PSJQLTM4NCI9PT1lLmNydjticmVhaztjYXNlIkVTNTEyIjp0PSJQLTUyMSI9PT1lLmNydn1yZXR1cm4gdH0pKSx1PXNbMF0sMCE9PShjPXMubGVuZ3RoKSl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgbmV3IENuO2Nhc2UgNzppZigxPT09Yyl7ZS5uZXh0PTk7YnJlYWt9dGhyb3cgbmV3IFBuO2Nhc2UgOTppZih2b2lkIDAhPT0oZj10aGlzLl9jYWNoZWQuZ2V0KHUpfHx0aGlzLl9jYWNoZWQuc2V0KHUse30pLmdldCh1KSlbaV0pe2UubmV4dD0xNzticmVha31yZXR1cm4gZS5uZXh0PTEzLFluKHQodCh7fSx1KSx7fSx7ZXh0OiEwfSksaSk7Y2FzZSAxMzppZighKChsPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09bC50eXBlKSl7ZS5uZXh0PTE2O2JyZWFrfXRocm93IG5ldyBUbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE2OmZbaV09bDtjYXNlIDE3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixmW2ldKTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBnYT17ZXhwb3J0czp7fX0sbWE9e2V4cG9ydHM6e319LHlhPXoodG4pOwovKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi8KIWZ1bmN0aW9uKGUsdCl7dmFyIHI9eWEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIGkoZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9aSksaS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLGkpLGkuZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxpLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0saS5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxpLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fShtYSxtYS5leHBvcnRzKTt2YXIgYmE9NjU1MzYsd2E9NDI5NDk2NzI5NTt2YXIga2E9bWEuZXhwb3J0cy5CdWZmZXIsUmE9Ri5jcnlwdG98fEYubXNDcnlwdG87UmEmJlJhLmdldFJhbmRvbVZhbHVlcz9nYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT53YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPWthLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmJhKWZvcih2YXIgbj0wO248ZTtuKz1iYSlSYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rYmEpKTtlbHNlIFJhLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gTGUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTpnYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgX2EseGE9Z2EuZXhwb3J0cyxTYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20oZG4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geGEoZSl9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpLG8pe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSwocz17a2V5czpbdF19LHZhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgdmEocykpKSx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6byxpc3N1ZXI6YSxzdWJqZWN0Oml9KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpO3ZhciBzfX1dKSxlfSgpLEVhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsQSxULEMsTyxELEksVSxILEwsTTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyB0cixuPW5ldyBTYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihpPW5ldyBKKGEpLG89YS5nZXREYXRhTGF5ZXIoKSxzPWVyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsaSx1LGMsZixsLGg7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gdT0hMSxjPWUuYmFzZVVybHx8ZS5zZXJ2ZXJPcmlnaW4sZj0wLHIudDA9W10sci50MT1iLHIubmV4dD03LG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNzppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTExO2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDExOmlmKCFyLnQzKXtyLm5leHQ9MTU7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTE2O2JyZWFrO2Nhc2UgMTU6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE2OmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0yMDticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAyMDppZighci50Mil7ci5uZXh0PTI0O2JyZWFrfXIudDc9YSxyLm5leHQ9MjU7YnJlYWs7Y2FzZSAyNDpyLnQ3PVtdO2Nhc2UgMjU6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2NdLGw9ci50MC5jb25jYXQuY2FsbChyLnQwLHIudDksci50MTApO2Nhc2UgMjk6aWYoIShmPGwubGVuZ3RoKSl7ci5uZXh0PTM3O2JyZWFrfWlmKCEoaD1sW2ZdKXx8IShudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC51cmwpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0YXJ0c1dpdGgoaCkpKXtyLm5leHQ9MzQ7YnJlYWt9cmV0dXJuIHU9ITAsci5hYnJ1cHQoImJyZWFrIiwzNyk7Y2FzZSAzNDpmKyssci5uZXh0PTI5O2JyZWFrO2Nhc2UgMzc6aWYoIXUpe3IubmV4dD00MTticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIscy5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxpLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnN0YXR1cykmJihudWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLnByZXY9MSxyLm5leHQ9NCxTKCk7Y2FzZSA0Om89ci5zZW50LHIubmV4dD0xMDticmVhaztjYXNlIDc6dGhyb3cgci5wcmV2PTcsci50MD1yLmNhdGNoKDEpLG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtSFItU0UwMSIsbnVsbCE9PShhPW51bGw9PT1yLnQwfHx2b2lkIDA9PT1yLnQwP3ZvaWQgMDpyLnQwLm5hbWUpJiZ2b2lkIDAhPT1hP2E6IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KGk9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubWVzc2FnZSkmJnZvaWQgMCE9PWk/aToiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIW8pe3IubmV4dD0xMjticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIscy5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDQxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiU1BBLVdPUktFUl9DT1JFLUhSLUlWMDIiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0MjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIpfSkpKX0scD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsaSx1LGMsZixsLGgscCxkLHYsZyxtO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dT0hMCxjPWUuYmFzZVVybHx8ZS5zZXJ2ZXJPcmlnaW4sZj1SKHQpLHIucHJldj0zLGYucygpO2Nhc2UgNTppZigobD1mLm4oKSkuZG9uZSl7ci5uZXh0PTQ4O2JyZWFrfXJldHVybiBoPWwudmFsdWUscD0hMSxkPTAsci50MD1bXSxyLnQxPWIsci5uZXh0PTEzLG8uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTM6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0xNzticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAxNzppZighci50Myl7ci5uZXh0PTIxO2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yMjticmVhaztjYXNlIDIxOnIudDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAyMjppZihyLnQ2PWE9ci50NSxyLnQyPW51bGwhPT1yLnQ2LCFyLnQyKXtyLm5leHQ9MjY7YnJlYWt9ci50Mj12b2lkIDAhPT1hO2Nhc2UgMjY6aWYoIXIudDIpe3IubmV4dD0zMDticmVha31yLnQ3PWEsci5uZXh0PTMxO2JyZWFrO2Nhc2UgMzA6ci50Nz1bXTtjYXNlIDMxOnIudDg9ci50NyxyLnQ5PSgwLHIudDEpKHIudDgpLHIudDEwPVtjXSx2PXIudDAuY29uY2F0LmNhbGwoci50MCxyLnQ5LHIudDEwKTtjYXNlIDM1OmlmKCEoZDx2Lmxlbmd0aCkpe3IubmV4dD00MzticmVha31pZighKGc9dltkXSl8fCEobnVsbD09PShpPWgudXJsKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGFydHNXaXRoKGcpKSl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiBwPSEwLHIuYWJydXB0KCJicmVhayIsNDMpO2Nhc2UgNDA6ZCsrLHIubmV4dD0zNTticmVhaztjYXNlIDQzOmlmKHApe3IubmV4dD00NjticmVha31yZXR1cm4gdT0hMSxyLmFicnVwdCgiYnJlYWsiLDQ4KTtjYXNlIDQ2OnIubmV4dD01O2JyZWFrO2Nhc2UgNDg6ci5uZXh0PTUzO2JyZWFrO2Nhc2UgNTA6ci5wcmV2PTUwLHIudDExPXIuY2F0Y2goMyksZi5lKHIudDExKTtjYXNlIDUzOnJldHVybiByLnByZXY9NTMsZi5mKCksci5maW5pc2goNTMpO2Nhc2UgNTY6aWYobT1bXSwhdSl7ci5uZXh0PTYyO2JyZWFrfXJldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe20ucHVzaChzLnJlcXVlc3QoZSkpfSkpLHIuYWJydXB0KCJyZXR1cm4iLChudWxsPT1zP3ZvaWQgMDpzLmFsbCkmJnMuYWxsKG0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cykpe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5wcmV2PTEsdC5uZXh0PTQsUygpO2Nhc2UgNDppPXQuc2VudCx0Lm5leHQ9MTA7YnJlYWs7Y2FzZSA3OnRocm93IHQucHJldj03LHQudDA9dC5jYXRjaCgxKSxuZXcgUCgiU1BBLVdPUktFUl9DT1JFLUhSQS1TRTAxIixudWxsIT09KG49bnVsbD09PXQudDB8fHZvaWQgMD09PXQudDA/dm9pZCAwOnQudDAubmFtZSkmJnZvaWQgMCE9PW4/bjoiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0oYT1udWxsPT09dC50MHx8dm9pZCAwPT09dC50MD92b2lkIDA6dC50MC5tZXNzYWdlKSYmdm9pZCAwIT09YT9hOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxMDppZighaSl7dC5uZXh0PTEyO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixzLmFsbCYmcy5hbGwobSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDEyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNjI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBQKCJTUEEtV09SS0VSX0NPUkUtSFJBLUlWMDIiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA2MzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzMsNTAsNTMsNTZdXSl9KSkpfSxkPWZ1bmN0aW9uKCl7cy5lbmFibGVIYW5kbGVyJiZzLmVuYWJsZUhhbmRsZXIoKX0sdj1mdW5jdGlvbigpe3MuZGlzYWJsZUhhbmRsZXImJnMuZGlzYWJsZUhhbmRsZXIoKX0sZz1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QXV0aG9yaXphdGlvblVSTChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4saSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49bmV3IFVSTChlKSxpPW51bGwhPT0ocj1uLnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIikpJiZ2b2lkIDAhPT1yP3I6IiIsdC5uZXh0PTQsYS5nZXRQS0NFQ29kZShpKTtjYXNlIDQ6cmV0dXJuIG89dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uVVJMOmUscGtjZTpvfSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sbT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gaS5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxpLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx5PWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBzKCl7dmFyIHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihzKXtmb3IoOzspc3dpdGNoKHMucHJldj1zLm5leHQpe2Nhc2UgMDpyZXR1cm4gcy5uZXh0PTIsby5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKHU9cy5zZW50LCFyfHwhdS5lbmFibGVQS0NFKXtzLm5leHQ9NjticmVha31yZXR1cm4gcy5uZXh0PTYsYS5zZXRQS0NFQ29kZShyLG51bGwhPW4/bjoiIik7Y2FzZSA2OmlmKCFlKXtzLm5leHQ9ODticmVha31yZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsYS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIsbnVsbCE9bj9uOiInIikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaS5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksYS5nZXRCYXNpY1VzZXJJbmZvKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA4OnJldHVybiBzLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiU1BBLVdPUktFUl9DT1JFLVJBVDEtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gcy5zdG9wKCl9fSkscyl9KSkpfSx3PWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBpLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGUubmV4dD0zLGEuc2lnbk91dCgpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LGs9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLGEuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLHMsdSxjLGYsbCxoLHA7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih1PSEwLGM9ITEsZj1lLmJhc2VVcmx8fGUuc2VydmVyT3JpZ2luLCEobnVsbD09ZT92b2lkIDA6ZS50b2tlbkVuZHBvaW50KSl7dC5uZXh0PTQwO2JyZWFrfXJldHVybiB1PSExLGw9MCx0LnQwPVtdLHQudDE9Yix0Lm5leHQ9MTAsby5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMDppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTE0O2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDE0OmlmKCF0LnQzKXt0Lm5leHQ9MTg7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTE5O2JyZWFrO2Nhc2UgMTg6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE5OmlmKHQudDY9bj10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yMzticmVha310LnQyPXZvaWQgMCE9PW47Y2FzZSAyMzppZighdC50Mil7dC5uZXh0PTI3O2JyZWFrfXQudDc9bix0Lm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzp0LnQ3PVtdO2Nhc2UgMjg6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W2ZdLGg9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzI6aWYoIShsPGgubGVuZ3RoKSl7dC5uZXh0PTQwO2JyZWFrfWlmKCEocD1oW2xdKXx8IShudWxsPT09KHM9ZS50b2tlbkVuZHBvaW50KXx8dm9pZCAwPT09cz92b2lkIDA6cy5zdGFydHNXaXRoKHApKSl7dC5uZXh0PTM3O2JyZWFrfXJldHVybiBjPSEwLHQuYWJydXB0KCJicmVhayIsNDApO2Nhc2UgMzc6bCsrLHQubmV4dD0zMjticmVhaztjYXNlIDQwOmlmKGUuc2hvdWxkUmVwbGF5QWZ0ZXJSZWZyZXNoJiZvLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoSyxKU09OLnN0cmluZ2lmeShlKSksIXUmJiFjKXt0Lm5leHQ9NDU7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLGEucmVxdWVzdEN1c3RvbUdyYW50KGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZighZS5yZXR1cm5zU2Vzc2lvbil7ci5uZXh0PTU7YnJlYWt9cmV0dXJuIGkucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHIuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHQpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDQ1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgUCgiU1BBLVdPUktFUl9DT1JFLVJDRy1JVjAxIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgdG9rZW4gZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLGEucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiBlLm5leHQ9NSxNKCk7Y2FzZSA1OmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5uZXh0PTkseCh0KTtjYXNlIDk6cmV0dXJuIGkucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDEzOnJldHVybiBlLnByZXY9MTMsZS50MD1lLmNhdGNoKDApLGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUudDApKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMCwxM11dKX0pKSl9LEU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixhLmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRBY2Nlc3NUb2tlbigpfSxJPWZ1bmN0aW9uKCl7cmV0dXJuIGEuaXNBdXRoZW50aWNhdGVkKCl9LFU9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixvLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEg9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixhLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEw9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG8uZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE09ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG8uZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihLKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sdC5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjp2LGVuYWJsZUh0dHBIYW5kbGVyOmQsZ2V0QWNjZXNzVG9rZW46RCxnZXRBdXRob3JpemF0aW9uVVJMOmcsZ2V0QmFzaWNVc2VySW5mbzpBLGdldENvbmZpZ0RhdGE6TCxnZXREZWNvZGVkSURUb2tlbjpULGdldElEVG9rZW46QyxnZXRPSURDU2VydmljZUVuZHBvaW50czpPLGdldFNpZ25PdXRVUkw6ayxodHRwUmVxdWVzdDpoLGh0dHBSZXF1ZXN0QWxsOnAsaXNBdXRoZW50aWNhdGVkOkkscmVmcmVzaEFjY2Vzc1Rva2VuOlMscmVxdWVzdEFjY2Vzc1Rva2VuOnkscmVxdWVzdEN1c3RvbUdyYW50OngscmV2b2tlQWNjZXNzVG9rZW46RSxzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrOmwsc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrOmMsc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s6ZixzZXRTZXNzaW9uU3RhdGU6VSxzaWduT3V0Oncsc3RhcnRBdXRvUmVmcmVzaFRva2VuOm0sdXBkYXRlQ29uZmlnOkh9KTtjYXNlIDM5OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxBYT1zZWxmO0FhLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEscj1lLnBvcnRzO3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG4sYSxpLG8scyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocz1yWzBdLHQudHlwZT09PXF8fF9hKXtlLm5leHQ9NDticmVha31yZXR1cm4gcy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IFAoIlNQQS1DTElFTlRfV09SS0VSLU9OTVNHLU5GMDEiLCJUaGUgd2ViIHdvcmtlciBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiIsIlRoZSBpbml0aWFsaXplIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGNhbiBiZSBjYXJyaWVkIG91dC4iKSkpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6ZS50MD10LnR5cGUsZS5uZXh0PWUudDA9PT1xPzc6ImdldF9hdXRoX3VybCI9PT1lLnQwPzIyOiJyZXF1ZXN0X2dldF90b2tlbiI9PT1lLnQwPzI0OiJodHRwLXJlcXVlc3QiPT09ZS50MD8yNjoiaHR0cC1yZXF1ZXN0LWFsbCI9PT1lLnQwPzI4OiJzaWduLW91dCI9PT1lLnQwPzMwOiJyZXF1ZXN0LWN1c3RvbS1ncmFudCI9PT1lLnQwPzQ0OiJyZXZva2UtYWNjZXNzLXRva2VuIj09PWUudDA/NDY6ImdldC1vaWRjLXNlcnZpY2UtZW5kcG9pbnRzIj09PWUudDA/NDg6ImdldC1iYXNpYy11c2VyLWluZm8iPT09ZS50MD82MjoiZ2V0LWRlY29kZWQtaWQtdG9rZW4iPT09ZS50MD83NjoiZ2V0X2lkX3Rva2VuIj09PWUudDA/OTA6ImVuYWJsZV9odHRwX2hhbmRsZXIiPT09ZS50MD8xMDQ6ImRpc2FibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA3OiJpc19hdXRoZW50aWNhdGVkIj09PWUudDA/MTEwOiJnZXRfc2lnbl9vdXRfdXJsIj09PWUudDA/MTI0OiJyZWZyZXNoX2FjY2Vzcy10b2tlbiI9PT1lLnQwPzEzODoic3RhcnRfYXV0b19yZWZyZXNoX3Rva2VuIj09PWUudDA/MTUyOiJzZXRfc2Vzc2lvbl9zdGF0ZSI9PT1lLnQwPzE1NDoidXBkYXRlX2NvbmZpZyI9PT1lLnQwPzE2ODoiZ2V0X2NvbmZpZ19kYXRhIj09PWUudDA/MTgyOjE5NjticmVhaztjYXNlIDc6cmV0dXJuIGUucHJldj03LHU9T2JqZWN0LmFzc2lnbih7fSx0LmRhdGEpLGUubmV4dD0xMSxFYSh1KTtjYXNlIDExOihfYT1lLnNlbnQpLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soUGEpLF9hLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhUYSksX2Euc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soQ2EpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUubmV4dD0yMTticmVhaztjYXNlIDE4OmUucHJldj0xOCxlLnQxPWUuY2F0Y2goNykscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MSkpO2Nhc2UgMjE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDIyOnJldHVybiBfYS5nZXRBdXRob3JpemF0aW9uVVJMKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIF9hLnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KG49bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb2RlLG51bGw9PT0oYT1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnNlc3Npb25TdGF0ZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5wa2NlLG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0YXRlKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyNjpyZXR1cm4gX2EuaHR0cFJlcXVlc3QodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyODpyZXR1cm4gX2EuaHR0cFJlcXVlc3RBbGwodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gZS5wcmV2PTMwLGUudDI9cyxlLnQzPUIsZS5uZXh0PTM1LF9hLnNpZ25PdXQoKTtjYXNlIDM1OmUudDQ9ZS5zZW50LGUudDU9ZS50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MyxlLnQ0KSxlLnQyLnBvc3RNZXNzYWdlLmNhbGwoZS50MixlLnQ1KSxlLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDplLnByZXY9NDAsZS50Nj1lLmNhdGNoKDMwKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ2KSk7Y2FzZSA0MzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDQ6cmV0dXJuIF9hLnJlcXVlc3RDdXN0b21HcmFudCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ2OnJldHVybiBfYS5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiBlLnByZXY9NDgsZS50Nz1zLGUudDg9QixlLm5leHQ9NTMsX2EuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOmUudDk9ZS5zZW50LGUudDEwPWUudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDgsZS50OSksZS50Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDcsZS50MTApLGUubmV4dD02MTticmVhaztjYXNlIDU4OmUucHJldj01OCxlLnQxMT1lLmNhdGNoKDQ4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQxMSkpO2Nhc2UgNjE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDYyOnJldHVybiBlLnByZXY9NjIsZS50MTI9cyxlLnQxMz1CLGUubmV4dD02NyxfYS5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSA2NzplLnQxND1lLnNlbnQsZS50MTU9ZS50MTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDEzLGUudDE0KSxlLnQxMi5wb3N0TWVzc2FnZS5jYWxsKGUudDEyLGUudDE1KSxlLm5leHQ9NzU7YnJlYWs7Y2FzZSA3MjplLnByZXY9NzIsZS50MTY9ZS5jYXRjaCg2Mikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTYpKTtjYXNlIDc1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA3NjpyZXR1cm4gZS5wcmV2PTc2LGUudDE3PXMsZS50MTg9QixlLm5leHQ9ODEsX2EuZ2V0RGVjb2RlZElEVG9rZW4oKTtjYXNlIDgxOmUudDE5PWUuc2VudCxlLnQyMD1lLnQxOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MTgsZS50MTkpLGUudDE3LnBvc3RNZXNzYWdlLmNhbGwoZS50MTcsZS50MjApLGUubmV4dD04OTticmVhaztjYXNlIDg2OmUucHJldj04NixlLnQyMT1lLmNhdGNoKDc2KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyMSkpO2Nhc2UgODk6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiBlLnByZXY9OTAsZS50MjI9cyxlLnQyMz1CLGUubmV4dD05NSxfYS5nZXRJRFRva2VuKCk7Y2FzZSA5NTplLnQyND1lLnNlbnQsZS50MjU9ZS50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDIzLGUudDI0KSxlLnQyMi5wb3N0TWVzc2FnZS5jYWxsKGUudDIyLGUudDI1KSxlLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOmUucHJldj0xMDAsZS50MjY9ZS5jYXRjaCg5MCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjYpKTtjYXNlIDEwMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTA0OnJldHVybiBfYS5lbmFibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNzpyZXR1cm4gX2EuZGlzYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTEwOnJldHVybiBlLnByZXY9MTEwLGUudDI3PXMsZS50Mjg9QixlLm5leHQ9MTE1LF9hLmlzQXV0aGVudGljYXRlZCgpO2Nhc2UgMTE1OmUudDI5PWUuc2VudCxlLnQzMD1lLnQyOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MjgsZS50MjkpLGUudDI3LnBvc3RNZXNzYWdlLmNhbGwoZS50MjcsZS50MzApLGUubmV4dD0xMjM7YnJlYWs7Y2FzZSAxMjA6ZS5wcmV2PTEyMCxlLnQzMT1lLmNhdGNoKDExMCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzEpKTtjYXNlIDEyMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTI0OnJldHVybiBlLnByZXY9MTI0LGUudDMyPXMsZS50MzM9QixlLm5leHQ9MTI5LF9hLmdldFNpZ25PdXRVUkwoKTtjYXNlIDEyOTplLnQzND1lLnNlbnQsZS50MzU9ZS50MzMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMzLGUudDM0KSxlLnQzMi5wb3N0TWVzc2FnZS5jYWxsKGUudDMyLGUudDM1KSxlLm5leHQ9MTM3O2JyZWFrO2Nhc2UgMTM0OmUucHJldj0xMzQsZS50MzY9ZS5jYXRjaCgxMjQpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEzODpyZXR1cm4gZS5wcmV2PTEzOCxlLnQzNz1zLGUudDM4PUIsZS5uZXh0PTE0MyxfYS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzplLnQzOT1lLnNlbnQsZS50NDA9ZS50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDM4LGUudDM5KSxlLnQzNy5wb3N0TWVzc2FnZS5jYWxsKGUudDM3LGUudDQwKSxlLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OmUucHJldj0xNDgsZS50NDE9ZS5jYXRjaCgxMzgpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDQxKSk7Y2FzZSAxNTE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1Mjp0cnl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoX2Euc3RhcnRBdXRvUmVmcmVzaFRva2VuKCkpKX1jYXRjaChlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1NDpyZXR1cm4gZS5wcmV2PTE1NCxlLnQ0Mj1zLGUudDQzPUIsZS5uZXh0PTE1OSxfYS5zZXRTZXNzaW9uU3RhdGUobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE1OTplLnQ0ND1lLnNlbnQsZS50NDU9ZS50NDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQzLGUudDQ0KSxlLnQ0Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDQyLGUudDQ1KSxlLm5leHQ9MTY3O2JyZWFrO2Nhc2UgMTY0OmUucHJldj0xNjQsZS50NDY9ZS5jYXRjaCgxNTQpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDQ2KSk7Y2FzZSAxNjc6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE2ODpyZXR1cm4gZS5wcmV2PTE2OCxlLnQ0Nz1zLGUudDQ4PUIsZS5uZXh0PTE3MyxfYS51cGRhdGVDb25maWcobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE3MzplLnQ0OT1lLnNlbnQsZS50NTA9ZS50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQ4LGUudDQ5KSxlLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDQ3LGUudDUwKSxlLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OmUucHJldj0xNzgsZS50NTE9ZS5jYXRjaCgxNjgpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDUxKSk7Y2FzZSAxODE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE4MjpyZXR1cm4gZS5wcmV2PTE4MixlLnQ1Mj1zLGUudDUzPUIsZS5uZXh0PTE4NyxfYS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxODc6ZS50NTQ9ZS5zZW50LGUudDU1PWUudDUzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ1MyxlLnQ1NCksZS50NTIucG9zdE1lc3NhZ2UuY2FsbChlLnQ1MixlLnQ1NSksZS5uZXh0PTE5NTticmVhaztjYXNlIDE5MjplLnByZXY9MTkyLGUudDU2PWUuY2F0Y2goMTgyKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1NikpO2Nhc2UgMTk1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxOTY6bnVsbD09c3x8cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IFAoIlNQQS1DTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJUaGUgbWVzc2FnZSB0eXBlIGlzIGludmFsaWQuIiwiVGhlIG1lc3NhZ2UgdHlwZSBwcm92aWRlZCwgIi5jb25jYXQodC50eXBlLCIsIGlzIGludmFsaWQuIikpKSk7Y2FzZSAxOTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s3LDE4XSxbMzAsNDBdLFs0OCw1OF0sWzYyLDcyXSxbNzYsODZdLFs5MCwxMDBdLFsxMTAsMTIwXSxbMTI0LDEzNF0sWzEzOCwxNDhdLFsxNTQsMTY0XSxbMTY4LDE3OF0sWzE4MiwxOTJdXSl9KSkpfTt2YXIgVGE9ZnVuY3Rpb24oKXtBYS5wb3N0TWVzc2FnZSh7dHlwZToicmVxdWVzdC1zdGFydCJ9KX0sQ2E9ZnVuY3Rpb24oZSl7QWEucG9zdE1lc3NhZ2Uoe2RhdGE6SlNPTi5zdHJpbmdpZnkobnVsbCE9ZT9lOiIiKSx0eXBlOiJyZXF1ZXN0LXN1Y2Nlc3MifSl9LFBhPWZ1bmN0aW9uKCl7QWEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfTtyZXR1cm57fX0oKTsKCg==",AQ=null,FQ=!1,function(e){return BQ=BQ||wQ(TQ,AQ,FQ),new Worker(BQ,e)}),jQ=function(e){return sA(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,f,W,R,C,v,S,Y,J,K,N,L,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,oF((function(){return sA(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",cF.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 zQ,u=function(e){var t=new MessageChannel;return l.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new JA("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 sA(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 sA(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 sA(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,R();case 2:return i=e.sent,e.next=5,C();case 5:c=e.sent,a.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return sA(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,v();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 sA(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 sA(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,C();case 2:if(r=e.sent,!cF.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=KA.extractPKCEKeyFromStateParam(null!==(n=new URL(l.authorizationURL).searchParams.get(SA))&&void 0!==n?n:""),l.pkce&&r.enablePKCE&&cF.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 sA(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 sA(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,C();case 2:return n=t.sent,r={data:e,type:"get_auth_url"},t.abrupt("return",u(r).then((function(e){return sA(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=KA.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(SA))&&void 0!==r?r:""),cF.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 sA(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,C();case 2:return i=r.sent,c=KA.extractPKCEKeyFromStateParam(n),o={data:{code:e,pkce:i.enablePKCE?cF.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&cF.removePKCE(c),r.abrupt("return",u(o).then((function(e){return u({type:"get_sign_out_url"}).then((function(t){return cF.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)})))},V=function(e,t,n,r){return sA(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,C();case 2:return u=i.sent,i.next=5,a.receivePromptNoneResponse((function(e){return sA(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 JA("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",v());case 23:if((null==u?void 0:u.responseMode)===uA.formPost&&t?(Z=t,h=null!=n?n:"",b=null!=r?r:""):(Z=null!==(c=new URL(window.location.href).searchParams.get(WA))&&void 0!==c?c:"",h=null!==(o=new URL(window.location.href).searchParams.get(RA))&&void 0!==o?o:"",b=null!==(l=new URL(window.location.href).searchParams.get(SA))&&void 0!==l?l:"",cF.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 sA(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,cF.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)})))},f=function(){return J().then((function(e){return sA(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 sA(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,cF.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=cF.getSignOutURL(),t.next=8,cF.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)}))},R=function(){return u({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},C=function(){return u({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},v=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)},k=function(e){return sA(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,C();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:v,getDecodedIDToken:S,getIDToken:Y,getOIDCServiceEndpoints:R,httpRequest:s,httpRequestAll:m,initialize:b,isAuthenticated:J,refreshAccessToken:K,requestCustomGrant:d,revokeAccessToken:W,setHttpRequestErrorCallback:L,setHttpRequestFinishCallback:x,setHttpRequestStartCallback:H,setHttpRequestSuccessCallback:N,signIn:V,signOut:f,trySignInSilently:y,updateConfig:k});case 36:case"end":return t.stop()}}),t)})))},QQ={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:NA.SessionStorage},MQ=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 sA(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 sA(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
  *
@@ -477,7 +477,7 @@ function(e){return mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
477
477
  * auth.initialize({
478
478
  * signInRedirectURL: "http://localhost:3000/sign-in",
479
479
  * clientID: "client ID",
480
- * serverOrigin: "https://api.asgardeo.io"
480
+ * baseUrl: "https://api.asgardeo.io"
481
481
  * });
482
482
  * ```
483
483
  *
@@ -487,7 +487,7 @@ function(e){return mw(this,void 0,void 0,regeneratorRuntime.mark((function t(){r
487
487
  *
488
488
  * @preserve
489
489
  */
490
- function(e){var t;return sw(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:Nw.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===Nw.WebWorker){n.next=15;break}if(this._client){n.next=10;break}return r=e,i=Object.assign({},QP),n.next=9,FP(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,PP(Object.assign(Object.assign({},QP),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)})))}
490
+ function(e){var t;return sA(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,o=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:NA.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===NA.WebWorker){n.next=15;break}if(this._client){n.next=10;break}return r=e,i=Object.assign({},QQ),n.next=9,UQ(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,jQ(Object.assign(Object.assign({},QQ),c));case 19:return this._client=n.sent,n.abrupt("return",this._client.initialize().then((function(){return o._onInitialize&&o._onInitialize(!0),o._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 sw(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 sw(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)})))}
510
+ */},{key:"getBasicUserInfo",value:function(){var e;return sA(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.
@@ -527,6 +527,9 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
527
527
  * 2. forceInit: Specifies if the OIDC Provider Meta Data should be loaded again from the `well-known`
528
528
  * endpoint.
529
529
  * 3. Any other parameters that should be appended to the authorization request.
530
+ * @param {string} authorizationCode - The authorization code. (Optional)
531
+ * @param {string} sessionState - The session state. (Optional)
532
+ * @param {string} state - The state. (Optional)
530
533
  *
531
534
  * @return {Promise<BasicUserInfo>} - A promise that resolves with the user information.
532
535
  *
@@ -540,7 +543,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
540
543
  * @memberof AsgardeoSPAClient
541
544
  *
542
545
  * @preserve
543
- */},{key:"signIn",value:function(e,t,n){var r;return sw(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._isInitialized();case 2:if(oT.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){i.next=4;break}return i.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,i.abrupt("return",null===(r=this._client)||void 0===r?void 0:r.signIn(e,t,n).then((function(e){return c._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&c._onSignInCallback(e),e})));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"trySignInSilently",value:function(){var e;return sw(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(!oT.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)})))}
546
+ */},{key:"signIn",value:function(e,t,n,r){var i;return sA(this,void 0,void 0,regeneratorRuntime.mark((function c(){var o=this;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(cF.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 o._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&o._onSignInCallback(e),e})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var e;return sA(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(!cF.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)})))}
544
547
  /**
545
548
  * This method initiates the sign-out flow.
546
549
  *
@@ -560,7 +563,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
560
563
  * @memberof AsgardeoSPAClient
561
564
  *
562
565
  * @preserve
563
- */},{key:"signOut",value:function(){var e,t;return sw(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)})))}
566
+ */},{key:"signOut",value:function(){var e,t;return sA(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)})))}
564
567
  /**
565
568
  * This method sends an API request to a protected endpoint.
566
569
  * The access token is automatically attached to the header of the request.
@@ -597,7 +600,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
597
600
  * @memberof AsgardeoSPAClient
598
601
  *
599
602
  * @preserve
600
- */},{key:"httpRequest",value:function(e){var t;return sw(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)})))}
603
+ */},{key:"httpRequest",value:function(e){var t;return sA(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)})))}
601
604
  /**
602
605
  * This method sends multiple API requests to a protected endpoint.
603
606
  * The access token is automatically attached to the header of the request.
@@ -644,7 +647,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
644
647
  * @memberof AsgardeoSPAClient
645
648
  *
646
649
  * @preserve
647
- */},{key:"httpRequestAll",value:function(e){var t;return sw(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)})))}
650
+ */},{key:"httpRequestAll",value:function(e){var t;return sA(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)})))}
648
651
  /**
649
652
  * This method allows you to send a request with a custom grant.
650
653
  *
@@ -675,7 +678,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
675
678
  * @memberof AsgardeoSPAClient
676
679
  *
677
680
  * @preserve
678
- */},{key:"requestCustomGrant",value:function(e){var t,n;return sw(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("AUTH_CLIENT-RCG-NF01","client","requestCustomGrant","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)})))}
681
+ */},{key:"requestCustomGrant",value:function(e){var t,n;return sA(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 JA("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)})))}
679
682
  /**
680
683
  * This method ends a user session. The access token is revoked and the session information is destroyed.
681
684
  *
@@ -695,7 +698,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
695
698
  * @memberof AsgardeoSPAClient
696
699
  *
697
700
  * @preserve
698
- */},{key:"revokeAccessToken",value:function(){var e;return sw(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)})))}
701
+ */},{key:"revokeAccessToken",value:function(){var e;return sA(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)})))}
699
702
  /**
700
703
  * This method returns a Promise that resolves with an object containing the service endpoints.
701
704
  *
@@ -715,7 +718,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
715
718
  * @memberof AsgardeoSPAClient
716
719
  *
717
720
  * @preserve
718
- */},{key:"getOIDCServiceEndpoints",value:function(){var e;return sw(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)})))}
721
+ */},{key:"getOIDCServiceEndpoints",value:function(){var e;return sA(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)})))}
719
722
  /**
720
723
  * This methods returns the Axios http client.
721
724
  *
@@ -724,7 +727,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
724
727
  * @memberof AsgardeoSPAClient
725
728
  *
726
729
  * @preserve
727
- */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==Nw.WebWorker)return this._client.getHttpClient();throw new cT("AUTH_CLIENT-GHC-IV01","client","getHttpClient","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new cT("AUTH_CLIENT-GHC-NF02","client","getHttpClient","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}
730
+ */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==NA.WebWorker)return this._client.getHttpClient();throw new JA("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 JA("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.")}
728
731
  /**
729
732
  * This method decodes the payload of the id token and returns it.
730
733
  *
@@ -744,7 +747,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
744
747
  * @memberof AsgardeoSPAClient
745
748
  *
746
749
  * @preserve
747
- */},{key:"getDecodedIDToken",value:function(){var e;return sw(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)})))}
750
+ */},{key:"getDecodedIDToken",value:function(){var e;return sA(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)})))}
748
751
  /**
749
752
  * This method return the ID token.
750
753
  *
@@ -760,7 +763,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
760
763
  * @memberof AsgardeoAuthClient
761
764
  *
762
765
  * @preserve
763
- */},{key:"getIDToken",value:function(){var e;return sw(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)})))}
766
+ */},{key:"getIDToken",value:function(){var e;return sA(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)})))}
764
767
  /**
765
768
  * This method return a Promise that resolves with the access token.
766
769
  *
@@ -782,7 +785,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
782
785
  * @memberof AsgardeoSPAClient
783
786
  *
784
787
  * @preserve
785
- */},{key:"getAccessToken",value:function(){return sw(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||![(Nw.WebWorker,Nw.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new cT("AUTH_CLIENT-GAT-IV01","client","getAccessToken","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)})))}
788
+ */},{key:"getAccessToken",value:function(){return sA(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||![(NA.WebWorker,NA.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new JA("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)})))}
786
789
  /**
787
790
  * This method refreshes the access token.
788
791
  *
@@ -803,7 +806,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
803
806
  * @memberof AsgardeoSPAClient
804
807
  *
805
808
  * @preserve
806
- */},{key:"refreshAccessToken",value:function(){var e;return sw(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)})))}
809
+ */},{key:"refreshAccessToken",value:function(){var e;return sA(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)})))}
807
810
  /**
808
811
  * This method specifies if the user is authenticated or not.
809
812
  *
@@ -812,7 +815,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
812
815
  * @memberof AsgardeoSPAClient
813
816
  *
814
817
  * @preserve
815
- */},{key:"isAuthenticated",value:function(){var e;return sw(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 sw(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=32;break}o.t0=e,o.next=o.t0===Hw.SignIn?6:o.t0===Hw.SignOut?8:o.t0===Hw.RevokeAccessToken?11:o.t0===Hw.Initialize?13:o.t0===Hw.HttpRequestError?15:o.t0===Hw.HttpRequestFinish?17:o.t0===Hw.HttpRequestStart?19:o.t0===Hw.HttpRequestSuccess?21:o.t0===Hw.CustomGrant?23:o.t0===Hw.SignOutFailed?25:29;break;case 6:return this._onSignInCallback=t,o.abrupt("break",30);case 8:return this._onSignOutCallback=t,oT.isSignOutSuccessful()&&this._onSignOutCallback(),o.abrupt("break",30);case 11:return this._onEndUserSession=t,o.abrupt("break",30);case 13:return this._onInitialize=t,o.abrupt("break",30);case 15:return null===(r=this._client)||void 0===r||r.setHttpRequestErrorCallback(t),o.abrupt("break",30);case 17:return null===(i=this._client)||void 0===i||i.setHttpRequestFinishCallback(t),o.abrupt("break",30);case 19:return null===(c=this._client)||void 0===c||c.setHttpRequestStartCallback(t),o.abrupt("break",30);case 21:return null===(a=this._client)||void 0===a||a.setHttpRequestSuccessCallback(t),o.abrupt("break",30);case 23:return n&&this._onCustomGrant.set(n,t),o.abrupt("break",30);case 25:return this._onSignOutFailedCallback=t,(l=oT.didSignOutFail())&&this._onSignOutFailedCallback(l),o.abrupt("break",30);case 29:throw new cT("AUTH_CLIENT-ON-IV01","client","on","Invalid hook.","The provided hook is invalid.");case 30:o.next=33;break;case 32:throw new cT("AUTH_CLIENT-ON-IV02","client","on","Invalid callback function.","The provided callback function is invalid.");case 33:case"end":return o.stop()}}),o,this)})))}
818
+ */},{key:"isAuthenticated",value:function(){var e;return sA(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,o;return sA(this,void 0,void 0,regeneratorRuntime.mark((function a(){var l;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._isInitialized();case 2:if(!t||"function"!=typeof t){a.next=32;break}a.t0=e,a.next=a.t0===LA.SignIn?6:a.t0===LA.SignOut?8:a.t0===LA.RevokeAccessToken?11:a.t0===LA.Initialize?13:a.t0===LA.HttpRequestError?15:a.t0===LA.HttpRequestFinish?17:a.t0===LA.HttpRequestStart?19:a.t0===LA.HttpRequestSuccess?21:a.t0===LA.CustomGrant?23:a.t0===LA.SignOutFailed?25:29;break;case 6:return this._onSignInCallback=t,a.abrupt("break",30);case 8:return this._onSignOutCallback=t,cF.isSignOutSuccessful()&&this._onSignOutCallback(),a.abrupt("break",30);case 11:return this._onEndUserSession=t,a.abrupt("break",30);case 13:return this._onInitialize=t,a.abrupt("break",30);case 15:return null===(r=this._client)||void 0===r||r.setHttpRequestErrorCallback(t),a.abrupt("break",30);case 17:return null===(i=this._client)||void 0===i||i.setHttpRequestFinishCallback(t),a.abrupt("break",30);case 19:return null===(c=this._client)||void 0===c||c.setHttpRequestStartCallback(t),a.abrupt("break",30);case 21:return null===(o=this._client)||void 0===o||o.setHttpRequestSuccessCallback(t),a.abrupt("break",30);case 23:return n&&this._onCustomGrant.set(n,t),a.abrupt("break",30);case 25:return this._onSignOutFailedCallback=t,(l=cF.didSignOutFail())&&this._onSignOutFailedCallback(l),a.abrupt("break",30);case 29:throw new JA("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 30:a.next=33;break;case 32:throw new JA("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 33:case"end":return a.stop()}}),a,this)})))}
816
819
  /**
817
820
  * This method enables callback functions attached to the http client.
818
821
  *
@@ -828,7 +831,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
828
831
  * @memberof AsgardeoSPAClient
829
832
  *
830
833
  * @preserve
831
- */},{key:"enableHttpHandler",value:function(){var e;return sw(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)})))}
834
+ */},{key:"enableHttpHandler",value:function(){var e;return sA(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)})))}
832
835
  /**
833
836
  * This method disables callback functions attached to the http client.
834
837
  *
@@ -844,7 +847,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
844
847
  * @memberof AsgardeoSPAClient
845
848
  *
846
849
  * @preserve
847
- */},{key:"disableHttpHandler",value:function(){var e;return sw(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)})))}
850
+ */},{key:"disableHttpHandler",value:function(){var e;return sA(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)})))}
848
851
  /**
849
852
  * This method updates the configuration that was passed into the constructor when instantiating this class.
850
853
  *
@@ -855,7 +858,7 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
855
858
  * const config = {
856
859
  * signInRedirectURL: "http://localhost:3000/sign-in",
857
860
  * clientID: "client ID",
858
- * serverOrigin: "https://api.asgardeo.io"
861
+ * baseUrl: "https://api.asgardeo.io"
859
862
  * }
860
863
  * const auth.updateConfig(config);
861
864
  * ```
@@ -864,5 +867,5 @@ function(e){var t;return sw(this,void 0,void 0,regeneratorRuntime.mark((function
864
867
  * @memberof AsgardeoAuthClient
865
868
  *
866
869
  * @preserve
867
- */},{key:"updateConfig",value:function(e){return sw(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!==Nw.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}();MP._instances=new Map;var EP=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{Ww as AUTHORIZATION_CODE,ww as AsgardeoAuthClient,MP as AsgardeoSPAClient,Lw as AuthenticationUtils,Iw as CLIENT_ID_TAG,gw as CLIENT_SECRET_TAG,Hw as Hooks,Yw as OIDC_SCOPE,Gw as PKCE_CODE_VERIFIER,Vw as PKCE_SEPARATOR,Xw as REFRESH_TOKEN_TIMER,uw as ResponseMode,pw as SCOPE_TAG,Cw as SESSION_STATE,Rw as SIGN_OUT_SUCCESS_PARAM,vw as SIGN_OUT_URL,oT as SPAUtils,Sw as STATE,fw as SUPPORTED_SIGNATURE_ALGORITHMS,Nw as Storage,Zw as Stores,hw as TOKEN_TAG,bw as USERNAME_TAG,EP as WebWorkerClass};
870
+ */},{key:"updateConfig",value:function(e){return sA(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!==NA.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}();MQ._instances=new Map;var PQ=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{WA as AUTHORIZATION_CODE,TA as AsgardeoAuthClient,JA as AsgardeoAuthException,MQ as AsgardeoSPAClient,KA as AuthenticationUtils,IA as CLIENT_ID_TAG,gA as CLIENT_SECRET_TAG,LA as Hooks,YA as OIDC_SCOPE,GA as PKCE_CODE_VERIFIER,VA as PKCE_SEPARATOR,XA as REFRESH_TOKEN_TIMER,uA as ResponseMode,pA as SCOPE_TAG,RA as SESSION_STATE,vA as SIGN_OUT_SUCCESS_PARAM,CA as SIGN_OUT_URL,cF as SPAUtils,SA as STATE,fA as SUPPORTED_SIGNATURE_ALGORITHMS,NA as Storage,ZA as Stores,hA as TOKEN_TAG,bA as USERNAME_TAG,PQ as WebWorkerClass};
868
871
  //# sourceMappingURL=asgardeo-spa.production.esm.js.map