w-web-perm 1.1.11 → 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.7cb7e394.js +1 -0
- package/dist/js/app.7cb7e394.js +1 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +2 -2
- package/docs/global.html +2239 -222
- package/docs/index.html +2 -2
- package/docs/server_WWebPerm.mjs.html +15 -2
- package/docs/server_dataChannel.mjs.html +2 -2
- package/docs/server_lockSave.mjs.html +2 -2
- package/docs/server_maskLog.mjs.html +2 -2
- package/docs/server_procCore.mjs.html +2 -2
- package/docs/server_staLogs_resolveShellWorker.mjs.html +2 -2
- package/docs/server_validateRows.mjs.html +15 -4
- package/docs/server_wrapInjected.mjs.html +2 -2
- package/docs/src_fetchJson.mjs.html +2 -2
- package/docs/src_js_cvKpToArr.mjs.html +125 -0
- package/docs/src_js_cvKpToObj.mjs.html +199 -0
- package/docs/src_js_eachOwn.mjs.html +2 -2
- package/docs/src_js_fmtLossyMsg.mjs.html +95 -0
- package/docs/src_js_getKeyOrderLost.mjs.html +121 -0
- package/docs/src_js_getKpLossy.mjs.html +160 -0
- package/docs/src_js_getKpWriteLost.mjs.html +100 -0
- package/docs/src_js_getOwn.mjs.html +2 -2
- package/docs/src_js_getRuleEnable.mjs.html +2 -2
- package/docs/src_js_isAuthMode.mjs.html +92 -0
- package/docs/src_js_joinNames.mjs.html +96 -0
- package/docs/src_js_keepKeyOrder.mjs.html +139 -0
- package/docs/src_js_legendFit.mjs.html +2 -2
- package/docs/src_plugins_reuseDeletedIds.mjs.html +2 -2
- package/docs/src_plugins_submitGuard.mjs.html +2 -2
- package/package.json +1 -1
- package/server/WWebPerm.mjs +13 -0
- package/server/procLang.mjs +4 -0
- package/server/validateRows.mjs +13 -2
- package/src/components/LayoutContentGrups.vue +3 -2
- package/src/components/LayoutContentPemis.vue +5 -3
- package/src/components/LayoutContentUsers.vue +2 -1
- package/src/components/VeCgrups.vue +47 -2
- package/src/components/VeCpemis.vue +47 -2
- package/src/components/VeCrules.vue +7 -1
- package/src/components/VeGrupBlngUsers.vue +61 -7
- package/src/components/VePemiBlngGrups.vue +61 -7
- package/src/js/cvKpToArr.mjs +53 -0
- package/src/js/cvKpToObj.mjs +127 -0
- package/src/js/fmtLossyMsg.mjs +23 -0
- package/src/js/getKeyOrderLost.mjs +49 -0
- package/src/js/getKpLossy.mjs +88 -0
- package/src/js/getKpWriteLost.mjs +28 -0
- package/src/js/isAuthMode.mjs +20 -0
- package/src/js/joinNames.mjs +24 -0
- package/src/js/keepKeyOrder.mjs +67 -0
- package/src/plugins/mShare.mjs +3 -34
- package/dist/js/app-legacy.963e800c.js +0 -1
- package/dist/js/app.963e800c.js +0 -1
package/dist/w-web-perm.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-web-perm v1.1.
|
|
2
|
+
* w-web-perm v1.1.12
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("util"),require("url"),require("pino"),require("module"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","util","url","pino","module","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.util$2,e.url,e.pino,e.module$1,e.readline)}(this,function(e,t,r,n,s,i,u,o,l,a,c,d){"use strict";var D="undefined"!=typeof document?document.currentScript:null,M=Array.isArray,w="object"==typeof global&&global&&global.Object===Object&&global,y="object"==typeof self&&self&&self.Object===Object&&self,g=w||y||Function("return this")(),I=g.Symbol,m=Object.prototype,C=m.hasOwnProperty,p=m.toString,f=I?I.toStringTag:void 0;var L=Object.prototype.toString;var h=I?I.toStringTag:void 0;function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?function(e){var t=C.call(e,f),r=e[f];try{e[f]=void 0;var n=!0}catch(e){}var s=p.call(e);return n&&(t?e[f]=r:delete e[f]),s}(e):function(e){return L.call(e)}(e)}function N(e){return null!=e&&"object"==typeof e}function A(e){return"symbol"==typeof e||N(e)&&"[object Symbol]"==b(e)}var x=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/;function T(e,t){if(M(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!A(e))||(E.test(e)||!x.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=b(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var v,Y=g["__core-js_shared__"],X=(v=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+v:"";var j=Function.prototype.toString;function z(e){if(null!=e){try{return j.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var G=/^\[object .+?Constructor\]$/,W=Function.prototype,K=Object.prototype,F=W.toString,k=K.hasOwnProperty,V=RegExp("^"+F.call(k).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function H(e){return!(!S(e)||(t=e,X&&X in t))&&(Z(e)?V:G).test(z(e));var t}function U(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return H(r)?r:void 0}var B=U(Object,"create");var Q=Object.prototype.hasOwnProperty;var R=Object.prototype.hasOwnProperty;function O(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function J(e,t){return e===t||e!=e&&t!=t}function P(e,t){for(var r=e.length;r--;)if(J(e[r][0],t))return r;return-1}O.prototype.clear=function(){this.__data__=B?B(null):{},this.size=0},O.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},O.prototype.get=function(e){var t=this.__data__;if(B){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return Q.call(t,e)?t[e]:void 0},O.prototype.has=function(e){var t=this.__data__;return B?void 0!==t[e]:R.call(t,e)},O.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=B&&void 0===t?"__lodash_hash_undefined__":t,this};var $=Array.prototype.splice;function _(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}_.prototype.clear=function(){this.__data__=[],this.size=0},_.prototype.delete=function(e){var t=this.__data__,r=P(t,e);return!(r<0)&&(r==t.length-1?t.pop():$.call(t,r,1),--this.size,!0)},_.prototype.get=function(e){var t=this.__data__,r=P(t,e);return r<0?void 0:t[r][1]},_.prototype.has=function(e){return P(this.__data__,e)>-1},_.prototype.set=function(e,t){var r=this.__data__,n=P(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var q=U(g,"Map");function ee(e,t){var r,n,s=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?s["string"==typeof t?"string":"hash"]:s.map}function te(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}te.prototype.clear=function(){this.size=0,this.__data__={hash:new O,map:new(q||_),string:new O}},te.prototype.delete=function(e){var t=ee(this,e).delete(e);return this.size-=t?1:0,t},te.prototype.get=function(e){return ee(this,e).get(e)},te.prototype.has=function(e){return ee(this,e).has(e)},te.prototype.set=function(e,t){var r=ee(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function re(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,s=t?t.apply(this,n):n[0],i=r.cache;if(i.has(s))return i.get(s);var u=e.apply(this,n);return r.cache=i.set(s,u)||i,u};return r.cache=new(re.Cache||te),r}re.Cache=te;var ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/\\(\\)?/g,ie=function(e){var t=re(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,function(e,r,n,s){t.push(n?s.replace(se,"$1"):r||e)}),t}),ue=ie;function oe(e,t){for(var r=-1,n=null==e?0:e.length,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}var le=I?I.prototype:void 0,ae=le?le.toString:void 0;function ce(e){if("string"==typeof e)return e;if(M(e))return oe(e,ce)+"";if(A(e))return ae?ae.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function de(e){return null==e?"":ce(e)}function De(e,t){return M(e)?e:T(e,t)?[e]:ue(de(e))}function Me(e){if("string"==typeof e||A(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function we(e,t){for(var r=0,n=(t=De(t,e)).length;null!=e&&r<n;)e=e[Me(t[r++])];return r&&r==n?e:void 0}function ye(e,t,r){var n=null==e?void 0:we(e,t);return void 0===n?r:n}function ge(e){var t=this.__data__=new _(e);this.size=t.size}ge.prototype.clear=function(){this.__data__=new _,this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ge.prototype.get=function(e){return this.__data__.get(e)},ge.prototype.has=function(e){return this.__data__.has(e)},ge.prototype.set=function(e,t){var r=this.__data__;if(r instanceof _){var n=r.__data__;if(!q||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new te(n)}return r.set(e,t),this.size=r.size,this};function Ie(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new te;++t<r;)this.add(e[t])}function me(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function Ce(e,t){return e.has(t)}Ie.prototype.add=Ie.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Ie.prototype.has=function(e){return this.__data__.has(e)};function pe(e,t,r,n,s,i){var u=1&r,o=e.length,l=t.length;if(o!=l&&!(u&&l>o))return!1;var a=i.get(e),c=i.get(t);if(a&&c)return a==t&&c==e;var d=-1,D=!0,M=2&r?new Ie:void 0;for(i.set(e,t),i.set(t,e);++d<o;){var w=e[d],y=t[d];if(n)var g=u?n(y,w,d,t,e,i):n(w,y,d,e,t,i);if(void 0!==g){if(g)continue;D=!1;break}if(M){if(!me(t,function(e,t){if(!Ce(M,t)&&(w===e||s(w,e,r,n,i)))return M.push(t)})){D=!1;break}}else if(w!==y&&!s(w,y,r,n,i)){D=!1;break}}return i.delete(e),i.delete(t),D}var fe=g.Uint8Array;function Le(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function he(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var be=I?I.prototype:void 0,Ne=be?be.valueOf:void 0;function Ae(e,t){for(var r=-1,n=t.length,s=e.length;++r<n;)e[s+r]=t[r];return e}function xe(e,t,r){var n=t(e);return M(e)?n:Ae(n,r(e))}function Ee(e,t){for(var r=-1,n=null==e?0:e.length,s=0,i=[];++r<n;){var u=e[r];t(u,r,e)&&(i[s++]=u)}return i}function Te(){return[]}var Se=Object.prototype.propertyIsEnumerable,Ze=Object.getOwnPropertySymbols,ve=Ze?function(e){return null==e?[]:(e=Object(e),Ee(Ze(e),function(t){return Se.call(e,t)}))}:Te;function Ye(e){return N(e)&&"[object Arguments]"==b(e)}var Xe=Object.prototype,je=Xe.hasOwnProperty,ze=Xe.propertyIsEnumerable,Ge=Ye(function(){return arguments}())?Ye:function(e){return N(e)&&je.call(e,"callee")&&!ze.call(e,"callee")},We=Ge;var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Fe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,ke=Fe&&Fe.exports===Ke?g.Buffer:void 0,Ve=(ke?ke.isBuffer:void 0)||function(){return!1},He=/^(?:0|[1-9]\d*)$/;function Ue(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&He.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Qe={};function Re(e){return function(t){return e(t)}}Qe["[object Float32Array]"]=Qe["[object Float64Array]"]=Qe["[object Int8Array]"]=Qe["[object Int16Array]"]=Qe["[object Int32Array]"]=Qe["[object Uint8Array]"]=Qe["[object Uint8ClampedArray]"]=Qe["[object Uint16Array]"]=Qe["[object Uint32Array]"]=!0,Qe["[object Arguments]"]=Qe["[object Array]"]=Qe["[object ArrayBuffer]"]=Qe["[object Boolean]"]=Qe["[object DataView]"]=Qe["[object Date]"]=Qe["[object Error]"]=Qe["[object Function]"]=Qe["[object Map]"]=Qe["[object Number]"]=Qe["[object Object]"]=Qe["[object RegExp]"]=Qe["[object Set]"]=Qe["[object String]"]=Qe["[object WeakMap]"]=!1;var Oe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Je=Oe&&"object"==typeof module&&module&&!module.nodeType&&module,Pe=Je&&Je.exports===Oe&&w.process,$e=function(){try{var e=Je&&Je.require&&Je.require("util").types;return e||Pe&&Pe.binding&&Pe.binding("util")}catch(e){}}(),_e=$e&&$e.isTypedArray,qe=_e?Re(_e):function(e){return N(e)&&Be(e.length)&&!!Qe[b(e)]},et=Object.prototype.hasOwnProperty;function tt(e,t){var r=M(e),n=!r&&We(e),s=!r&&!n&&Ve(e),i=!r&&!n&&!s&&qe(e),u=r||n||s||i,o=u?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],l=o.length;for(var a in e)!t&&!et.call(e,a)||u&&("length"==a||s&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ue(a,l))||o.push(a);return o}var rt=Object.prototype;function nt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||rt)}function st(e,t){return function(r){return e(t(r))}}var it=st(Object.keys,Object),ut=Object.prototype.hasOwnProperty;function ot(e){if(!nt(e))return it(e);var t=[];for(var r in Object(e))ut.call(e,r)&&"constructor"!=r&&t.push(r);return t}function lt(e){return null!=e&&Be(e.length)&&!Z(e)}function at(e){return lt(e)?tt(e):ot(e)}function ct(e){return xe(e,at,ve)}var dt=Object.prototype.hasOwnProperty;var Dt=U(g,"DataView"),Mt=U(g,"Promise"),wt=U(g,"Set"),yt=U(g,"WeakMap"),gt="[object Map]",It="[object Promise]",mt="[object Set]",Ct="[object WeakMap]",pt="[object DataView]",ft=z(Dt),Lt=z(q),ht=z(Mt),bt=z(wt),Nt=z(yt),At=b;(Dt&&At(new Dt(new ArrayBuffer(1)))!=pt||q&&At(new q)!=gt||Mt&&At(Mt.resolve())!=It||wt&&At(new wt)!=mt||yt&&At(new yt)!=Ct)&&(At=function(e){var t=b(e),r="[object Object]"==t?e.constructor:void 0,n=r?z(r):"";if(n)switch(n){case ft:return pt;case Lt:return gt;case ht:return It;case bt:return mt;case Nt:return Ct}return t});var xt=At,Et="[object Arguments]",Tt="[object Array]",St="[object Object]",Zt=Object.prototype.hasOwnProperty;function vt(e,t,r,n,s,i){var u=M(e),o=M(t),l=u?Tt:xt(e),a=o?Tt:xt(t),c=(l=l==Et?St:l)==St,d=(a=a==Et?St:a)==St,D=l==a;if(D&&Ve(e)){if(!Ve(t))return!1;u=!0,c=!1}if(D&&!c)return i||(i=new ge),u||qe(e)?pe(e,t,r,n,s,i):function(e,t,r,n,s,i,u){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new fe(e),new fe(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return J(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=Le;case"[object Set]":var l=1&n;if(o||(o=he),e.size!=t.size&&!l)return!1;var a=u.get(e);if(a)return a==t;n|=2,u.set(e,t);var c=pe(o(e),o(t),n,s,i,u);return u.delete(e),c;case"[object Symbol]":if(Ne)return Ne.call(e)==Ne.call(t)}return!1}(e,t,l,r,n,s,i);if(!(1&r)){var w=c&&Zt.call(e,"__wrapped__"),y=d&&Zt.call(t,"__wrapped__");if(w||y){var g=w?e.value():e,I=y?t.value():t;return i||(i=new ge),s(g,I,r,n,i)}}return!!D&&(i||(i=new ge),function(e,t,r,n,s,i){var u=1&r,o=ct(e),l=o.length;if(l!=ct(t).length&&!u)return!1;for(var a=l;a--;){var c=o[a];if(!(u?c in t:dt.call(t,c)))return!1}var d=i.get(e),D=i.get(t);if(d&&D)return d==t&&D==e;var M=!0;i.set(e,t),i.set(t,e);for(var w=u;++a<l;){var y=e[c=o[a]],g=t[c];if(n)var I=u?n(g,y,c,t,e,i):n(y,g,c,e,t,i);if(!(void 0===I?y===g||s(y,g,r,n,i):I)){M=!1;break}w||(w="constructor"==c)}if(M&&!w){var m=e.constructor,C=t.constructor;m==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof C&&C instanceof C||(M=!1)}return i.delete(e),i.delete(t),M}(e,t,r,n,s,i))}function Yt(e,t,r,n,s){return e===t||(null==e||null==t||!N(e)&&!N(t)?e!=e&&t!=t:vt(e,t,r,n,Yt,s))}function Xt(e){return e==e&&!S(e)}function jt(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function zt(e){var t=function(e){for(var t=at(e),r=t.length;r--;){var n=t[r],s=e[n];t[r]=[n,s,Xt(s)]}return t}(e);return 1==t.length&&t[0][2]?jt(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var s=r.length,i=s,u=!n;if(null==e)return!i;for(e=Object(e);s--;){var o=r[s];if(u&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++s<i;){var l=(o=r[s])[0],a=e[l],c=o[1];if(u&&o[2]){if(void 0===a&&!(l in e))return!1}else{var d=new ge;if(n)var D=n(a,c,l,e,t,d);if(!(void 0===D?Yt(c,a,3,n,d):D))return!1}}return!0}(r,e,t)}}function Gt(e,t){return null!=e&&t in Object(e)}function Wt(e,t){return null!=e&&function(e,t,r){for(var n=-1,s=(t=De(t,e)).length,i=!1;++n<s;){var u=Me(t[n]);if(!(i=null!=e&&r(e,u)))break;e=e[u]}return i||++n!=s?i:!!(s=null==e?0:e.length)&&Be(s)&&Ue(u,s)&&(M(e)||We(e))}(e,t,Gt)}function Kt(e){return e}function Ft(e){return function(t){return null==t?void 0:t[e]}}function kt(e){return T(e)?Ft(Me(e)):function(e){return function(t){return we(t,e)}}(e)}function Vt(e){return"function"==typeof e?e:null==e?Kt:"object"==typeof e?M(e)?function(e,t){return T(e)&&Xt(t)?jt(Me(e),t):function(r){var n=ye(r,e);return void 0===n&&n===t?Wt(r,e):Yt(t,n,3)}}(e[0],e[1]):zt(e):kt(e)}var Ht,Ut=function(e,t,r){for(var n=-1,s=Object(e),i=r(e),u=i.length;u--;){var o=i[Ht?u:++n];if(!1===t(s[o],o,s))break}return e};var Bt=function(e,t){return function(r,n){if(null==r)return r;if(!lt(r))return e(r,n);for(var s=r.length,i=t?s:-1,u=Object(r);(t?i--:++i<s)&&!1!==n(u[i],i,u););return r}}(function(e,t){return e&&Ut(e,t,at)}),Qt=Bt;function Rt(e,t){var r=-1,n=lt(e)?Array(e.length):[];return Qt(e,function(e,s,i){n[++r]=t(e,s,i)}),n}function Ot(e,t){return(M(e)?oe:Rt)(e,Vt(t))}var Jt=Array.prototype.join;function Pt(e,t){return null==e?"":Jt.call(e,t)}function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}function _t(e){if($t(e)){for(let t in e)return!0;return!1}return!1}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function er(e){return!!(qt(e)&&e.length>0)}var tr=/\s/;var rr=/^\s+/;function nr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&tr.test(e.charAt(t)););return t}(e)+1).replace(rr,""):e}var sr=/^[-+]0x[0-9a-f]+$/i,ir=/^0b[01]+$/i,ur=/^0o[0-7]+$/i,or=parseInt;function lr(e){if("number"==typeof e)return e;if(A(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=nr(e);var r=ir.test(e);return r||ur.test(e)?or(e.slice(2),r?2:8):sr.test(e)?NaN:+e}var ar=1/0;function cr(e){return e?(e=lr(e))===ar||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function dr(e){var t=cr(e),r=t%1;return t==t?r?t-r:t:0}function Dr(e){return!0===(t=e)||!1===t||N(t)&&"[object Boolean]"==b(t);var t}function Mr(e){if(e!=e)return!0;if(null!==e&&"object"==typeof e)try{let t=Number.prototype.valueOf.call(e);return Number.isNaN(t)}catch(e){return!1}return!1}function wr(e){let t=!1;if(er(e)){if(""===e.trim())return!1;t=!isNaN(Number(e))}else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Mr(e))return!1;t=!0}return t}function yr(e){if(!wr(e))return 0;return cr(e)}function gr(e,t={}){let r=ye(t,"useLimitSafe",null);return Dr(r)||(r=!1),!!wr(e)&&(e=yr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==dr(n));var n}var Ir=g.isFinite,mr=Math.min;var Cr,pr=(Cr=Math["round"],function(e,t){if(e=lr(e),(t=null==t?0:mr(dr(t),292))&&Ir(e)){var r=(de(e)+"e").split("e");return+((r=(de(Cr(r[0]+"e"+(+r[1]+t)))+"e").split("e"))[0]+"e"+(+r[1]-t))}return Cr(e)});function fr(e,t={}){let r=ye(t,"useClampSafe",null);Dr(r)||(r=!1);let n=ye(t,"useLimitSafe",null);Dr(n)||(n=!1);let s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"success",msg:e}:e,u=e=>{if(s)return{state:"error",msg:e};throw new Error(e)};if(!wr(e))return i(0);let o=null;try{e=yr(e),o=pr(e),r&&(o>Number.MAX_SAFE_INTEGER?o=Number.MAX_SAFE_INTEGER:o<Number.MIN_SAFE_INTEGER&&(o=Number.MIN_SAFE_INTEGER))}catch(e){return u(e.toString())}return n&&!Number.isSafeInteger(Number(o))?u(`v[${e}] is not a safe integer`):("0"===String(o)&&(o=0),i(o))}function Lr(e,t={}){if(!gr(e,t))return!1;return fr(e)>0}function hr(e){return"[object Array]"===Object.prototype.toString.call(e)}function br(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Nr(e){if($t(e)){for(let t in e)return!1;return!0}return!1}function Ar(e){return!!hr(e)&&0===e.length}function xr(e){return!!br(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Nr(e)||(!!function(e){return!(!qt(e)||0!==e.length)}(e)||(!!Ar(e)||!!Mr(e)))))}function Er(e){return!!hr(e)&&(0!==e.length&&(1!==e.length||!xr(e[0])))}var Tr=st(Object.getPrototypeOf,Object),Sr=Function.prototype,Zr=Object.prototype,vr=Sr.toString,Yr=Zr.hasOwnProperty,Xr=vr.call(Object);function jr(e){if(!N(e)||"[object Object]"!=b(e))return!1;var t=Tr(e);if(null===t)return!0;var r=Yr.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&vr.call(r)==Xr}function zr(e){return function(e){if(!N(e))return!1;var t=b(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!jr(e)}(e)}function Gr(e){return Z(e)}function Wr(e){let t,r;try{r=Object.prototype.toString.call(e)}catch(e){return!1}if(t="[object Promise]"===r,t)return!0;if("[object Function]"!==r)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kr(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!er(e))return n("invalid v");let s={};try{s=JSON.parse(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fr(e,t={}){if(!gr(e,t))return!1;return fr(e)>=0}function kr(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?"":e.substring(0,t):""}function Vr(e,t){if(!er(e))return"";if(!Fr(t))return"";if(0===(t=fr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Hr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}let Ur=function(e){if(!Gr(e))throw new Error("fn is not a function");return function(){let t,r=Hr();try{t=e.apply(this,arguments)}catch(e){return r.resolve({state:"error",msg:e}),r}let n=e=>{let t=!1;try{t="cancelled"===ye(e,"reason")}catch(e){}t?r.resolve({state:"cancelled",msg:""}):r.resolve({state:"error",msg:e})};try{Wr(t)?t.then(e=>{r.resolve({state:"success",msg:e})},n):r.resolve({state:"success",msg:t})}catch(e){r.resolve({state:"error",msg:e})}return r}};function Br(e,t={}){let r=ye(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function Qr(e,t={}){let r=ye(t,"fs");if(!Br(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Rr(e){return Qr(e,{fs:t})}function Or(e,t={}){let r=ye(t,"fs");return!!Br(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Jr(e){return Or(e,{fs:t})}function Pr(e,t,r){if(!er(e))return"";if(!er(t))return"";if(!qt(r))return"";return String(e).replaceAll(t,r)}function $r(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}function _r(e,t){var r;return(M(e)?$r:Qt)(e,"function"==typeof(r=t)?r:Kt)}function qr(e,t,r=""){if(!Er(t))return{};let n={};return _r(t,function(t){n[t]=ye(e,t,r)}),n}function en(e,t,r=""){if(!Er(e))return[];if(!Er(t))return[];return Ot(e,e=>qr(e,t,r))}let tn=2147483647;var rn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function nn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){if(this instanceof e){var r=[null];return r.push.apply(r,arguments),new(Function.bind.apply(t,r))}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var un={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}(un);var on=nn(un.exports);function ln(){return new on}function an(e,t,r=[],n={}){let s=n.funSettle,i=n.tag||"evem",u=(t,...r)=>e.emit(t,...r);Gr(n.funEmit)&&(u=n.funEmit);try{return u(t,...r)}catch(n){if(Gr(s))try{s(n)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?u("error",{fun:"listener",name:t,msg:n,args:r}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,n)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,n)}catch(e){}}return!1}}async function cn(e,t={}){let r=null,n=Hr();if(!Gr(e))return n.reject("waitfunction需輸入函數f"),n;let s=async()=>{let t=e();return Wr(t)&&(t=await t),t};if(r=await s(),!0===r)return n.resolve(),n;let i=ye(t,"attemptNum",null);Lr(i)||(i=200);let u=ye(t,"timeInterval",null);Lr(u)||(u=1e3),u=Math.min(u,tn);let o=0,l=!1,a=setInterval(async()=>{if(o+=1,l)o>i&&clearInterval(a);else{l=!0;try{r=await s()}catch(e){return clearInterval(a),void n.reject(e)}finally{l=!1}if(!0===r)return clearInterval(a),void n.resolve();o>i&&(clearInterval(a),n.reject(`exceeded attemptNum[${i}]`))}},u);return n}function dn(e,t){return!!$t(e)&&(!(!er(t)&&!wr(t))&&t in e)}function Dn(e={}){let t=ye(e,"timeExpire",null);Lr(t)||(t=18e5),t=fr(t),t=Math.min(t,tn);let r=ye(e,"timeDetect",null);Lr(r)||(r=2e3),r=fr(r),r=Math.min(r,tn);let n=ln(),s=Object.create(null),i=e=>{if(dn(s,e)){return an(n,"checkWithSet",[{state:"error",msg:`checkWithSet: key in use: ${e}`}],{tag:"cacheSt"}),!1}return s[e]={time:Date.now(),value:!0},an(n,"checkWithSet",[{state:"success",msg:`checkWithSet: ${e}`}],{tag:"cacheSt"}),!0},u=setInterval(()=>{an(n,"detect",[{state:"start"}],{tag:"cacheSt"});let e=Date.now();for(let r of Object.keys(s)){let n=s[r];n&&e-n.time>t&&delete s[r]}an(n,"detect",[{state:"finish"}],{tag:"cacheSt"})},r);return n.checkWithSet=i,n.setWithFree=async(e,t)=>{an(n,"setWithFree",[{state:"start"}],{tag:"cacheSt"});let r=[];for(let t of e){if(!i(t)){for(let e of r)delete s[e];let e=`setWithFree: key in use: ${t}`;return an(n,"setWithFree",[{state:"error",msg:e}],{tag:"cacheSt"}),Promise.reject(e)}r.push(t)}try{let r=await t(),s=`setWithFree: ${e.join(", ")}`;return an(n,"setWithFree",[{state:"success",msg:s}],{tag:"cacheSt"}),r}catch(e){let t="";try{t=`${e&&e.message||e}`}catch(e){}throw an(n,"setWithFree",[{state:"error",msg:`setWithFree: fn threw: ${t}`}],{tag:"cacheSt"}),e}finally{for(let e of r)delete s[e]}},n.set=async(e,t=!0)=>{s[e]={time:Date.now(),value:t},an(n,"set",[{state:"success",msg:`set: ${e}`}],{tag:"cacheSt"})},n.get=async e=>{let t=s[e],r=void 0===t?null:t.value;return an(n,"get",[{state:"success",msg:`get: ${e}`}],{tag:"cacheSt"}),r},n.check=async e=>{let t=dn(s,e);return an(n,"check",[{state:"success",msg:`check: ${e} = ${t}`}],{tag:"cacheSt"}),t},n.del=async e=>{delete s[e],an(n,"del",[{state:"success",msg:`del: ${e}`}],{tag:"cacheSt"})},n.waitExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitExist timeout (${r*i}ms): ${e}`;return an(n,"waitExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitExist",[{state:"success",msg:`waitExist resolved: ${e}`}],{tag:"cacheSt"})},n.waitNotExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitNotExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>!dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitNotExist timeout (${r*i}ms): ${e}`;return an(n,"waitNotExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitNotExist",[{state:"success",msg:`waitNotExist resolved: ${e}`}],{tag:"cacheSt"})},n.clear=()=>{clearInterval(u)},n}function Mn(e,t,r=[],n={}){let s=n.ms;return Lr(s)||(s=1),s=fr(s),s=Math.min(s,tn),setTimeout(()=>{an(e,t,r,n)},s)}function wn(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function yn(e,t){try{let r=new WeakSet,n=[],s=JSON.stringify(e,function(e,s){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.length>=t)return"[Deep]";if("bigint"==typeof s)return String(s);if(null!==s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s),n.push(s)}return s});return"string"==typeof s?s:""}catch(e){return""}}function gn(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=wn(()=>JSON.parse(e));if(""!==t)return t}return e}function In(e,t){if(void 0===e)return"";if(null===e)return"null";let r=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==r)return r;let n=yn(e,t);if(""!==n&&"{}"!==n)return gn(n);let s=wn(()=>String(e));return""!==s&&"[object Object]"!==s?s:n}function mn(e,t){let r=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||r.add(e);let n=e,s=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=n.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(r.has(e))break;r.add(e)}let i=pn(e,{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i),n=e}return s.join(" <- ")}function Cn(e,t){let r=null;try{r=e.errors}catch(e){return""}if(!Array.isArray(r)||0===r.length)return"";let n=[];for(let s=0;s<r.length&&s<t.levelCauseMax;s++){if(r[s]===e)continue;let i=pn(r[s],{...t,useCause:!1,useAggregate:!1});""!==i&&n.push(i)}return n.join("; ")}function pn(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let r=null,n=!1;try{r=e.message,n=!0}catch(e){n=!1}if(n&&"string"==typeof r){if(""!==r){let n=r;if(t.useCause){let r=mn(e,t);""!==r&&(n=`${n} <- ${r}`)}if(t.useAggregate){let r=Cn(e,t);""!==r&&(n=`${n} [${r}]`)}return n}let n=mn(e,t);return""!==n?n:""}if(n){let e=In(r,t.levelJsonMax);if(""!==e)return e}let s=mn(e,t);if(""!==s)return s;if(t.useAggregate){let r=Cn(e,t);if(""!==r)return r}let i=yn(e,t.levelJsonMax),u=gn(i);if(""!==u&&"{}"!==u)return u;let o=wn(()=>String(e));if(""!==o&&"[object Object]"!==o)return o;let l=wn(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==i?i:""}function fn(e,t={}){let r=ye(t,"useCause",null);Dr(r)||(r=!1);let n=ye(t,"useAggregate",null);Dr(n)||(n=!1);let s=ye(t,"levelCauseMax",null);Lr(s,{useLimitSafe:!0})||(s=8),s=fr(s);let i=ye(t,"levelJsonMax",null);Lr(i,{useLimitSafe:!0})||(i=6),i=fr(i);let u=ye(t,"lengthMessageMax",null);Lr(u,{useLimitSafe:!0})||(u=0),u=fr(u);let o={useCause:r,useAggregate:n,levelCauseMax:s,levelJsonMax:i,lengthMessageMax:u},l="";try{l=pn(e,o)}catch(e){return l="",l}return er(l)?(o.lengthMessageMax>0&&l.length>o.lengthMessageMax&&(l=o.lengthMessageMax>3?l.slice(0,o.lengthMessageMax-3)+"...":l.slice(0,o.lengthMessageMax)),l):(l="",l)}function Ln(e){if(!(er(e)||wr(e)||A(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var hn={exports:{}};var bn,Nn={exports:{}},An=sn(Object.freeze({__proto__:null,default:{}}));function xn(){return bn||(bn=1,function(e){var t;e.exports=(t=t||function(e,t){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==rn&&rn.crypto&&(r=rn.crypto),!r)try{r=An}catch(e){}var n=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),i={},u=i.lib={},o=u.Base={extend:function(e){var t=s(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=u.WordArray=o.extend({init:function(e,r){e=this.words=e||[],this.sigBytes=r!=t?r:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,s=e.sigBytes;if(this.clamp(),n%4)for(var i=0;i<s;i++){var u=r[i>>>2]>>>24-i%4*8&255;t[n+i>>>2]|=u<<24-(n+i)%4*8}else for(var o=0;o<s;o+=4)t[n+o>>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(n());return new l.init(t,e)}}),a=i.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n+=2)r[n>>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new l.init(r,t/2)}},d=a.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push(String.fromCharCode(i))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n>>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new l.init(r,t)}},D=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(d.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return d.parse(unescape(encodeURIComponent(e)))}},M=u.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=D.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,n=this._data,s=n.words,i=n.sigBytes,u=this.blockSize,o=i/(4*u),a=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*u,c=e.min(4*a,i);if(a){for(var d=0;d<a;d+=u)this._doProcessBlock(s,d);r=s.splice(0,a),n.sigBytes-=c}return new l.init(r,c)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});u.Hasher=M.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){M.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function(e){return function(t,r){return new w.HMAC.init(e,r).finalize(t)}}});var w=i.algo={};return i}(Math),t)}(Nn)),Nn.exports}!function(e){e.exports=xn().enc.Utf8}(hn);var En=nn(hn.exports),Tn={exports:{}};!function(e){var t;e.exports=(t=xn(),function(){var e=t,r=e.lib.WordArray;function n(e,t,n){for(var s=[],i=0,u=0;u<t;u++)if(u%4){var o=n[e.charCodeAt(u-1)]<<u%4*2|n[e.charCodeAt(u)]>>>6-u%4*2;s[i>>>2]|=o<<24-i%4*8,i++}return r.create(s,i)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var s=[],i=0;i<r;i+=3)for(var u=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o<r;o++)s.push(n.charAt(u>>>6*(3-o)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var i=0;i<r.length;i++)s[r.charCodeAt(i)]=i}var u=r.charAt(64);if(u){var o=e.indexOf(u);-1!==o&&(t=o)}return n(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Tn);var Sn=nn(Tn.exports);function Zn(e){try{return String(e)}catch(e){}try{let t=e.message;if("string"==typeof t&&""!==t)return t}catch(e){}return"unknown error"}function vn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Yn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Xn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function jn(e){if(!(vn(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Yn(e)||Xn(e)))return null;try{if(wr(e.byteLength))return e.byteLength}catch(e){}try{if(wr(e.length))return e.length}catch(e){}try{if(wr(e.size))return e.size}catch(e){}return null}function zn(e){if(null===e||"object"!=typeof e)return!1;if(e instanceof Error)return!0;if("function"==typeof Error.isError)return Error.isError(e);if(Symbol.toStringTag in e)return!1;let t=Object.prototype.toString.call(e);return"[object Error]"===t||"[object DOMException]"===t}function Gn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{results:"",binarys:[]};if(!$t(e)&&!hr(e))return n("invalid data, data is not an object or array");if(Nr(e)||Ar(e))return n("invalid data, data is an empty object or empty array");let s=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",u=[];try{let t=-1;i=JSON.stringify(e,function(e,r){if(Yn(r)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return u.push(r),e}if(Xn(r)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return u.push(r),e}if(vn(r)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return u.push(r),e}return er(r=function(e){if(!zn(e))return e;let t=e.toString;return t===Object.prototype.toString||"function"!=typeof t?Error.prototype.toString.call(e):t.call(e)}(r))&&91===r.charCodeAt(0)&&s.test(r)?"[BlazeForPreventEscape]"+r:r})}catch(e){return n(Zn(e))}return r?{state:"success",msg:{results:i,binarys:u}}:{results:i,binarys:u}}let Wn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]/;function Kn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:new Uint8Array;if(!er(e))return n("invalid str");if(!("function"==typeof e.isWellFormed?e.isWellFormed():!Wn.test(e)))return n("invalid str, contains lone surrogates");let s=null;try{s=(new TextEncoder).encode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fn(e,t,r=0,n=!0,s=52,i=8){return function(e,t,r,n,s,i){if(!wr(e))return null;if(!Yn(t))return null;if(!gr(r))return null;if(!Dr(n))return null;if(!gr(s))return null;if(!gr(i))return null;let u,o,l;e=yr(e);let a=8*i-s-1,c=(1<<a)-1,d=c>>1,D=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,M=n?i-1:0,w=n?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,u=c):(u=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-u))<1&&(u--,l*=2),(e+=u+d>=1?D/l:D*Math.pow(2,1-d))*l>=2&&(u++,l/=2),u+d>=c?(o=0,u=c):u+d>=1?(o=(e*l-1)*Math.pow(2,s),u+=d):(o=e*Math.pow(2,d-1)*Math.pow(2,s),u=0));s>=8;t[r+M]=255&o,M+=w,o/=256,s-=8);for(u=u<<s|o,a+=s;a>0;t[r+M]=255&u,M+=w,u/=256,a-=8);return t[r+M-w]|=128*y,null}(e,t,r,n,s,i)}function kn(e){let t=0;_r(e,e=>{t+=jn(e)});let r=new Uint8Array(t),n=0;return _r(e,e=>{let t=function(e){return vn(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);r.set(t,n),n+=t.length}),r}function Vn(e,t={}){let r=[],n=new Uint8Array,s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:new Uint8Array;if(!(u=e,hr(u)&&u.length>=1||_t(e)))return i("invalid data, data is not an effective object or a non-empty array");var u;let o=[],l=[];function a(e){o.push(jn(e)),l.push(e)}try{let t=Gn(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let s=t.msg;a(Kn(s.results)),_r(s.binarys,e=>{a(e)});let u=o,c=Kn(JSON.stringify(u)),d=new Uint8Array(8);Fn(jn(c),d),r.push(d),r.push(c),_r(l,e=>{r.push(e)}),n=kn(r)}catch(e){return i(Zn(e))}return s?{state:"success",msg:n}:n}function Hn(e,t=0,r=!0,n=52,s=8){return function(e,t,r,n,s){if(!Yn(e))return null;if(!gr(t))return null;if(!Dr(r))return null;if(!gr(n))return null;if(!gr(s))return null;let i,u,o=8*s-n-1,l=(1<<o)-1,a=l>>1,c=-7,d=r?0:s-1,D=r?1:-1,M=e[t+d];for(d+=D,i=M&(1<<-c)-1,M>>=-c,c+=o;c>0;i=256*i+e[t+d],d+=D,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=n;c>0;u=256*u+e[t+d],d+=D,c-=8);if(0===i)i=1-a;else{if(i===l)return u?NaN:1/0*(M?-1:1);u+=Math.pow(2,n),i-=a}return(M?-1:1)*u*Math.pow(2,i-n)}(e,t,r,n,s)}function Un(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!Yn(e))return n("invalid u8a");let s="";try{s=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Bn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!_t(e))return n("invalid data");let s=null,i=null;try{s=e.results,i=e.binarys}catch(e){return n(Zn(e))}if(!er(s))return n("invalid results");if(!hr(i))return n("invalid binarys");let u=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,o=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l=new Set,a={};try{a=JSON.parse(s,function(e,t){if(!er(t)||91!==t.charCodeAt(0))return t;let r=u.exec(t);if(null===r)return o.test(t)?t.slice(23):t;let n=Number(r[2]);if(n>=i.length)throw new Error(`binary index out of range[${n}], binarys.length[${i.length}]`);if(l.has(n))throw new Error(`binary index referenced more than once[${n}]`);return l.add(n),((e,t,r)=>{if("Uint16Array"===e&&!Xn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(r.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${r.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r:new Uint8Array(r);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!vn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}return r})(r[1],n,i[n])})}catch(e){return n(Zn(e))}return r?{state:"success",msg:a}:a}function Qn(e,t={}){let r={},n=ye(t,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Yn(e))return s("invalid u8a");try{let t=8,n=e.slice(0,t),i=e.slice(t,jn(e)),u=Hn(n),o=i.slice(0,u),l=i.slice(u,jn(i)),a=Un(o,{returnWithStateAndMsg:!0});if("error"===a.state)return s(`u8arr2str: ${a.msg}`);let c=a.msg,d=JSON.parse(c),D=function(e,t){if(!Array.isArray(e))return"not an array";for(let t=0;t<e.length;t++){let r=e[t];if(!Number.isInteger(r)||r<0)return"every item must be a non-negative finite integer"}let r=0;for(let n=0;n<e.length;n++)if(r+=e[n],r>t)return"total length exceeds the packet";return e.length>1&&25*(e.length-1)>e[0]?"too many chunks for the main block":""}(d,jn(l));if(""!==D)return s(`invalid pks, ${D}`);let M=function(e,t){let r=0,n=0,s=[];for(let i=0;i<t.length;i++){n=r+t[i];let u=e.slice(r,n);r=n,s.push(u)}return s}(l,d),w=Un(M.shift(),{returnWithStateAndMsg:!0});if("error"===w.state)return s(`u8arr2str: ${w.msg}`);let y=Bn({results:w.msg,binarys:M},{returnWithStateAndMsg:!0});if("error"===y.state)return s(`stru8arr2obj: ${y.msg}`);r=y.msg}catch(e){return s(Zn(e))}return n?{state:"success",msg:r}:r}function Rn(e){let t=!1;try{t=zn(e)}catch(e){}if(t)return e;if("string"==typeof e&&""!==e)return e;let r=Zn(e);return""!==r?r:"unknown error"}function On(e){return function(e,t={}){try{let r=ye(t,"fs");if(Qr(e,{fs:r}))return{success:"input folder is already exists: "+e};if(Br(e,{fs:r}))return{error:"input path already exists: "+e};r.mkdirSync(e,{recursive:!0})}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Jn(e){return function(e,t={}){try{let r=ye(t,"fs");if(!Br(e,{fs:r}))return{success:"file does not exist: "+e};if(!Or(e,{fs:r}))return{error:"input path is not a file: "+e};r.unlinkSync(e)}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Pn(e){return er(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let $n={permission:200,param:200,app:200,output:200,packet:200,internal:200},_n={main:{event:"execute",apiType:"main",api:"apiMain",authFrom:"header",statusOf:$n},ulctr:{event:"upload",apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:$n},slc:{event:"upload",apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:$n},dwgfn:{event:"download",apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{event:"download",apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{event:"download",apiType:"download",api:"apiDownload",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var qn=Ft("length"),es=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ts(e){return es.test(e)}var rs="\\ud800-\\udfff",ns="["+rs+"]",ss="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",is="\\ud83c[\\udffb-\\udfff]",us="[^"+rs+"]",os="(?:\\ud83c[\\udde6-\\uddff]){2}",ls="[\\ud800-\\udbff][\\udc00-\\udfff]",as="(?:"+ss+"|"+is+")"+"?",cs="[\\ufe0e\\ufe0f]?",ds=cs+as+("(?:\\u200d(?:"+[us,os,ls].join("|")+")"+cs+as+")*"),Ds="(?:"+[us+ss+"?",ss,os,ls,ns].join("|")+")",Ms=RegExp(is+"(?="+is+")|"+Ds+ds,"g");function ws(e){return ts(e)?function(e){for(var t=Ms.lastIndex=0;Ms.test(e);)++t;return t}(e):qn(e)}function ys(e){if(null==e)return 0;if(lt(e))return"string"==typeof(t=e)||!M(t)&&N(t)&&"[object String]"==b(t)?ws(e):e.length;var t,r=xt(e);return"[object Map]"==r||"[object Set]"==r?e.size:ot(e).length}var gs={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,r=36e5,n="millisecond",s="second",i="minute",u="hour",o="day",l="week",a="month",c="quarter",d="year",D="date",M="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}},I=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},m={s:I,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),s=r%60;return(t<=0?"+":"-")+I(n,2,"0")+":"+I(s,2,"0")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),s=t.clone().add(n,a),i=r-s<0,u=t.clone().add(n+(i?-1:1),a);return+(-(n+(r-s)/(i?s-u:u-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:a,y:d,w:l,d:o,D:D,h:u,m:i,s:s,ms:n,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},C="en",p={};p[C]=g;var f="$isDayjsObject",L=function(e){return e instanceof A||!(!e||!e[f])},h=function e(t,r,n){var s;if(!t)return C;if("string"==typeof t){var i=t.toLowerCase();p[i]&&(s=i),r&&(p[i]=r,s=i);var u=t.split("-");if(!s&&u.length>1)return e(u[0])}else{var o=t.name;p[o]=t,s=o}return!n&&s&&(C=s),s||!n&&C},b=function(e,t){if(L(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new A(r)},N=m;N.l=h,N.i=L,N.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var A=function(){function g(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var I=g.prototype;return I.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(w);if(n){var s=n[2]-1||0,i=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)}}return new Date(t)}(e),this.init()},I.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},I.$utils=function(){return N},I.isValid=function(){return!(this.$d.toString()===M)},I.isSame=function(e,t){var r=b(e);return this.startOf(t)<=r&&r<=this.endOf(t)},I.isAfter=function(e,t){return b(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<b(e)},I.$g=function(e,t,r){return N.u(e)?this[t]:this.set(r,e)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(e,t){var r=this,n=!!N.u(t)||t,c=N.p(e),M=function(e,t){var s=N.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return n?s:s.endOf(o)},w=function(e,t){return N.w(r.toDate()[e].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},y=this.$W,g=this.$M,I=this.$D,m="set"+(this.$u?"UTC":"");switch(c){case d:return n?M(1,0):M(31,11);case a:return n?M(1,g):M(0,g+1);case l:var C=this.$locale().weekStart||0,p=(y<C?y+7:y)-C;return M(n?I-p:I+(6-p),g);case o:case D:return w(m+"Hours",0);case u:return w(m+"Minutes",1);case i:return w(m+"Seconds",2);case s:return w(m+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var r,l=N.p(e),c="set"+(this.$u?"UTC":""),M=(r={},r[o]=c+"Date",r[D]=c+"Date",r[a]=c+"Month",r[d]=c+"FullYear",r[u]=c+"Hours",r[i]=c+"Minutes",r[s]=c+"Seconds",r[n]=c+"Milliseconds",r)[l],w=l===o?this.$D+(t-this.$W):t;if(l===a||l===d){var y=this.clone().set(D,1);y.$d[M](w),y.init(),this.$d=y.set(D,Math.min(this.$D,y.daysInMonth())).$d}else M&&this.$d[M](w);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[N.p(e)]()},I.add=function(n,c){var D,M=this;n=Number(n);var w=N.p(c),y=function(e){var t=b(M);return N.w(t.date(t.date()+Math.round(e*n)),M)};if(w===a)return this.set(a,this.$M+n);if(w===d)return this.set(d,this.$y+n);if(w===o)return y(1);if(w===l)return y(7);var g=(D={},D[i]=t,D[u]=r,D[s]=e,D)[w]||1,I=this.$d.getTime()+n*g;return N.w(I,this)},I.subtract=function(e,t){return this.add(-1*e,t)},I.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||M;var n=e||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),i=this.$H,u=this.$m,o=this.$M,l=r.weekdays,a=r.months,c=r.meridiem,d=function(e,r,s,i){return e&&(e[r]||e(t,n))||s[r].slice(0,i)},D=function(e){return N.s(i%12||12,e,"0")},w=c||function(e,t,r){var n=e<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(y,function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return o+1;case"MM":return N.s(o+1,2,"0");case"MMM":return d(r.monthsShort,o,a,3);case"MMMM":return d(a,o);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(r.weekdaysMin,t.$W,l,2);case"ddd":return d(r.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(i);case"HH":return N.s(i,2,"0");case"h":return D(1);case"hh":return D(2);case"a":return w(i,u,!0);case"A":return w(i,u,!1);case"m":return String(u);case"mm":return N.s(u,2,"0");case"s":return String(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(n,D,M){var w,y=this,g=N.p(D),I=b(n),m=(I.utcOffset()-this.utcOffset())*t,C=this-I,p=function(){return N.m(y,I)};switch(g){case d:w=p()/12;break;case a:w=p();break;case c:w=p()/3;break;case l:w=(C-m)/6048e5;break;case o:w=(C-m)/864e5;break;case u:w=C/r;break;case i:w=C/t;break;case s:w=C/e;break;default:w=C}return M?w:N.a(w)},I.daysInMonth=function(){return this.endOf(a).$D},I.$locale=function(){return p[this.$L]},I.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=h(e,t,!0);return n&&(r.$L=n),r},I.clone=function(){return N.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},g}(),x=A.prototype;return b.prototype=x,[["$ms",n],["$s",s],["$m",i],["$H",u],["$W",o],["$M",a],["$y",d],["$D",D]].forEach(function(e){x[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(e,t){return e.$i||(e(t,A,b),e.$i=!0),b},b.locale=h,b.isDayjs=L,b.unix=function(e){return b(1e3*e)},b.en=p[C],b.Ls=p,b.p={},b}()}(gs);var Is=nn(gs.exports);let ms="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Cs=ms.length;function ps(e=32){let t=[];e=Lr(e)?fr(e):32;for(let r=0;r<e;r++)t[r]=ms[0|Math.random()*Cs];return t.join("")}function fs(e,t,r){var n=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(r=r>s?s:r)<0&&(r+=s),s=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(s);++n<s;)i[n]=e[n+t];return i}function Ls(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:fs(e,t,r)}function hs(e){return e!=e}function bs(e,t,r){return t==t?function(e,t,r){for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,hs,r)}var Ns="\\ud800-\\udfff",As="["+Ns+"]",xs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Es="\\ud83c[\\udffb-\\udfff]",Ts="[^"+Ns+"]",Ss="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",vs="(?:"+xs+"|"+Es+")"+"?",Ys="[\\ufe0e\\ufe0f]?",Xs=Ys+vs+("(?:\\u200d(?:"+[Ts,Ss,Zs].join("|")+")"+Ys+vs+")*"),js="(?:"+[Ts+xs+"?",xs,Ss,Zs,As].join("|")+")",zs=RegExp(Es+"(?="+Es+")|"+js+Xs,"g");function Gs(e){return ts(e)?function(e){return e.match(zs)||[]}(e):function(e){return e.split("")}(e)}function Ws(e,t,r){if((e=de(e))&&(r||void 0===t))return nr(e);if(!e||!(t=ce(t)))return e;var n=Gs(e),s=Gs(t),i=function(e,t){for(var r=-1,n=e.length;++r<n&&bs(t,e[r],0)>-1;);return r}(n,s),u=function(e,t){for(var r=e.length;r--&&bs(t,e[r],0)>-1;);return r}(n,s)+1;return Ls(n,i,u).join("")}function Ks(e,t){if(!er(e))return[];if(!er(t))return[];let r=function(e,t){return er(e)&&er(t)?e.split(t):[]}(e,t);r=Ot(r,Ws);let n=[];return _r(r,function(e){er(e)&&n.push(e)}),n}const Fs=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function ks(e,t={}){let r=Hr();try{let n=ye(t,"fs"),s=ye(t,"chunkSize");if(Lr(s)||(s=67108864),s=fr(s),s>2**30&&(s=67108864),!Or(e,{fs:n}))return r.reject("fp is not a file"),r;let{create64:i}=await async function(){return function(e){const{exports:{mem:t,xxh32:r,xxh64:n,init32:s,update32:i,digest32:u,init64:o,update64:l,digest64:a}}=e;let c=new Uint8Array(t.buffer);function d(e,r){if(t.buffer.byteLength<e+r){const n=Math.ceil((e+r-t.buffer.byteLength)/65536);t.grow(n),c=new Uint8Array(t.buffer)}}function D(e,t,r,n,s,i){d(e);const u=new Uint8Array(e);return c.set(u),r(0,t),u.set(c.subarray(0,e)),{update(t){let r;return c.set(u),"string"==typeof t?(d(3*t.length,e),r=g.encodeInto(t,c.subarray(e)).written):(d(t.byteLength,e),c.set(t,e),r=t.byteLength),n(0,e,r),u.set(c.subarray(0,e)),this},digest:()=>(c.set(u),i(s(0)))}}function M(e){return e>>>0}const w=2n**64n-1n;function y(e){return e&w}const g=new TextEncoder;function I(e,t=0){return d(3*e.length,0),M(r(0,g.encodeInto(e,c).written,t))}function m(e,t=0n){return d(3*e.length,0),y(n(0,g.encodeInto(e,c).written,t))}return{h32:I,h32ToString:(e,t=0)=>I(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(d(e.byteLength,0),c.set(e),M(r(0,e.byteLength,t))),create32:(e=0)=>D(48,e,s,i,u,M),h64:m,h64ToString:(e,t=0n)=>m(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(d(e.byteLength,0),c.set(e),y(n(0,e.byteLength,t))),create64:(e=0n)=>D(88,e,o,l,a,y)}}((await WebAssembly.instantiate(Fs)).instance)}(),u=i(),o=n.createReadStream(e,{highWaterMark:s}),l=e=>{r.reject(Zn(e));try{o.destroy()}catch(e){}};o.on("data",e=>{try{u.update(e)}catch(e){l(e)}}),o.on("end",()=>{try{let e=u.digest().toString(16).padStart(16,"0");r.resolve(e)}catch(e){l(e)}}),o.on("error",e=>{r.reject(Zn(e))})}catch(e){r.reject(Zn(e))}return r}var Vs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LG89Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PW98fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUsZj1jLmhhc093blByb3BlcnR5LHM9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIixnPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDpnJiZnIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1mLmNhbGwodCxsKSxlPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbbF09ZTpkZWxldGUgdFtsXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZ2KHQpPT1kfXZhciBqPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLFM9L15cdyokLztmdW5jdGlvbiBtKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB3PSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLHg9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyICQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLFA9T2JqZWN0LnByb3RvdHlwZSxGPXoudG9TdHJpbmcsTD1QLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitGLmNhbGwoTCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighbSh0KXx8KHI9dCx4JiZ4IGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIW0odCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09RXx8cj09d3x8cj09Tn0odCk/VDpJO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiAkLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIE0oZSk/ZTp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gQy5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PXJbdF06Ry5jYWxsKHIsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VSYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIFgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19WC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxYLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXEocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9cShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LFgucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxYLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgQj1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEoodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoQnx8WCksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUgodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoUS5DYWNoZXx8SiksZX1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csZXQ9KFY9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOmV8fHQpfSkpLHJ9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9ZXQ7dmFyIG90PTEvMCxpdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1pdD9pdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LW90PyItMCI6cn1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBmdCh0LHIpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihuKHQpKXJldHVybiExO3ZhciBlPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPWUmJiJzeW1ib2wiIT1lJiYiYm9vbGVhbiIhPWUmJm51bGwhPXQmJiFfKHQpKXx8Uy50ZXN0KHQpfHwhai50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06bnQoY3QodCkpfXZhciBzdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zdD8iLTAiOnJ9ZnVuY3Rpb24gaHQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1mdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbbHQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIHB0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LHI9e30pe2xldCBlPWh0KHIsImZzIik7cmV0dXJuISFwdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGd0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IHI9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihyKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhYnQodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIWR0KHQpfHwwIT09dC5sZW5ndGgpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISF2dCh0KSYmMD09PXQubGVuZ3RofSh0KXx8ISFfdCh0KSkpKSl9ZnVuY3Rpb24gU3QodCl7cmV0dXJuISEoZHQodCkmJnQubGVuZ3RoPjApfXZhciBtdD0vXHMvO3ZhciB3dD0vXlxzKy87ZnVuY3Rpb24gT3QodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJm10LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2Uod3QsIiIpOnR9dmFyIEV0PU5hTixOdD0vXlstK10weFswLTlhLWZdKyQvaSxBdD0vXjBiWzAxXSskL2ksUnQ9L14wb1swLTddKyQvaSx4dD1wYXJzZUludDtmdW5jdGlvbiAkdCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoXyh0KSlyZXR1cm4gRXQ7aWYobSh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9bShyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9T3QodCk7dmFyIGU9QXQudGVzdCh0KTtyZXR1cm4gZXx8UnQudGVzdCh0KT94dCh0LnNsaWNlKDIpLGU/Mjo4KTpOdC50ZXN0KHQpP0V0Oit0fXZhciBJdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIFB0KHQpe3JldHVybiB0Pyh0PSR0KHQpKT09PUl0fHx0PT09LUl0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEZ0KHQpe3ZhciByPVB0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH12YXIgTHQ9IltvYmplY3QgQm9vbGVhbl0iO2Z1bmN0aW9uIFR0KHQpe3JldHVybiEwPT09KHI9dCl8fCExPT09cnx8YihyKSYmdihyKT09THQ7dmFyIHJ9ZnVuY3Rpb24gTXQodCl7bGV0IHI9ITE7aWYoU3QodCkpe2lmKCIiPT09dC50cmltKCkpcmV0dXJuITE7cj0haXNOYU4oTnVtYmVyKHQpKX1lbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoX3QodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBrdCh0KXtpZighTXQodCkpcmV0dXJuIDA7cmV0dXJuIFB0KHQpfWZ1bmN0aW9uIFV0KHQscj17fSl7bGV0IGU9aHQociwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gVHQoZSl8fChlPSExKSwhIU10KHQpJiYodD1rdCh0KSxlP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09RnQobikpO3ZhciBufXZhciBDdD11LmlzRmluaXRlLEd0PU1hdGgubWluO3ZhciBXdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9JHQodCksKGU9bnVsbD09ZT8wOkd0KEZ0KGUpLDI5MikpJiZDdCh0KSl7dmFyIG49KGN0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShjdChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxxdD1XdDtmdW5jdGlvbiBEdCh0LHI9e30pe2xldCBlPWh0KHIsInVzZUNsYW1wU2FmZSIsbnVsbCk7VHQoZSl8fChlPSExKTtsZXQgbj1odChyLCJ1c2VMaW1pdFNhZmUiLG51bGwpO1R0KG4pfHwobj0hMSk7bGV0IG89aHQociwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTtUdChvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFNdCh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWt0KHQpLGE9cXQodCksZSYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gWHQodCxyPXt9KXtpZighVXQodCxyKSlyZXR1cm4hMTtyZXR1cm4gRHQodCk+PTB9ZnVuY3Rpb24gQnQodCxyKXtpZighU3QodCkpcmV0dXJuIiI7aWYoIVh0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1EdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gSHQodCxyKXtyZXR1cm4gU3QodCkmJlh0KHIpPzA9PT0ocj1EdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBTdCh0KSYmWHQocik/MD09PShyPUR0KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIEp0KHQpe2lmKCFTdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUJ0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4iOiI9PT1CdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEt0KHQpe2lmKCFTdCh0KSlyZXR1cm4iIjtsZXQgcj1KdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFF0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKTtpZighcHQodCx7ZnM6ZX0pKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIFZ0KHQpe3RyeXtyZXR1cm4gU3RyaW5nKHQpfWNhdGNoKHQpe310cnl7bGV0IHI9dC5tZXNzYWdlO2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yKXJldHVybiByfWNhdGNoKHQpe31yZXR1cm4idW5rbm93biBlcnJvciJ9ZnVuY3Rpb24gWXQodCl7bGV0IHI9ITE7dHJ5e3I9ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEVycm9yLmlzRXJyb3IpcmV0dXJuIEVycm9yLmlzRXJyb3IodCk7aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHQpcmV0dXJuITE7bGV0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1yfHwiW29iamVjdCBET01FeGNlcHRpb25dIj09PXJ9KHQpfWNhdGNoKHQpe31pZihyKXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIiIhPT10KXJldHVybiB0O2xldCBlPVZ0KHQpO3JldHVybiIiIT09ZT9lOiJ1bmtub3duIGVycm9yIn1mdW5jdGlvbiBadCh0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKCFwdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIXl0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB0cih0LHIsbj17fSl7bGV0IG89IiI7aWYoIXZ0KGk9dCl8fDA9PT1pLmxlbmd0aHx8MT09PWkubGVuZ3RoJiZqdChpWzBdKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgaTtsZXQgdT1mdW5jdGlvbih0KXtpZighU3QodCkpcmV0dXJuIiI7bGV0IHI9SnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1LdCh0PXIucGF0aCk7aWYoIVN0KGUpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KHIpLGE9Z3QoKTthLmNhdGNoKCgoKT0+e30pKTtsZXQgYz1udWxsLGY9bnVsbCxzPSExLGw9Z3QoKTtsLmNhdGNoKCgoKT0+e30pKTtsZXQgaD10PT57bGV0IHI7dHJ5e3I9dC5tZXNzYWdlfWNhdGNoKHQpe31yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHI/cjpWdCh0KX07dHJ5e2xldCBpPWh0KG4sImZzIikscD1odChuLCJmbk91dCIsIiIpO1N0KHApfHwocD1LdChyKSksUXQodSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKFF0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX19KHUse2ZzOml9KSxjPWkuY3JlYXRlV3JpdGVTdHJlYW0ociksYy5vbigiZXJyb3IiLCh0PT57cz0hMCxmPXQsbz1oKHQpLGwucmVqZWN0KHQpLGEucmVqZWN0KG8pfSkpLGMub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOnAscGF0aDpyfTthLnJlc29sdmUodCl9KSk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHMpdGhyb3cgZjtsZXQgbj10W3JdO2lmKCF5dChuLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7bn1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgbz1hc3luYygpPT57bGV0IHQ9aS5jcmVhdGVSZWFkU3RyZWFtKG4pLHI9bnVsbDtmb3IgYXdhaXQobGV0IG4gb2YgdCl7aWYocyl0aHJvdyBmO2xldCB0PSExLG89bmV3IFByb21pc2UoKChyLGUpPT57dD0hYy53cml0ZShuLCh0PT57dD9lKHQpOnIoKX0pKX0pKTtvLmNhdGNoKCgoKT0+e30pKSxyPW8sdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtlLm9uY2UoYywiZHJhaW4iKSxsXSl9aWYobnVsbCE9PXImJmF3YWl0IHIscyl0aHJvdyBmO1p0KG4se2ZzOml9KX07YXdhaXQgbygpfWMuZW5kKCl9Y2F0Y2godCl7bz1oKHQpO3RyeXtjLmRlc3Ryb3koKX1jYXRjaCh0KXt9YS5yZWplY3Qobyl9cmV0dXJuIGF9Y29uc3QgcnI9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gZXIodCxyPXt9KXtsZXQgZT1ndCgpO3RyeXtsZXQgbj1odChyLCJmcyIpLG89aHQociwiY2h1bmtTaXplIik7aWYoZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4hIVV0KHQscikmJkR0KHQpPjB9KG8pfHwobz02NzEwODg2NCksbz1EdChvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXl0KHQse2ZzOm59KSlyZXR1cm4gZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxlO2xldHtjcmVhdGU2NDppfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06cix4eGgzMjplLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpO2Z1bmN0aW9uIGwodCxlKXtpZihyLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrZSl7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrZS1yLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ci5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpfX1mdW5jdGlvbiBoKHQscixlLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLGUoMCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUocil7bGV0IGU7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2Ygcj8obCgzKnIubGVuZ3RoLHQpLGU9di5lbmNvZGVJbnRvKHIscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoci5ieXRlTGVuZ3RoLHQpLHMuc2V0KHIsdCksZT1yLmJ5dGVMZW5ndGgpLG4oMCx0LGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiBnKHQpe3JldHVybiB0Jnl9Y29uc3Qgdj1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LHI9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKGUoMCx2LmVuY29kZUludG8odCxzKS53cml0dGVuLHIpKX1mdW5jdGlvbiBqKHQscj1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGcobigwLHYuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4scikpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxyPWIpPT5fKHQscikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQscj1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAoZSgwLHQuYnl0ZUxlbmd0aCxyKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsbyxpLHUscCksaDY0OmosaDY0VG9TdHJpbmc6KHQscj1kKT0+aih0LHIpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxyPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksZyhuKDAsdC5ieXRlTGVuZ3RoLHIpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMsZixnKX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShycikpLmluc3RhbmNlKX0oKSx1PWkoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntlLnJlamVjdChWdCh0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e3UudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ZS5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e2UucmVqZWN0KFZ0KHQpKX0pKX1jYXRjaCh0KXtlLnJlamVjdChWdCh0KSl9cmV0dXJuIGV9bW9kdWxlLmV4cG9ydHM9YXN5bmMoZSxuLG8saSk9PntsZXQgdT1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LnJlc29sdmUobyxgJHtlfV8ke2l9YCk7aWYoIXl0KG4se2ZzOnJ9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO3UucHVzaChuKX1sZXQgYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7dHJ5e3JldHVybiB0cih0LGUse2ZzOnIsLi4ubn0pfWNhdGNoKHQpe2xldCByO3RyeXtyPXQubWVzc2FnZX1jYXRjaCh0KXt9cmV0dXJuIFByb21pc2UucmVqZWN0KCJzdHJpbmciPT10eXBlb2Ygcj9yOlZ0KHQpKX19KHUsaSk7cmV0dXJuey4uLmEsaGFzaDphd2FpdCBmdW5jdGlvbih0LGU9e30pe3RyeXtyZXR1cm4gZXIodCx7ZnM6ciwuLi5lfSl9Y2F0Y2godCl7cmV0dXJuIFByb21pc2UucmVqZWN0KFZ0KHQpKX19KGkpfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(Vs);var Hs=nn(Vs.exports);let Us=new Set,Bs=new Map,Qs=(t,r,n="")=>{let s=e.resolve(r,t);return{fp:s,fpm:`${s}.merging`,fpd:`${s}.done`,fpe:`${s}.error`,fpr:er(n)?`${s}.q${n}.ro`:""}},Rs=e=>{let t=Jn(e);if(Jr(e))throw new Error(`can not remove ${e}: ${fn(ye(t,"error"))}`)},Os=async(e,r)=>{Us.add(r.fp);try{let n=await function(e,r={}){try{return ks(e,{fs:t,...r})}catch(e){return Promise.reject(Zn(e))}}(r.fp);if(n===e)return t.writeFileSync(r.fpd,"","utf8"),{state:"done"};let s=`merged file[${r.fp}] is incomplete: hash[${n}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(r.fpe,s,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}return{state:"mismatch",reason:s}}catch(e){return{state:"error",reason:`verify merged file[${r.fp}] error: ${fn(e)}`}}finally{Us.delete(r.fp)}},Js=async(e,r,n)=>{let s=`${function(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYYMMDDHHmmss")}()}|${ps(6)}|${e}`,i=Qs(e,n);if(Us.has(i.fp))return s;let u=Jr(i.fpe),o=Jr(i.fp);if(!u&&o){let t=await Os(e,i);if("done"===t.state)return s;if("error"===t.state)throw new Error(t.reason)}return Rs(i.fpd),Rs(i.fpe),Us.add(i.fp),setTimeout(()=>{Hs(e,r,n,i.fpm).then(r=>{let n=ye(r,"hash","");if(n!==e)throw new Error(`merged file hash[${n}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),Jn(i.fpm);let r=fn(e);try{t.writeFileSync(i.fpe,r,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{Us.delete(i.fp)})},1),s},Ps=async(e,r,n={})=>{let s=ye(n,"funConsume"),i=ye(n,"funLog");Gr(i)||(i=e=>{console.log(e)});let u=Ks(e,"|"),o=ye(u,0,""),l=ye(u,1,""),a=ye(u,2,"");if(3!==ys(u)||!Pn(o)||!Pn(l)||!Pn(a)){let t=`invalid queueId[${fn(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Qs(a,r,`${o}${l}`);if(Jr(c.fpr)){let e=((e,r)=>{try{let n=Qn(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r(`stored result ${e.fpr} is corrupted, treat as not stored: ${ye(n,"msg","unknown error")}`),{ok:!1};let s=n.msg;return $t(s)&&dn(s,"ro")?{ok:!0,ro:s.ro}:(r(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return r(`can not read stored result ${e.fpr}: ${fn(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Jr(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(Us.has(c.fp))return{state:"merging",msg:"",path:c.fp};let d=Jr(c.fp),D=Jr(c.fpd);if(d&&!D){let e=await Os(a,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};D=!0}if(d&&D){if(!Gr(s))return{state:"success",msg:"",path:c.fp};let e=await((e,r,n)=>{let s=e.fpr,i=Bs.get(s);return i||(i=Promise.resolve().then(()=>r(e.fp)).then(r=>{r=void 0===r?null:r;try{let n=Vn({ro:r},{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r;t.writeFileSync(e.fpr,Buffer.from(n.msg));let s=Qn(n.msg,{returnWithStateAndMsg:!0});if("success"===ye(s,"state")&&$t(s.msg)&&dn(s.msg,"ro"))return s.msg.ro}catch(t){n(`can not store consumed result to ${e.fpr}: ${fn(t)}`)}return r}).finally(()=>{Bs.delete(s)}),Bs.set(s,i),i)})(c,s,i);return{state:"success",msg:e,path:c.fp,from:"consumed"}}return!d&&D?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${a}] (never pushed, or artifacts removed)`,path:c.fp}};var $s={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLGg9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgcD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LGgpLHI9dFtoXTt0cnl7dFtoXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtoXT1yOmRlbGV0ZSB0W2hdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gcC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sTj05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/TjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGh0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHB0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PXB0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6aHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4gTnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBoZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxoZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LGhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gcGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1wZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBoZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBoZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxoPSEwLHA9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtoPSExO2JyZWFrfWlmKHApe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhcC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gcC5wdXNoKGUpO3ZhciBpfSkpKXtoPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtoPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSksaH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLE5lPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxoPWM9PWY7aWYoaCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKGgmJiFzKXJldHVybiB1fHwodT1uZXcgcGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBOZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgcD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8dil7dmFyIHk9cD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBwZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIWgmJih1fHwodT1uZXcgcGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLGg9dS5nZXQoZSk7aWYobCYmaClyZXR1cm4gbD09ZSYmaD09dDt2YXIgcD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7cD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihwJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KHA9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBwZTtpZihuKXZhciBoPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09aD9LZShzLGYsUWV8WWUsbixsKTpoKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxoZSkscn1jci5DYWNoZT1oZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxocj1scixwcj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpocihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gTnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKE8odCk/cmU6TnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISEoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpJiZ0Lmxlbmd0aD4wKX1mdW5jdGlvbiBZcih0LGUpe2lmKCFRcih0KSlyZXR1cm5bXTtpZighUXIoZSkpcmV0dXJuW107bGV0IHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUXIodCkmJlFyKGUpP3Quc3BsaXQoZSk6W119KHQsZSk7cj1GcihyLEtyKTtsZXQgbj1bXTtyZXR1cm4gaXQociwoZnVuY3Rpb24odCl7UXIodCkmJm4ucHVzaCh0KX0pKSxufXZhciBacj1OYU4sdG49L15bLStdMHhbMC05YS1mXSskL2ksZW49L14wYlswMV0rJC9pLHJuPS9eMG9bMC03XSskL2ksbm49cGFyc2VJbnQ7ZnVuY3Rpb24gb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG5yKHQpKXJldHVybiBacjtpZihKKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1KKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kcih0KTt2YXIgcj1lbi50ZXN0KHQpO3JldHVybiByfHxybi50ZXN0KHQpP25uKHQuc2xpY2UoMikscj8yOjgpOnRuLnRlc3QodCk/WnI6K3R9dmFyIHVuPTEvMCxhbj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQ/KHQ9b24odCkpPT09dW58fHQ9PT0tdW4/KHQ8MD8tMToxKSphbjp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gZm4odCl7dmFyIGU9Y24odCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciBzbj0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gbG4odCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxnKGUpJiZkKGUpPT1zbjt2YXIgZX1mdW5jdGlvbiBobih0KXtsZXQgZT0hMTtpZihRcih0KSl7aWYoIiI9PT10LnRyaW0oKSlyZXR1cm4hMTtlPSFpc05hTihOdW1iZXIodCkpfWVsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtpZih0IT10KXJldHVybiEwO2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpdHJ5e2xldCBlPU51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHQpO3JldHVybiBOdW1iZXIuaXNOYU4oZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITF9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gcG4odCl7aWYoIWhuKHQpKXJldHVybiAwO3JldHVybiBjbih0KX1mdW5jdGlvbiB2bih0LGU9e30pe2xldCByPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIGxuKHIpfHwocj0hMSksISFobih0KSYmKHQ9cG4odCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWZuKG4pKTt2YXIgbn12YXIgeW49YS5pc0Zpbml0ZSxibj1NYXRoLm1pbjt2YXIgZG49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PW9uKHQpLChyPW51bGw9PXI/MDpibihmbihyKSwyOTIpKSYmeW4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZ249ZG47ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO2xuKHIpfHwocj0hMSk7bGV0IG49d3IoZSwidXNlTGltaXRTYWZlIixudWxsKTtsbihuKXx8KG49ITEpO2xldCBvPXdyKGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7bG4obyl8fChvPSExKTtsZXQgdT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsaT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighaG4odCkpcmV0dXJuIHUoMCk7bGV0IGE9bnVsbDt0cnl7dD1wbih0KSxhPWduKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gaSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT9pKGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLHUoYSkpfWZ1bmN0aW9uIGpuKHQsZT17fSl7aWYoIXZuKHQsZSkpcmV0dXJuITE7cmV0dXJuIF9uKHQpPj0wfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFtbih0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIFNuKHQpe3JldHVybiB3bih0LHtmczplfSl9ZnVuY3Rpb24gT24odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBBbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT4wfWZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighbW4odCx7ZnM6cn0pKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEVuKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmQW4oZSkmJihlPV9uKGUpKTwxJiYoZT0xKSxmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiB6bihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShPKGk9dSk/VGU6T24pKGkseHIoYSkpLHU9RnIodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiBObih0KXt0cnl7cmV0dXJuIFN0cmluZyh0KX1jYXRjaCh0KXt9dHJ5e2xldCBlPXQubWVzc2FnZTtpZigic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZSlyZXR1cm4gZX1jYXRjaCh0KXt9cmV0dXJuInVua25vd24gZXJyb3IifWFzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0IG49d3IoZSwiZnMiKSxvPXdyKGUsImNodW5rU2l6ZSIpO2lmKEFuKG8pfHwobz02NzEwODg2NCksbz1fbihvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXduKHQse2ZzOm59KSlyZXR1cm4gci5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxyO2xldHtjcmVhdGU2NDp1fT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5oKDQ4LHQsbyx1LGkscCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PmgoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSxpPXUoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntyLnJlamVjdChObih0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e2kudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PWkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ci5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e3IucmVqZWN0KE5uKHQpKX0pKX1jYXRjaCh0KXtyLnJlamVjdChObih0KSl9cmV0dXJuIHJ9bW9kdWxlLmV4cG9ydHM9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LnJlc29sdmUodSxvKSxhPSExO2lmKGE9U24oaSksIWpuKHIse3VzZUxpbWl0U2FmZTohMH0pKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fXI9X24ocik7bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7dHJ5e3JldHVybiBGbih0LHtmczplLC4uLnJ9KX1jYXRjaCh0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoTm4odCkpfX0oaSkudGhlbigodD0+e2Y9bz09PXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUocGF0aEZpbGUpIixpLFNuKGkpKSxjb25zb2xlLmxvZyh0KSxmPSExfSkpO2xldCBzPVtdO2lmKCFmKXtpdChmdW5jdGlvbihyLG49MSl7cmV0dXJuIEVuKHIsbix7cGF0aDp0LGZzOmV9KX0odSksKHQ9PntsZXQgcj10Lm5hbWUuc3RhcnRzV2l0aChgJHtvfV9gKSx1PSExO3RyeXtsZXQgcj1lLnN0YXRTeW5jKHQucGF0aCk7dT1yLnNpemU+MCYmci5zaXplPD1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZigham4ocikpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coYHNraXAgZmlsZVske3QubmFtZX1dOiBjYW4gbm90IHBhcnNlIGNodW5rIGluZGV4YCk7cj1fbihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCiAgICB9KS5jYWxsKG1kVXNlci5leHBvcnRzLCBtZFVzZXIsIG1kVXNlci5leHBvcnRzKQoKICAgIC8v6aCQ6Kit5Yyv5Ye6OiByb2xsdXDku6VfX2VzTW9kdWxl5qiZ56S66aCQ6Kit6IiH5YW35ZCN5Lim5a2Y6ICFLCDlj5blhbZkZWZhdWx0OyDlkKbliYdtb2R1bGUuZXhwb3J0c+WNs+mgkOioreWMr+WHuijlj6rmnInlhbflkI3ljK/lh7rogIXngrrlkb3lkI3nqbrplpPnianku7YpCiAgICByZXR1cm4gKG1kVXNlci5leHBvcnRzICYmIG1kVXNlci5leHBvcnRzLl9fZXNNb2R1bGUgJiYgJ2RlZmF1bHQnIGluIG1kVXNlci5leHBvcnRzKSA/IG1kVXNlci5leHBvcnRzLmRlZmF1bHQgOiBtZFVzZXIuZXhwb3J0cwoKfSkoKSkKCg==",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}($s);var _s=nn($s.exports),qs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gTih0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBFLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oRT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrRToiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihOKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsTnQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1OdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gTnR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFOKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hIShmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJnQubGVuZ3RoPjApfWZ1bmN0aW9uIGRlKHQpe2xldCBlPSExO2lmKGJlKHQpKXtpZigiIj09PXQudHJpbSgpKXJldHVybiExO2U9IWlzTmFOKE51bWJlcih0KSl9ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IGU9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihlKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBnZSh0KXtpZighZGUodCkpcmV0dXJuIDA7cmV0dXJuIHBlKHQpfWZ1bmN0aW9uIF9lKHQsZT17fSl7bGV0IHI9aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gdmUocil8fChyPSExKSwhIWRlKHQpJiYodD1nZSh0KSxyP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09aGUobikpO3ZhciBufXZhciBqZT1pLmlzRmluaXRlLFNlPU1hdGgubWluO3ZhciB3ZT1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9ZmUodCksKHI9bnVsbD09cj8wOlNlKGhlKHIpLDI5MikpJiZqZSh0KSl7dmFyIG49KGZ0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShmdChlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxtZT13ZTtmdW5jdGlvbiBPZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUNsYW1wU2FmZSIsbnVsbCk7dmUocil8fChyPSExKTtsZXQgbj1odChlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3ZlKG4pfHwobj0hMSk7bGV0IG89aHQoZSwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTt2ZShvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFkZSh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWdlKHQpLGE9bWUodCksciYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gQWUodCxlPXt9KXtpZighX2UodCxlKSlyZXR1cm4hMTtyZXR1cm4gT2UodCk+PTB9Y29uc3QgTmU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gRWUodCxlPXt9KXtpZighZnVuY3Rpb24odCl7bGV0IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO2lmKCJbb2JqZWN0IEJsb2JdIj09PWV8fCJbb2JqZWN0IEZpbGVdIj09PWUpcmV0dXJuITA7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfSh0KSYmKHI9dCwiW29iamVjdCBGaWxlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPWh0KGUsImNodW5rU2l6ZSIpO2RlKG4pfHwobj02NzEwODg2NCksbj1nZShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTmUpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1tb2R1bGUuZXhwb3J0cz1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgRWUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(qs);var ei=nn(qs.exports);function ti(e,t){try{return{ok:!0,value:t()}}catch(t){let r=fn(t);return{ok:!1,stage:e,cause:er(r)?r:"unknown error"}}}function ri(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ni(e,t,r,n={}){let i=!0===ye(n,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let u=ti("identify streamRead",()=>e instanceof s.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(u.value.isReadable){if(u.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(u.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let n=ti("setup pipeline",()=>{let n=0,i=!1,u=new s.Transform({transform(e,r,s){if(n+=e.length,n>t)return i=!0,void s(new Error(`streamRead sent more than fileSize[${t}] bytes`));s(null,e)},flush(e){if(n!==t)return i=!0,void e(new Error(`streamRead ended at ${n} bytes but fileSize is ${t}`));e()}});return s.pipeline(e,u,e=>{e&&i&&r(fn(e))}),u});return n.ok?{source:n.value}:{error:"invalid streamRead",reason:`${n.stage} failed: ${n.cause}`}}let o=ti("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||Dr(e)||"object"==typeof e&&!1===function(e){try{return Gr(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:fn(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(dn(o.value,"unserializable")){let e=o.value.unserializable;return{error:"invalid streamRead",reason:er(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===o.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=o.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let si=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function ii(e,t){let r=ti(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Fr(e,{useLimitSafe:!0})}(t)?{ok:!0,value:fr(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!er(t))return{ok:!1};let r=Ln(t);return er(r)?"fileType"===e?ri("Content-Type",r)?{ok:!0,value:r}:{ok:!1}:{ok:!0,value:si(r)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return r.ok?{ok:r.value.ok,value:r.value.value,cause:""}:{ok:!1,value:void 0,cause:r.cause}}function ui(e){try{e&&Gr(e.pipe)&&Gr(e.destroy)&&e.destroy()}catch(e){}}function oi(e){let t=typeof e;return void 0===e||"function"===t||"symbol"===t?null:e}function li(e,t,r={}){let n=new s.Readable;n._read=()=>{},n.push(t),n.push(null);let i=ye(r,"returnType",""),u=ye(r,"returnMsg",""),o=e.response(n).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",n.readableLength);return er(i)&&o.header("Return-Type",i),er(u)&&ri("Return-Msg",u)&&o.header("Return-Msg",u),o}function ai(e,t){return 0===e.listenerCount(t)?`no listener for event[${t}]`:""}function ci(i={}){let u={useLimitSafe:!0},o=!!ye(i,"serverHapi"),l=[],a=ye(i,"port");(!Lr(a,u)||fr(a)>65535)&&(a=8080),a=fr(a);let c=ye(i,"useInert");null==c?c=!0:Dr(c)||(o||l.push("invalid useInert: must be a boolean, static files are not served"),c=!1);let d=ye(i,"pathStaticFiles");null==d?d="dist":er(d)||(c&&!o&&l.push("invalid pathStaticFiles: must be a non-empty string, static files are not served"),c=!1,d="dist");let D=ye(i,"pathUploadTemp");er(D)||(D="./uploadTemp");let M="";if(!Rr(D)){let e=On(D);dn(e,"error")&&(M=fn(e.error))}let w=ye(i,"apiName");er(w)||(w="api");let y=ye(i,"tokenType");er(y)||(y="Bearer");let g=ye(i,"sizeSlice");Lr(g,u)||(g=1048576),g=fr(g);let I=ye(i,"sizeMsg");Lr(I,u)||(I=104857600),I=fr(I);let m=ye(i,"verifyConn");if(null==m)m=()=>!0;else{let e=!1;try{e=Gr(m)}catch(e){}e||(l.push("invalid verifyConn: must be a function (sync or async), all API requests will be denied"),m=()=>!1)}let C="invalid corsOrigins: must be an array of origin strings ('*' must be the only element if present), or false to disable; CORS is disabled",p=ye(i,"corsOrigins"),f=null!=p;f?o?l.push("corsOrigins has no effect with serverHapi: the cross-origin policy is decided by the external server"):!1===p||""===p?p=null:er(p)?p=[p]:hr(p)?(p=p.filter(e=>""!==e),0===p.length&&(p=null)):(l.push(C),p=null):p=["*"];let L=ye(i,"delayForSlice","");(!Fr(L,u)||fr(L)>2147483647)&&(L=100),L=fr(L);let h=null;if(o)h=i.serverHapi;else{let e=e=>{let t=!1;return null!==e&&(t={origin:e,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}),{port:a,routes:{timeout:{server:!1,socket:!1},cors:t}}};try{h=r.server(e(p))}catch(t){if(!f||null===p)throw t;console.log("invalid corsOrigins",t),l.push(C),p=null,h=r.server(e(p))}}let b=ln(),N={tag:"w-converhp"},A=(e,...t)=>an(b,e,t,{...N,funSettle:()=>{let r=t[t.length-1];Wr(r)&&r.reject(`listener of event[${e}] error`)},funEmit:E}),x=(e,...t)=>Mn(b,e,t,{...N,funEmit:E});function E(e,...t){if("error"===e&&_t(t[0])&&"listener"===t[0].fun){let e=ye(t[0],"name",""),r=ye(t[0],"msg");return console.log(`listener of event[${e}] error`,r),b.emit("error",`listener of event[${e}] error: ${fn(r)}`)}return b.emit(e,...t)}er(M)&&x("error",`create pathUploadTemp[${D}] error: ${M}`);for(let e of l)x("error",e);let T=(e,t,r)=>{let n=Hr(),s=Hr();return s.then(t=>{void 0===t&&(t=null);let s=typeof t;if("function"===s||"symbol"===s)return n.reject("output can not be serialized"),void A("error",`event[${e}] output can not be serialized: output is a ${s}`);n.resolve(Gr(r)?r(t):t)}).catch(e=>{n.reject(e)}),function(e,t,r,n,s,i){let u=ai(e,r);er(u)?(s.reject(u),i(u)):t(r,...n,s)}(b,A,e,t,s,e=>{A("error",e)}),n};async function S(e){return T("upload",[e])}async function Z(e){return T("download",[e])}let v=`${Ln(y)} `,Y=(e,t)=>{let r=ye(e,"headers");r=_t(r)?r:"";let n=ye(e,"query");n=_t(n)?n:"";let s="",i="";return"query"===t.authFrom?(i=ye(n,"token",""),i=er(i)?i:"",er(i)&&(s=`${y} ${i}`)):(s=ye(r,"authorization",""),s=er(s)?s:"",i=s.startsWith(v)?s.slice(v.length):""),{headers:r,query:n,authorization:s,token:i}},X=(e,t)=>{let r=(r,n,s)=>function(e,t,r={}){er(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let n=ye(r,"retryable",!0),s={error:t};!1===n&&(s.retryable=!1);let i=li(e,Vn(s),{returnType:"error",returnMsg:t});return!1===n&&i.header("Return-Retryable","false"),i}(e,n,s).code(t.statusOf[r]);return{permission:()=>r("permission","permission denied"),param:e=>r("param",e,{retryable:!1}),app:e=>r("app",e),output:e=>r("output",e),packet:e=>r("packet",e),internal:e=>r("internal",e)}},j=async(e,t,r,n)=>!0!==await async function(e){let t=!1;try{t=m(e),Wr(t)&&(t=await t)}catch(r){t=!1,console.log(`verifyConn error for apiType[${ye(e,"apiType","")}]`,r),A("error",`verifyConn error for apiType[${ye(e,"apiType","")}]: ${fn(r)}`)}return!0===t}({apiType:r.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?n.permission():(A("handler",{api:r.api,headers:t.headers,query:t.query}),null),z=(e,t)=>{let r=ai(b,e.event);if(!er(r))return null;let n=t.app(r);return A("error",r),n},G=(e,t,r,n)=>{let s=function(e,t){let r={};for(let n of t){let t=ti(`read field[${n}]`,()=>ye(e,n));if(!t.ok)return{ok:!1,field:n,cause:t.cause,fields:r};r[n]=t.value}return{ok:!0,fields:r}}(e,r.fields.map(e=>e.name));if(!s.ok)return ui(ye(s.fields,"streamRead")),A("error",`download fileId[${t}] output error: can not read field[${s.field}]: ${s.cause}`),{ok:!1,res:n.output("invalid streamRead")};let i={streamRead:s.fields.streamRead};for(let e of r.fields){if("streamRead"===e.name)continue;let r=ii(e.name,s.fields[e.name]);if(r.ok){i[e.name]=r.value;continue}if(!0===e.optional&&!er(r.cause)){i[e.name]="";continue}ui(i.streamRead);let u="fileSize"===e.name?`[${fn(s.fields.fileSize)}]`:"";return A("error",`download fileId[${t}] output error: invalid ${e.name}${u}${er(r.cause)?`: ${r.cause}`:""}`),{ok:!1,res:n.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},W=async(e,t,r,n)=>{let s={},i="";await r.then(e=>{s.success=e,i="success"}).catch(e=>{s.error=e,i="error"});let u=function(e,t){let r={};for(let t of Object.keys(e))r[t]=oi(e[t]);let n=Vn(r,{returnWithStateAndMsg:!0});return"success"!==ye(n,"state")?(t(ye(n,"msg","unknown error")),null):n.msg}(s,e=>{A("error",`${n} output can not be serialized: ${e}`)});return null===u?t.internal("output can not be serialized"):li(e,u,{returnType:i,returnMsg:"need to parse"})},K=e=>(t,r,n)=>{if(413===ye(n,"output.statusCode"))throw n;return A("error",`invalid request packet for ${e.api}: ${fn(n)}`),X(r,e).packet("invalid request packet").takeover()},F={path:`/${w}/main`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.main,n=X(t,r),i=Y(e,r),u=await j(e,i,r,n);if(u)return u;let o=null;try{o=await(()=>{let t=Hr(),r=[],n=0,i=!1,u=new s.Writable({write(e,t,s){if(n+=e.length,n>I)return r=[],i=!0,void s();r.push(e),s()}});return u.on("finish",()=>{}),e.payload.pipe(u),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(r);r=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),A("error",`receive payload error: ${fn(e)}`),t.reject(`receive payload error: ${fn(e)}`)}),e.payload.destroyed&&(A("error","receive payload error: closed before receive"),t.reject("receive payload error: closed before receive")),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${I}`}).code(413);throw e}let l=Qn(new Uint8Array(o),{returnWithStateAndMsg:!0});if("success"!==ye(l,"state")||!_t(l.msg)){let e=fn(ye(l,"msg",""));return A("error",`invalid request packet for apiMain: ${er(e)?e:"not an effective object"}`),n.packet("invalid request packet")}let a=l.msg;return W(t,n,async function(e){return T("execute",[ye(e,"func",""),ye(e,"input",null)],t=>(e.output=t,delete e.input,e))}(a),`execute func[${fn(ye(a,"func",""))}]`)}},k={path:`/${w}/ulctr`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.ulctr,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.mode","");if("check-total-hash"!==u&&"check-slices-hash"!==u&&"merge-slices-push"!==u&&"merge-slices-get"!==u)return n.param(`invalid mode[${fn(u)}] in payload`);let o=ye(e,"payload.fileHash","");if(!Pn(o))return n.param("invalid fileHash in payload");let l=ye(e,"payload.chunkTotal","");if("merge-slices-push"===u){if(!Lr(l))return n.param("invalid chunkTotal in payload");l=fr(l)}if("merge-slices-get"!==u){let e=z(r,n);if(e)return e}let a=ye(e,"payload.filename",""),c=function(e,t="unknown"){if(!er(e))return t;let r=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return r=r.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),r=r.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(r)&&(r=`_${r}`),""===r?t:r}(a,""),d=e=>_t(e)&&dn(e,"error")?`${u}: ${Ln(e.error)}`:"",M=async(e,t)=>{try{return await t()}catch(t){return A("error",`upload-controller mode[${u}] ${e} error: ${fn(t)}`),Promise.reject(`${u} failed`)}};return W(t,n,(async()=>{let t=null;if("check-total-hash"===u){let r=ye(e,"payload.fileSize","");t=await M("check total hash",()=>_s(r,g,o,D));let n=d(t);if(er(n))return Promise.reject(n);if(t.bAllHash){let e={from:"check-total-hash",filename:a,filenameSafe:c,path:t.path},r=await S(e);t={...t,msg:r}}delete t.path,t.sizeSlice=g}else if("check-slices-hash"===u){let r=ye(e,"payload.fileSliceHashs",[]);t=await M("check slices hash",()=>ei(r,o,D));let n=d(t);if(er(n))return Promise.reject(n)}else if("merge-slices-push"===u){t={queueId:await M("push merge task",()=>Js(o,l,D))}}else if("merge-slices-get"===u){let r=ye(e,"payload.queueId",""),n=await Ps(r,D,{funConsume:async e=>await S({from:"merge-slices-get",filename:a,filenameSafe:c,path:e}),funLog:e=>{A("error",e)}});t={state:n.state,msg:n.msg,queueId:r,filename:a},"error"===n.state&&er(n.reason)&&A("error",`${n.msg} for fileHash[${o}]: ${n.reason}`)}return t})(),`upload-controller mode[${u}]`)}},V={path:`/${w}/slc`,method:"POST",options:{payload:{maxBytes:g,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(r,n){let s=_n.slc,i=X(n,s),u=Y(r,s),o=await j(r,u,s,i);if(o)return o;let l=ye(u.headers,"chunk-index",""),a=ye(u.headers,"chunk-total",""),c=ye(u.headers,"package-id","");if(!Fr(l))return i.param("invalid chunkIndex in headers");if(l=fr(l),!Fr(a))return i.param("invalid chunkTotal in headers");if(a=fr(a),!Pn(c))return i.param("invalid packageId in headers");let d=z(s,i);if(d)return d;let M=e.resolve(D,`${c}_${l}`),w=t.createWriteStream(M),y=()=>{let e=Hr(),t=0,n=!1,s=!1,i=!1,u=!1;w.on("error",t=>{s||n||i||(s=!0,r.payload.unpipe(w),r.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${a}] of packageId[${c}] err`,t),A("error",`write chunk[${l+1}/${a}] of packageId[${c}] error: ${fn(t)}`),e.reject(`write chunk[${l+1}/${a}] of packageId[${c}] error`))}),w.on("close",()=>{n||s||i?Jn(M):u&&!0===w.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${a}] of packageId[${c}] done`)},L)}),r.payload.on("data",e=>{n||(t+=e.length,t>g&&(n=!0,r.payload.unpipe(w),r.payload.resume(),w.destroy()))}),r.payload.pipe(w),r.payload.on("end",()=>{u=!0,s||n&&e.reject("payload too large")});let o=t=>{i||u||s||(i=!0,w.destroy(),A("error",`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`),e.reject(`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`))};return r.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${a}] of packageId[${c}] err`,e),o(fn(e))}),r.payload.on("close",()=>{o("closed before end")}),r.payload.destroyed&&o("closed before receive"),e},I={},m="",C="";try{let e=await y();I.success=e,m="success",C="need to parse"}catch(e){if("payload too large"===e)return n.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${g}`}).code(413);I.error=e,m="error",C="need to parse"}return li(n,Vn(I),{returnType:m,returnMsg:C})}},H={path:`/${w}/dwgfn`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.dwgfn,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);return a.ok?(ui(a.v.streamRead),W(t,n,Promise.resolve({filename:a.v.filename}),`download fileId[${u}]`)):a.res}},U={path:`/${w}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dwgf,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(s.query,"fileId","");if(u=er(u)?u:"",!er(u))return n.param("invalid fileId in query");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=a.v.fileSize,D=a.v.fileType,M=a.v.filename,w=ni(c,d,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});if(w.error)return ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error);let y=t.response(w.source).type(D).header("Content-Encoding","identity").header("Content-Length",d).header("Content-Disposition",er(M)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(Ln(e)),r="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}r+=t}return r.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(M)}`:"attachment");return y}},B={path:`/${w}/dw`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dw,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=function(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!er(e))return n("invalid str");let s="";try{let t=En.parse(e);s=Sn.stringify(t)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}(a.v.filename),D=a.v.fileSize,M=a.v.fileType,w=ni(c,D,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});return w.error?(ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error)):t.response(w.source).type(M).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",D)}};let Q=null;if(o)try{h.route([F,k,V,H,U,B])}catch(e){console.log("register routes error",e),x("error",`register routes error: ${fn(e)}`)}else Q=async function(){c&&await h.register(n);let e=[];if(c){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};e=[...e,t]}e=[...e,F,k,V,H,U,B],h.route(e),await h.start(),console.log(`Server running at: ${h.info.uri}`)}().catch(e=>{console.log("start server error",e),x("error",`start server error: ${fn(e)}`)});return b.stop=async()=>{try{Wr(Q)&&await Q,await h.stop()}catch(e){console.log("stop server error",e),A("error",`stop server error: ${fn(e)}`)}},b}function di(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ssZ")}var Di=function(){return g.Date.now()},Mi=Math.max,wi=Math.min;function yi(e,t,r){var n,s,i,u,o,l,a=0,c=!1,d=!1,D=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function M(t){var r=n,i=s;return n=s=void 0,a=t,u=e.apply(i,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||d&&e-a>=i}function y(){var e=Di();if(w(e))return g(e);o=setTimeout(y,function(e){var r=t-(e-l);return d?wi(r,i-(e-a)):r}(e))}function g(e){return o=void 0,D&&n?M(e):(n=s=void 0,u)}function I(){var e=Di(),r=w(e);if(n=arguments,s=this,l=e,r){if(void 0===o)return function(e){return a=e,o=setTimeout(y,t),c?M(e):u}(l);if(d)return clearTimeout(o),o=setTimeout(y,t),M(l)}return void 0===o&&(o=setTimeout(y,t)),u}return t=lr(t)||0,S(r)&&(c=!!r.leading,i=(d="maxWait"in r)?Mi(lr(r.maxWait)||0,t):i,D="trailing"in r?!!r.trailing:D),I.cancel=function(){void 0!==o&&clearTimeout(o),a=0,n=l=s=o=void 0},I.flush=function(){return void 0===o?u:g(Di())},I}var gi=function(){try{var e=U(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ii=gi;function mi(e,t,r){"__proto__"==t&&Ii?Ii(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function Ci(e,t,r){(void 0!==r&&!J(e[t],r)||void 0===r&&!(t in e))&&mi(e,t,r)}var pi="object"==typeof exports&&exports&&!exports.nodeType&&exports,fi=pi&&"object"==typeof module&&module&&!module.nodeType&&module,Li=fi&&fi.exports===pi?g.Buffer:void 0,hi=Li?Li.allocUnsafe:void 0;function bi(e,t){if(t)return e.slice();var r=e.length,n=hi?hi(r):new e.constructor(r);return e.copy(n),n}function Ni(e){var t=new e.constructor(e.byteLength);return new fe(t).set(new fe(e)),t}function Ai(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function xi(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}var Ei=Object.create,Ti=function(){function e(){}return function(t){if(!S(t))return{};if(Ei)return Ei(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();function Si(e){return"function"!=typeof e.constructor||nt(e)?{}:Ti(Tr(e))}function Zi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var vi=Object.prototype.hasOwnProperty;function Yi(e,t,r){var n=e[t];vi.call(e,t)&&J(n,r)&&(void 0!==r||t in e)||mi(e,t,r)}function Xi(e,t,r,n){var s=!r;r||(r={});for(var i=-1,u=t.length;++i<u;){var o=t[i],l=n?n(r[o],e[o],o,r,e):void 0;void 0===l&&(l=e[o]),s?mi(r,o,l):Yi(r,o,l)}return r}var ji=Object.prototype.hasOwnProperty;function zi(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=nt(e),r=[];for(var n in e)("constructor"!=n||!t&&ji.call(e,n))&&r.push(n);return r}function Gi(e){return lt(e)?tt(e,!0):zi(e)}function Wi(e,t,r,n,s,i,u){var o=Zi(e,r),l=Zi(t,r),a=u.get(l);if(a)Ci(e,r,a);else{var c,d=i?i(o,l,r+"",e,t,u):void 0,D=void 0===d;if(D){var w=M(l),y=!w&&Ve(l),g=!w&&!y&&qe(l);d=l,w||y||g?M(o)?d=o:N(c=o)&<(c)?d=xi(o):y?(D=!1,d=bi(l,!0)):g?(D=!1,d=Ai(l,!0)):d=[]:jr(l)||We(l)?(d=o,We(o)?d=function(e){return Xi(e,Gi(e))}(o):S(o)&&!Z(o)||(d=Si(l))):D=!1}D&&(u.set(l,d),s(d,l,n,i,u),u.delete(l)),Ci(e,r,d)}}function Ki(e,t,r,n,s){e!==t&&Ut(t,function(i,u){if(s||(s=new ge),S(i))Wi(e,t,u,r,Ki,n,s);else{var o=n?n(Zi(e,u),i,u+"",e,t,s):void 0;void 0===o&&(o=i),Ci(e,u,o)}},Gi)}var Fi=Math.max;var ki=Ii?function(e,t){return Ii(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:Kt,Vi=ki,Hi=Date.now;var Ui=function(e){var t=0,r=0;return function(){var n=Hi(),s=16-(n-r);if(r=n,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Vi),Bi=Ui;function Qi(e,t){return Bi(function(e,t,r){return t=Fi(void 0===t?e.length-1:t,0),function(){for(var n=arguments,s=-1,i=Fi(n.length-t,0),u=Array(i);++s<i;)u[s]=n[t+s];s=-1;for(var o=Array(t+1);++s<t;)o[s]=n[s];return o[t]=r(u),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,o)}}(e,t,Kt),e+"")}function Ri(e,t,r){if(!S(r))return!1;var n=typeof t;return!!("number"==n?lt(r)&&Ue(t,r.length):"string"==n&&t in r)&&J(r[t],e)}var Oi,Ji=(Oi=function(e,t,r){Ki(e,t,r)},Qi(function(e,t){var r=-1,n=t.length,s=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(s=Oi.length>3&&"function"==typeof s?(n--,s):void 0,i&&Ri(t[0],t[1],i)&&(s=n<3?void 0:s,n=1),e=Object(e);++r<n;){var u=t[r];u&&Oi(e,u,r,s)}return e}));let Pi="w-sync-webdata";function $i(e,r={}){let n={},s=!1,i=!1,u=null;if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let o=ye(r,"fpTableTags","");er(o)||(o="./tableTags.json");let l=ye(r,"genTag");Gr(l)||(l=()=>di()+"|"+ps(6));let{emit:a,emitNow:c,clear:d}=function(e,t){let r=t=>Gr(e.listenerCount)?e.listenerCount(t):1,n={emit:(t,...r)=>e.emit(t,...r),listenerCount:r},s=(t,...n)=>{if("error"!==t)return e.emit(t,...n);let s=n[0];return $t(s)&&"listener"===s.fun&&(s={msg:`listener of event[${s.name}] error`,err:s.msg}),0===r("error")?(console.error(`[${Pi}]`,s),!1):e.emit("error",s)},i=new Set,u=(e,t,r)=>{let s=null,u=r.funEmit;s=Mn(n,e,t,{...r,tag:Pi,funEmit:(e,...t)=>(i.delete(s),u(e,...t))}),i.add(s)};return{emit:(e,...r)=>{t()||u(e,r,{funEmit:(e,...r)=>!t()&&s(e,...r)})},emitPm:(n,i,o={})=>{let l=i.pm;if(t())return;let a=!1,c=!1,d=l.resolve,D=l.reject;l.resolve=e=>{a=!0,d(e)},l.reject=e=>{a=!0,D(e)},u(n,[i],{funSettle:e=>{a||(a=!0,c=!0,D(e))},funEmit:(i,...u)=>i!==n?!!c||!t()&&s(i,...u):!t()&&(!Gr(o.beforeDispatch)||!1!==o.beforeDispatch())&&(0===r(i)?(a=!0,c=!0,D(new Error(`no listener for event[${i}]`)),!1):e.emit(i,...u))})},emitNow:(e,...t)=>an(n,e,t,{tag:Pi,funEmit:s}),clear:()=>{i.forEach(e=>{clearTimeout(e)}),i.clear()}}}(e,()=>s);function D(){let e={};try{if(t.existsSync(o)){let r=Kr(t.readFileSync(o,"utf8"));_t(r)&&(e=r)}}catch(e){a("error",{msg:"readTableTags catch",err:e})}return e}let M=()=>{let e=function(e,t=!1,r={}){let n=ye(r,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(br(e))return s("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return s(Zn(e))}return n?{state:"success",msg:i}:i}(n,!1,{returnWithStateAndMsg:!0});if("success"!==ye(e,"state"))return new Error(`can not serialize tableTags: ${ye(e,"msg")}`);try{t.writeFileSync(o,e.msg,"utf8")}catch(e){return e}return u=e.msg,i=!1,null};function w(){if(s)return;let e=M();e&&a("error",{msg:"writeTableTags catch",err:e})}let y=yi(()=>{w(),a("changeTableTags",n)},200);return e.readTableTags=D,e.writeTableTags=w,e.initTableTags=function(e={},t="useInputFirst"){if(!s)if(null===e&&(e={}),$t(e)){if("useInputOnly"===t)n=e;else if("useStorageOnly"===t)n=D();else if("useInputFirst"===t)n=Ji(D(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);n=Ji(e,D())}w()}else a("error",{msg:"invalid tableTags for initTableTags",err:e})},e.setTableTags=function(e={}){s||(null===e&&(e={}),$t(e)?(n=Ji(n,e),w()):a("error",{msg:"invalid tableTags for setTableTags",err:e}))},e.getTableTags=function(){return n},e.updateTableTag=function(e){s||(er(e)?(n[e]=l(),i=!0,y()):a("error",{msg:"invalid tableName",err:e}))},e.clearSync=function(){if(s)return;y.cancel();let e=null;if(i){let r=null;try{t.existsSync(o)&&(r=t.readFileSync(o,"utf8"))}catch(e){r=void 0}null!==r&&r!==u||(e=M())}s=!0,d(),e&&c("error",{msg:"writeTableTags catch",err:e})},e}var _i=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ae(t,ve(e)),e=Tr(e);return t}:Te;function qi(e){return xe(e,Gi,_i)}var eu=Object.prototype.hasOwnProperty;var tu=/\w*$/;var ru=I?I.prototype:void 0,nu=ru?ru.valueOf:void 0;function su(e,t,r){var n,s,i,u=e.constructor;switch(t){case"[object ArrayBuffer]":return Ni(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return function(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ai(e,r);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return(i=new(s=e).constructor(s.source,tu.exec(s))).lastIndex=s.lastIndex,i;case"[object Symbol]":return n=e,nu?Object(nu.call(n)):{}}}var iu=$e&&$e.isMap,uu=iu?Re(iu):function(e){return N(e)&&"[object Map]"==xt(e)};var ou=$e&&$e.isSet,lu=ou?Re(ou):function(e){return N(e)&&"[object Set]"==xt(e)},au="[object Arguments]",cu="[object Function]",du="[object Object]",Du={};function Mu(e,t,r,n,s,i){var u,o=1&t,l=2&t,a=4&t;if(r&&(u=s?r(e,n,s,i):r(e)),void 0!==u)return u;if(!S(e))return e;var c=M(e);if(c){if(u=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&eu.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!o)return xi(e,u)}else{var d=xt(e),D=d==cu||"[object GeneratorFunction]"==d;if(Ve(e))return bi(e,o);if(d==du||d==au||D&&!s){if(u=l||D?{}:Si(e),!o)return l?function(e,t){return Xi(e,_i(e),t)}(e,function(e,t){return e&&Xi(t,Gi(t),e)}(u,e)):function(e,t){return Xi(e,ve(e),t)}(e,function(e,t){return e&&Xi(t,at(t),e)}(u,e))}else{if(!Du[d])return s?e:{};u=su(e,d,o)}}i||(i=new ge);var w=i.get(e);if(w)return w;i.set(e,u),lu(e)?e.forEach(function(n){u.add(Mu(n,t,r,n,e,i))}):uu(e)&&e.forEach(function(n,s){u.set(s,Mu(n,t,r,s,e,i))});var y=c?void 0:(a?l?qi:ct:l?Gi:at)(e);return $r(y||e,function(n,s){y&&(n=e[s=n]),Yi(u,s,Mu(n,t,r,s,e,i))}),u}Du[au]=Du["[object Array]"]=Du["[object ArrayBuffer]"]=Du["[object DataView]"]=Du["[object Boolean]"]=Du["[object Date]"]=Du["[object Float32Array]"]=Du["[object Float64Array]"]=Du["[object Int8Array]"]=Du["[object Int16Array]"]=Du["[object Int32Array]"]=Du["[object Map]"]=Du["[object Number]"]=Du[du]=Du["[object RegExp]"]=Du["[object Set]"]=Du["[object String]"]=Du["[object Symbol]"]=Du["[object Uint8Array]"]=Du["[object Uint8ClampedArray]"]=Du["[object Uint16Array]"]=Du["[object Uint32Array]"]=!0,Du["[object Error]"]=Du[cu]=Du["[object WeakMap]"]=!1;function wu(e){return Mu(e,5)}function yu(e={}){let t=ln(),r=Object.create(null),n=null,s=new Set,i=new Set,u=!1,o=ye(e,"timeAlive");Lr(o)||(o=1e4),o=fr(o),o=Math.min(o,tn);let l=ye(e,"timeDetect");return Lr(l)||(l=50),l=fr(l),l=Math.min(l,tn),t.trigger=function(e,a){if(!u)if(er(e)){if(!dn(r,e)){let n=setTimeout(()=>{s.delete(n),dn(r,e)&&i.add(e),an(t,"message",[{eventName:"enter",key:e,data:a,now:ys(r)}],{tag:"alive"})},1);s.add(n)}r[e]={data:a,time:Date.now()},u||null===n&&(n=setInterval(()=>{_r(r,(e,n)=>{if(Date.now()-e.time>o){let e=wu(r[n]);if(delete r[n],i.delete(n),an(t,"message",[{eventName:"leave",key:n,data:e.data,now:ys(r)}],{tag:"alive"}),u)return!1}}),u||_t(r)||(clearInterval(n),n=null)},l))}else console.log("trigger need key")},t.get=function(){let e=[];return _r(r,(t,r)=>{e.push({key:r,data:t.data})}),e=wu(e),e},t.clear=function(){if(u)return[];u=!0,null!==n&&(clearInterval(n),n=null);for(let e of s)clearTimeout(e);s.clear();let e=[];return _r(r,(t,r)=>{i.has(r)&&e.push({key:r,data:t.data})}),e=wu(e),r=Object.create(null),i.clear(),e},t}function gu(e,t={}){let r=t.isCleared;Gr(r)||(r=()=>!1);let n=t.onDeliver;Gr(n)||(n=null);let s=e=>{console.error(`[w-serv-broadcast] ${e.msg}`,e.err)},i=t=>(i,...u)=>{let o=u[0];if("error"===i&&_t(o)&&"listener"===o.fun){let t={msg:`listener of event[${o.name}] error`,err:o.msg};return r()?(s(t),!1):e.emit("error",t)}return(!t||!r())&&("error"===i&&0===(t=>Gr(e.listenerCount)?e.listenerCount(t):1)("error")?(s(o),!1):(null!==n&&n(i,u),e.emit(i,...u)))},u=i(!0),o=i(!1),l=(t,...n)=>{r()||Mn(e,t,n,{tag:"w-serv-broadcast",funEmit:u})};return l.final=(t,...r)=>{Mn(e,t,r,{tag:"w-serv-broadcast",funEmit:o})},l}function Iu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let r=new Map,n=!1,s=new Map,i=gu(e,{isCleared:()=>n,onDeliver:(e,t)=>{"clientEnter"===e?s.set(t[0],t[1]):"clientLeave"===e&&s.delete(t[0])}}),u=yu();u.on("message",function({eventName:e,key:t,data:r,now:n}){"enter"===e?i("clientEnter",t,r):"leave"===e&&(s.has(t)&&s.set(t,r),i("clientLeave",t,r)),i("clientChange",n)});let o=function(e,t,s){if(!n&&"[sys:polling]"===e)try{let e=ye(t,"clientId");if(!er(e))return void s.reject("[sys:polling] invalid clientId");let n=r.get(e)||[];r.set(e,[]),u.trigger(e,t),s.resolve(n)}catch(e){i("error",{msg:"[sys:polling] error",err:e}),s.reject("[sys:polling] error")}},l=null;return e.getClients=u.get,e.getMessages=()=>Object.fromEntries(Array.from(r,([e,t])=>[e,wu(t)])),e.broadcast=e=>{if(n)return;let t={mode:"broadcast",data:wu(e)};r.forEach(e=>{e.push(t)})},e.clearBroadcast=()=>{if(n)return;n=!0,null!==l&&(clearInterval(l),l=null),e.off("execute",o);let t=new Map(Ot(u.get(),e=>[e.key,e.data]));u.clear();let a=s.size;for(let[e,r]of Array.from(s))a--,i.final("clientLeave",e,t.has(e)?t.get(e):r),i.final("clientChange",a);s.clear(),r=new Map},e.on("execute",o),l=setInterval(()=>{let e=new Set(Ot(u.get(),"key"));for(let t of Array.from(r.keys()))e.has(t)||r.delete(t)},1e3),e}let mu=(e,t)=>{let r={};return _r(e,e=>{let n=e,s=ye(t,e,"");er(s)&&(r[n]=s)}),r};function Cu(e){_r(e,({ev:e,name:t,h:r})=>{try{Gr(e.removeListener)?e.removeListener(t,r):Gr(e.off)&&e.off(t,r)}catch(e){}})}function pu(e,t){return 0!==ys(e)&&(!!_t(t)&&(_r(e,e=>{let r=t[e];if(!r)throw new Error(`invalid kpOrm[${e}]`);if(!Gr(r.on))throw new Error(`kpOrm[${e}] can not listen to change events`)}),!0))}function fu(e,t,r,n={}){if(!_t(e))throw new Error("invalid instWConverServer");if(!pu(t,r))return e;let s=ye(n,"genTag");Gr(s)||(s=()=>di()+"|"+ps(6));let i={};_r(t,e=>{i[e]=s()}),_r(i,e=>{if(!er(e))throw new Error("invalid opt.genTag")});let u=[];try{_r(t,t=>{let n=r[t],s=()=>{e.updateTableTag(t)};try{n.on("change",s)}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}u.push({ev:n,name:"change",h:s})});let n=r=>{e.broadcast({mode:"syncKpTable",data:mu(t,r)})};e.on("changeTableTags",n),u.push({ev:e,name:"changeTableTags",h:n})}catch(e){throw Cu(u),e}let o=e.clearSync;return e.clearSync=()=>{Cu(u),u=[],o()},e.initTableTags(i,"useInputOnly"),e}function Lu(e,t){return!!(null==e?0:e.length)&&bs(e,t,0)>-1}function hu(e,t,r){for(var n=-1,s=null==e?0:e.length;++n<s;)if(r(t,e[n]))return!0;return!1}var bu=wt&&1/he(new wt([,-0]))[1]==1/0?function(e){return new wt(e)}:function(){};function Nu(e){return e&&e.length?function(e,t,r){var n=-1,s=Lu,i=e.length,u=!0,o=[],l=o;if(r)u=!1,s=hu;else if(i>=200){var a=t?null:bu(e);if(a)return he(a);u=!1,s=Ce,l=new Ie}else l=t?[]:o;e:for(;++n<i;){var c=e[n],d=t?t(c):c;if(c=r||0!==c?c:0,u&&d==d){for(var D=l.length;D--;)if(l[D]===d)continue e;t&&l.push(d),o.push(c)}else s(l,d,r)||(l!==o&&l.push(d),o.push(c))}return o}(e):[]}function Au(e,t,r,n){for(var s=r-1,i=e.length;++s<i;)if(n(e[s],t))return s;return-1}var xu=Array.prototype.splice;function Eu(e,t){return e&&e.length&&t&&t.length?function(e,t,r,n){var s=n?Au:bs,i=-1,u=t.length,o=e;for(e===t&&(t=xi(t)),r&&(o=oe(e,Re(r)));++i<u;)for(var l=0,a=t[i],c=r?r(a):a;(l=s(o,c,l,n))>-1;)o!==e&&xu.call(o,l,1),xu.call(e,l,1);return e}(e,t):e}let Tu=["__proto__","constructor","prototype"];function Su(e){return M(t=e)?oe(t,Me):A(t)?[t]:xi(ue(de(t)));var t}function Zu(e){let t=Su(e);if(0===t.length)return!1;for(let e of t)if(""===e||Tu.includes(e))return!1;return!0}const vu=/^[\p{L}_][\p{L}\p{M}\p{N}_]*$/u,Yu=["prototype","length"];function Xu(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||null===t)&&(0===Object.getOwnPropertySymbols(e).length&&Object.getOwnPropertyNames(e).length===Object.keys(e).length)}function ju(e){return"string"==typeof e?e.length<=1024&&e.indexOf("\0")<0:"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)}function zu(e,t={}){try{return function(e,t){let r=e=>({ok:!1,reason:e});if(void 0===e)return!0===t.requireKey?r("emptyFind"):{ok:!0,find:e};if(!Xu(e))return r("notObject");let n=Object.keys(e);if(n.length>64)return r("tooManyKeys");if(!0===t.requireKey&&0===n.length)return r("emptyFind");let s={},i=0;for(let t of n){if(t.length>128||Yu.includes(t)||t in Object.prototype||!vu.test(t))return r("badKey");let n=e[t];if(ju(n))s[t]=n;else{if(!Xu(n))return r("badValue");{let e=Object.keys(n);if(1!==e.length||"$in"!==e[0])return r("badOperator");let u=n.$in;if(!Array.isArray(u)||Object.getOwnPropertySymbols(u).length>0)return r("badIn");let o=u.length;if(i+=o,i>1e3)return r("tooManyIn");if(Object.getOwnPropertyNames(u).length!==o+1)return r("badIn");let l=[];for(let e=0;e<o;e++){if(!Object.prototype.hasOwnProperty.call(u,e))return r("badIn");let t=u[e];if(!ju(t))return r("badIn");l.push(t)}s[t]=Object.freeze({$in:Object.freeze(l)})}}}return{ok:!0,find:Object.freeze(s)}}(e,t)}catch(e){return{ok:!1,reason:"notObject"}}}let Gu=e=>null!=e,Wu=["select","delAll"];function Ku(e={}){let t=ye(e,"getUserIdByToken",null);if(Gu(t)&&!Gr(t))throw new Error("invalid opt.getUserIdByToken");Gr(t)||(t=async()=>"");let r=ye(e,"useDbOrm",null);Dr(r)||(r=!1);let n=null;if(r&&(n=ye(e,"operOrm",null),!Gr(n)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(r){if(s=ye(e,"tableNames",null),!hr(s))throw new Error("invalid opt.tableNamesExec when useDbOrm=true");_r(s,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesExec[${t}] when useDbOrm=true`)}),s=[...s]}let i=[];if(r){if(i=ye(e,"methods",null),null===i)i=["select","insert","save","del"];else if(!hr(i))throw new Error("invalid opt.methodsExec when useDbOrm=true");_r(i,(e,t)=>{if(!er(e))throw new Error(`invalid opt.methodsExec[${t}] when useDbOrm=true`)}),i=[...i]}let u=null;if(r&&(u=ye(e,"authorizeExec",null),!Gr(u)))throw new Error("invalid opt.authorizeExec when useDbOrm=true");let o=ye(e,"kpFunExt",null);if(Gu(o)&&!$t(o))throw new Error("invalid opt.kpFunExt");$t(o)||(o={}),_r(o,(e,t)=>{if(!Gr(e))throw new Error(`invalid opt.kpFunExt[${t}]`)});let l=ye(e,"kpFunSys",null),a=[];r&&(_r(s,e=>{_r(i,t=>{a.push(`${e}.${t}`)})}),a=Nu(a)),_r(a,e=>{if(!Zu(e))throw new Error(`table operation[${e}] can not be bound by the client`)});let c=Nu(Ot(a,e=>Su(e)[0]));_r(o,(e,t)=>{if(t.startsWith("[sys:"))throw new Error(`kpFunExt[${t}] can not use the reserved prefix [sys:`);if(!Zu(t))throw new Error(`kpFunExt[${t}] can not be bound by the client`);let r=Su(t)[0];if(c.includes(r))throw new Error(`kpFunExt[${t}] conflicts with the table operations of table[${r}]`)});let d=function(e){let t=()=>({leaf:null,kids:new Map}),r=e=>{if(null!==e.leaf)return e.leaf;for(let t of e.kids.values()){let e=r(t);if(null!==e)return e}return null},n=t();for(let s of e){let e=n;for(let r of Su(s)){if(null!==e.leaf)return[e.leaf,s];e.kids.has(r)||e.kids.set(r,t()),e=e.kids.get(r)}if(null===e.leaf){if(e.kids.size>0)return[r(e),s];e.leaf=s}else if(e.leaf!==s)return[e.leaf,s]}return null}([...a,...at(o)]);if(null!==d){let e=e=>a.includes(e)?"table operation":"kpFunExt";throw new Error(`${e(d[1])}[${d[1]}] conflicts with ${e(d[0])}[${d[0]}] on the client binding path`)}return{getUserIdByToken:t,useDbOrm:r,operOrm:n,tableNames:s,methods:i,authorizeExec:u,kpFunExt:o,kpFunSys:l,pathNames:a}}function Fu(e,t={}){if(!_t(e))throw new Error("invalid instWConverServer");let{getUserIdByToken:r,useDbOrm:n,operOrm:s,tableNames:i,methods:u,authorizeExec:o,kpFunExt:l,kpFunSys:a}=Ku(t),c={};async function d(t,n,s){if(!er(t))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!dn(n,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=Ln(n.__sysToken__),!dn(n,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;if(n=n.__sysInputArgs__,!Array.isArray(n))return s.resolve({state:"error",msg:"invalid input"}),s;let u="";try{u=await r(i)}catch(t){return s.resolve({state:"error",msg:t}),an(e,"error",[t]),s}if(er(u)||(u=""),"[sys:getFuncList]"===t){let e=at(c);e=function(e,t){if(!Er(e))return[];if(($t(t)||wr(t)||qt(t)||Dr(t))&&(t=[t]),!Er(t))return e;let r=wu(e);return Eu(r,t),r}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Object.prototype.hasOwnProperty.call(c,t))return s.resolve({state:"error",msg:`invalid func[${t}]`}),s;let o=c[t];try{let e=await Ur(o)(u,...n);s.resolve(e)}catch(e){s.resolve({state:"error",msg:`call func[${t}] has an error: ${fn(e)}`})}return s}return n&&(c=function(e,t,r,n){let s={};return _r(e,e=>{_r(t,t=>{s[`${e}.${t}`]=async function(s,i){if(Wu.includes(t)){let e=zu(i);if(!e.ok)return Promise.reject(`invalid find[${e.reason}]`);i=e.find}return!0!==await n({userId:s,tableName:e,methodName:t,input:i})?Promise.reject("permission denied"):await r(s,e,t,i)}})}),s}(i,u,s,o)),_r(l,(e,t)=>{c[t]=e}),_t(a)&&_r(a,(e,t)=>{c[t]=e}),e.on("execute",function(t,r,n){d(t,r,n).catch(r=>{n.resolve({state:"error",msg:`execFun func[${t}] has an error: ${fn(r)}`}),an(e,"error",[r])})}),e}let ku=e=>null!=e;function Vu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let{fpTableTags:r,genTag:n,useDbOrm:s,kpOrm:i,tableNamesSync:u,optExec:o}=function(e={}){let t=ye(e,"fpTableTags",null);if(ku(t)&&!er(t))throw new Error("invalid opt.fpTableTags");er(t)||(t="./tableTags.json");let r=ye(e,"genTag",null);if(ku(r)&&!Gr(r))throw new Error("invalid opt.genTag");Gr(r)||(r=()=>di()+"|"+ps(6));let n=ye(e,"useDbOrm",null),s=Dr(n);s||(n=!1);let i=ye(e,"kpOrm",null),u=ye(e,"operOrm",null),o=ye(e,"tableNamesExec",null),l=ye(e,"methodsExec",null),a=ye(e,"authorizeExec",null),c=ye(e,"tableNamesSync",null),d=ye(e,"getUserIdByToken",null),D=ye(e,"kpFunExt",null);s||_r({operOrm:u,tableNamesExec:o,methodsExec:l,authorizeExec:a,kpOrm:i,tableNamesSync:c},(e,t)=>{if(null!==e)throw new Error(`invalid opt.useDbOrm when opt.${t} is given`)});if(n&&!$t(i))throw new Error("invalid opt.kpOrm when useDbOrm=true");if(n&&ku(c)){if(!hr(c))throw new Error("invalid opt.tableNamesSync when useDbOrm=true");_r(c,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesSync[${t}] when useDbOrm=true`)}),c=[...c]}let M=Ku({getUserIdByToken:d,useDbOrm:n,operOrm:u,tableNames:o,methods:l,authorizeExec:a,kpFunExt:D}),w=!1;return n&&(w=pu(c,i)),w&&_r(c,e=>{if(!M.tableNames.includes(e)||!M.methods.includes("select"))throw new Error(`invalid opt.tableNamesSync when table operation[${e}.select] does not exist`)}),{fpTableTags:t,genTag:r,useDbOrm:n,kpOrm:i,tableNamesSync:c,optExec:{getUserIdByToken:M.getUserIdByToken,useDbOrm:M.useDbOrm,operOrm:M.operOrm,tableNames:M.tableNames,methods:M.methods,authorizeExec:M.authorizeExec,kpFunExt:M.kpFunExt}}}(t);e=new Iu(e=new $i(e,{fpTableTags:r,genTag:n}));let l={"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:mu(u,t)}}};try{e=new Fu(e,{...o,kpFunSys:l}),s&&(e=new fu(e,u,i,{genTag:n}))}catch(t){throw e.clearBroadcast(),e.clearSync(),t}return e}function Hu(e={}){let t=ln(),s=ye(e,"port");(!Lr(s,{useLimitSafe:!0})||fr(s)>65535)&&(s=8080),s=fr(s);let i=(t,r,n)=>{let s=ye(e,t);if(null==s)return r;if(!n(s))throw new Error(`invalid opt.${t}`);return s},u=i("corsOrigins",["http://localhost"],e=>!1===e||qt(e)||hr(e));!1===u&&(u=[]),qt(u)&&(u=[u]),u=u.filter(e=>""!==e);let o=i("useInert",!0,Dr),l=i("pathStaticFiles","dist",er),a=ye(e,"apis");Er(a)||(a=[]);let c=ye(e,"fpTableTags",null);null==c&&(c=ye(e,"fnTableTags",null));let d=ye(e,"useShowLog");Dr(d)||(d=!0);let D=!0,M=[],w=e=>{D?M.push(e):0!==t.listenerCount("error")?an(t,"error",[e],{tag:"w-serv-hapi"}):console.error("[w-serv-hapi]",e)},y=!1;u.length>0&&(y={origin:u,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]});let g=new r.Server({port:s,routes:{timeout:{server:!1,socket:!1},cors:y}}),I=new ci({serverHapi:g,apiName:ye(e,"apiName"),pathUploadTemp:ye(e,"pathUploadTemp"),tokenType:ye(e,"tokenType"),sizeSlice:ye(e,"sizeSlice"),sizeMsg:ye(e,"sizeMsg"),verifyConn:ye(e,"verifyConn"),delayForSlice:ye(e,"delayForSlice")});I.on("error",w),I.on("clientChange",function(e){d&&console.log(`Server[port:${s}]: now clients: ${e}`)});let m=()=>{for(let e of["clearBroadcast","clearSync"])if(Gr(I[e]))try{I[e]()}catch(e){w(e)}};I=new Vu(I,{...e,fpTableTags:c});let C=new Promise(e=>{setTimeout(()=>{D=!1,e();let t=M;M=[];for(let e of t)w(e)},1)}),p=!1,f=(async()=>{await C,o&&await g.register(n);let e=[];return o&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],g.route(e),await g.start(),p=!0,d&&console.log(`Server running at: ${g.info.uri}`),g})();f.catch(e=>{m(),w(e)});let L=null;return t.ready=()=>f,t.stop=()=>(null!==L||(L=(async()=>{if(await f.catch(()=>{}),m(),p)try{await g.stop()}catch(e){w(e)}})()),L),t.getServer=async()=>g,t.getInstWConverServer=async()=>I,t}function Uu(e){try{e instanceof Promise&&Promise.prototype.then.call(e,void 0,()=>{})}catch(e){}}function Bu(e,t){let r=Hr(),n=!1;try{let t=function(e,t=!1){let r=[],n=!1;try{if(Array.isArray(e)){let t=e.length;r.length=t;for(let n=0;n<t;n++)n in e&&(r[n]=e[n])}else{if(t||!$t(e)&&!hr(e))return null;{n=!0;let t=Object.keys(e);for(let n=0;n<t.length;n++)r.push({k:t[n],v:e[t[n]]})}}}catch(e){throw r.forEach(e=>{Uu(n?e.v:e)}),e}return{items:r,useObj:n}}(e);if(null===t)return r.reject("rs is not an array or object"),r;e=t.items,n=t.useObj}catch(e){return r.reject(e),r}Gr(t)||(_r(e,e=>{Uu(n?e.v:e)}),t=function(e){return e});let s=Gr(t),i=-1,u=[];return e.reduce(function(e,r){return e.then(function(e){u.push(e),i+=1;let o=i,l=r;return n&&(o=r.k,l=r.v),s?t(l,o):l})},Promise.resolve()).then(function(e){var t,n,s,i;u.push(e),i=null==(t=u)?0:t.length,u=i?fs(t,(n=s||void 0===n?1:dr(n))<0?0:n,i):[],r.resolve(u)}).catch(function(e){r.reject(e)}),r}function Qu(e){let t="procOrm does not authorize users, authorize where procOrm is exposed to clients",r=[["useCheckUser",t],["getUserById",t],["useExcludeWhenNotAdmin","procOrm does not filter select results by user, use addFunPostProcessing if needed"]];for(let[t,n]of r){let r=ye(e,t);if(null!=r&&!1!==r)throw new Error(`opt.${t} has been removed, ${n}`)}}let Ru={backup:async function(e){if(!_t(e))throw console.log("woItems",e),new Error("invalid woItems");return await Bu(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,r,n,s=!1){if(!Jr(e))throw console.log("fp",e),new Error("fp is not exist");if(!_t(r))throw console.log("woItems",r),new Error("invalid woItems");Gr(n)||(n=null),Dr(s)||(s=!1);let i=t.readFileSync(e,"utf8");i=Ws(i);let u=Kr(i);if(!Er(u))throw new Error("invalid backup data, need a non-empty array");_r(u,(e,t)=>{let n=ye(e,"name");if(!er(n))throw new Error(`invalid backup data, rs[${t}].name is not a string`);if(!Object.prototype.hasOwnProperty.call(r,n))throw new Error(`invalid backup data, table[${n}] is not in woItems`)}),Gr(n)&&n(),await Bu(u,async e=>{console.log("recover...",e.name),s&&(console.log("needCreateStorage"),await r[e.name].createStorage());let t=null;return ys(e.data)>0&&(t=await r[e.name].insert(e.data)),t})}};var Ou=$e&&$e.isRegExp,Ju=Ou?Re(Ou):function(e){return N(e)&&"[object RegExp]"==b(e)},Pu=/\w*$/;function $u(e,t){var r=30,n="...";if(S(t)){var s="separator"in t?t.separator:s;r="length"in t?dr(t.length):r,n="omission"in t?ce(t.omission):n}var i=(e=de(e)).length;if(ts(e)){var u=Gs(e);i=u.length}if(r>=i)return e;var o=r-ws(n);if(o<1)return n;var l=u?Ls(u,0,o).join(""):e.slice(0,o);if(void 0===s)return l+n;if(u&&(o+=l.length-o),Ju(s)){if(e.slice(o).search(s)){var a,c=l;for(s.global||(s=RegExp(s.source,de(Pu.exec(s))+"g")),s.lastIndex=0;a=s.exec(c);)var d=a.index;l=l.slice(0,void 0===d?o:d)}}else if(e.indexOf(ce(s),o)!=o){var D=l.lastIndexOf(s);D>-1&&(l=l.slice(0,D))}return l+n}function _u(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}const qu=[];for(let e=0;e<256;++e)qu.push((e+256).toString(16).slice(1));const eo=new Uint8Array(16);function to(){return crypto.getRandomValues(eo)}const ro={};function no(e,t,r){let n;if(e)n=so(e.random??e.rng?.()??to(),e.msecs,e.seq,t,r);else{const e=Date.now(),s=to();!function(e,t,r){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=io(r),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(ro,e,s),n=so(s,ro.msecs,ro.seq,t,r)}return t??function(e,t=0){return(qu[e[t+0]]+qu[e[t+1]]+qu[e[t+2]]+qu[e[t+3]]+"-"+qu[e[t+4]]+qu[e[t+5]]+"-"+qu[e[t+6]]+qu[e[t+7]]+"-"+qu[e[t+8]]+qu[e[t+9]]+"-"+qu[e[t+10]]+qu[e[t+11]]+qu[e[t+12]]+qu[e[t+13]]+qu[e[t+14]]+qu[e[t+15]]).toLowerCase()}(n)}function so(e,t,r,n,s=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(n){if(s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`)}else n=new Uint8Array(16),s=0;return t??=Date.now(),r??=io(e),n[s++]=t/1099511627776&255,n[s++]=t/4294967296&255,n[s++]=t/16777216&255,n[s++]=t/65536&255,n[s++]=t/256&255,n[s++]=255&t,n[s++]=112|r>>>28&15,n[s++]=r>>>20&255,n[s++]=128|r>>>14&63,n[s++]=r>>>6&255,n[s++]=r<<2&255|3&e[10],n[s++]=e[11],n[s++]=e[12],n[s++]=e[13],n[s++]=e[14],n[s++]=e[15],n}function io(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function uo(){return no()}var oo={exports:{}},lo={},ao={exports:{}},co={};function Do(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Mo=/javascript\s*\:/gim;co.whiteList=Do(),co.getDefaultWhiteList=Do,co.onAttr=function(e,t,r){},co.onIgnoreAttr=function(e,t,r){},co.safeAttrValue=function(e,t){return Mo.test(t)?"":t};var wo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var yo=function(e,t){";"!==(e=wo.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,n=!1,s=0,i=0,u="";function o(){if(!n){var r=wo.trim(e.slice(s,i)),o=r.indexOf(":");if(-1!==o){var l=wo.trim(r.slice(0,o)),a=wo.trim(r.slice(o+1));if(l){var c=t(s,u.length,l,a,r);c&&(u+=c+"; ")}}}s=i+1}for(;i<r;i++){var l=e[i];if("/"===l&&"*"===e[i+1]){var a=e.indexOf("*/",i+2);if(-1===a)break;s=(i=a+1)+1,n=!1}else"("===l?n=!0:")"===l?n=!1:";"===l?n||o():"\n"===l&&o()}return wo.trim(u)},go=co,Io=yo;function mo(e){return null==e}function Co(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||go.whiteList,e.onAttr=e.onAttr||go.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||go.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||go.safeAttrValue,this.options=e}Co.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,s=t.onIgnoreAttr,i=t.safeAttrValue;return Io(e,function(e,t,u,o,l){var a=r[u],c=!1;if(!0===a?c=a:"function"==typeof a?c=a(o):a instanceof RegExp&&(c=a.test(o)),!0!==c&&(c=!1),o=i(u,o)){var d,D={position:t,sourcePosition:e,source:l,isWhite:c};return c?mo(d=n(u,o,D))?u+":"+o:d:mo(d=s(u,o,D))?void 0:d}})};var po=Co;!function(e,t){var r=co,n=po;for(var s in(t=e.exports=function(e,t){return new n(t).process(e)}).FilterCSS=n,r)t[s]=r[s];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(ao,ao.exports);var fo=ao.exports,Lo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},ho=fo.FilterCSS,bo=fo.getDefaultWhiteList,No=Lo;function Ao(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var xo=new ho;function Eo(e){return e.replace(To,"<").replace(So,">")}var To=/</g,So=/>/g,Zo=/"/g,vo=/"/g,Yo=/&#([a-zA-Z0-9]*);?/gim,Xo=/:?/gim,jo=/&newline;?/gim,zo=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,Go=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Wo=/u\s*r\s*l\s*\(.*/gi;function Ko(e){return e.replace(Zo,""")}function Fo(e){return e.replace(vo,'"')}function ko(e){return e.replace(Yo,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function Vo(e){return e.replace(Xo,":").replace(jo," ")}function Ho(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return No.trim(t)}function Uo(e){return e=Ho(e=Vo(e=ko(e=Fo(e))))}function Bo(e){return e=Eo(e=Ko(e))}lo.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},lo.getDefaultWhiteList=Ao,lo.onTag=function(e,t,r){},lo.onIgnoreTag=function(e,t,r){},lo.onTagAttr=function(e,t,r){},lo.onIgnoreTagAttr=function(e,t,r){},lo.safeAttrValue=function(e,t,r,n){if(r=Uo(r),"href"===t||"src"===t){if("#"===(r=No.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(zo.lastIndex=0,zo.test(r))return""}else if("style"===t){if(Go.lastIndex=0,Go.test(r))return"";if(Wo.lastIndex=0,Wo.test(r)&&(zo.lastIndex=0,zo.test(r)))return"";!1!==n&&(r=(n=n||xo).process(r))}return r=Bo(r)},lo.escapeHtml=Eo,lo.escapeQuote=Ko,lo.unescapeQuote=Fo,lo.escapeHtmlEntities=ko,lo.escapeDangerHtml5Entities=Vo,lo.clearNonPrintableCharacter=Ho,lo.friendlyAttrValue=Uo,lo.escapeAttrValue=Bo,lo.onIgnoreTagStripAll=function(){return""},lo.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],s=!1;return{onIgnoreTag:function(i,u,o){if(function(t){return!!r||-1!==No.indexOf(e,t)}(i)){if(o.isClosing){var l="[/removed]",a=o.position+10;return n.push([!1!==s?s:o.position,a]),s=!1,l}return s||(s=o.position),"[removed]"}return t(i,u,o)},remove:function(e){var t="",r=0;return No.forEach(n,function(n){t+=e.slice(r,n[0]),r=n[1]}),t+=e.slice(r)}}},lo.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var s=e.indexOf("--\x3e",n);if(-1===s)break;r=s+3}return t},lo.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},lo.attributeWrapSign='"',lo.cssFilter=xo,lo.getDefaultCSSWhiteList=bo;var Qo={},Ro=Lo;function Oo(e){var t,r=Ro.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=Ro.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Jo(e){return"</"===e.slice(0,2)}var Po=/[^a-zA-Z0-9\\_:.-]/gim;function $o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function _o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function qo(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function el(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}Qo.parseTag=function(e,t,r){var n="",s=0,i=!1,u=!1,o=0,l=e.length,a="",c="";e:for(o=0;o<l;o++){var d=e.charAt(o);if(!1===i){if("<"===d){i=o;continue}}else if(!1===u){if("<"===d){n+=r(e.slice(s,o)),i=o,s=o;continue}if(">"===d||o===l-1){n+=r(e.slice(s,i)),a=Oo(c=e.slice(i,o+1)),n+=t(i,n.length,a,c,Jo(c)),s=o+1,i=!1;continue}if('"'===d||"'"===d)for(var D=1,M=e.charAt(o-D);""===M.trim()||"="===M;){if("="===M){u=d;continue e}M=e.charAt(o-++D)}}else if(d===u){u=!1;continue}}return s<l&&(n+=r(e.substr(s))),n},Qo.parseAttr=function(e,t){var r=0,n=0,s=[],i=!1,u=e.length;function o(e,r){if(!((e=(e=Ro.trim(e)).replace(Po,"").toLowerCase()).length<1)){var n=t(e,r||"");n&&s.push(n)}}for(var l=0;l<u;l++){var a,c=e.charAt(l);if(!1!==i||"="!==c)if(!1===i||l!==n)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(a=$o(e,l))){o(Ro.trim(e.slice(r,l))),i=!1,r=l+1;continue}l=a-1;continue}if(-1===(a=qo(e,l-1))){o(i,el(Ro.trim(e.slice(r,l)))),i=!1,r=l+1;continue}}else;else{if(-1===(a=e.indexOf(c,l+1)))break;o(i,Ro.trim(e.slice(n+1,a))),i=!1,r=(l=a)+1}else i=e.slice(r,l),r=l+1,n='"'===e.charAt(r)||"'"===e.charAt(r)?r:_o(e,l+1)}return r<e.length&&(!1===i?o(e.slice(r)):o(i,el(Ro.trim(e.slice(r))))),Ro.trim(s.join(" "))};var tl=fo.FilterCSS,rl=lo,nl=Qo,sl=nl.parseTag,il=nl.parseAttr,ul=Lo;function ol(e){return null==e}function ll(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=rl.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(e){return e.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=rl.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":rl.attributeWrapSign,e.onTag=e.onTag||rl.onTag,e.onTagAttr=e.onTagAttr||rl.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||rl.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||rl.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||rl.safeAttrValue,e.escapeHtml=e.escapeHtml||rl.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new tl(e.css))}ll.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,r=t.options,n=r.whiteList,s=r.onTag,i=r.onIgnoreTag,u=r.onTagAttr,o=r.onIgnoreTagAttr,l=r.safeAttrValue,a=r.escapeHtml,c=t.attributeWrapSign,d=t.cssFilter;r.stripBlankChar&&(e=rl.stripBlankChar(e)),r.allowCommentTag||(e=rl.stripCommentTag(e));var D=!1;r.stripIgnoreTagBody&&(D=rl.StripTagBody(r.stripIgnoreTagBody,i),i=D.onIgnoreTag);var M=sl(e,function(e,t,r,D,M){var w={sourcePosition:e,position:t,isClosing:M,isWhite:Object.prototype.hasOwnProperty.call(n,r)},y=s(r,D,w);if(!ol(y))return y;if(w.isWhite){if(w.isClosing)return"</"+r+">";var g=function(e){var t=ul.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=ul.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=ul.trim(e.slice(0,-1))),{html:e,closing:r}}(D),I=n[r],m=il(g.html,function(e,t){var n=-1!==ul.indexOf(I,e),s=u(r,e,t,n);return ol(s)?n?(t=l(r,e,t,d))?e+"="+c+t+c:e:ol(s=o(r,e,t,n))?void 0:s:s});return D="<"+r,m&&(D+=" "+m),g.closing&&(D+=" /"),D+=">"}return ol(y=i(r,D,w))?a(D):y},a);return D&&(M=D.remove(M)),M};var al=ll;!function(e,t){var r=lo,n=Qo,s=al;function i(e,t){return new s(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=s,function(){for(var e in r)t[e]=r[e];for(var s in n)t[s]=n[s]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(oo,oo.exports);var cl=nn(oo.exports);function dl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}let Dl=/<(?=[A-Za-z!/?]|$)/g;function Ml(e){return e.replace(Dl,"<")}let wl={getFilterXSS:function(e=cl){if(Gr(e))return e;let t=dl(),r=ye(t,"filterXSS",null);if(Gr(r))return r;let n=ye(t,"xss",null);if(Gr(n))return n;throw new Error("invalid filterXSS, g.filterXSS, use script for import")},getOpt:function(e){return{escapeHtml:Ml,onIgnoreTagAttr:function(t,r,n,s){if("style"===r)return r+'="'+e.escapeAttrValue(n)+'"'}}}};function yl(e){let t=null,r=null;let n=function e(n){if(Array.isArray(n)){for(let t=0;t<n.length;t++)n[t]=e(n[t]);return n}if($t(n)||hr(n)){for(let t of Object.keys(n))n[t]=e(n[t]);return n}return er(n)?(s=n,null===t&&(t=wl.getFilterXSS(),r=wl.getOpt(t)),t(s,r)):n;var s}(wu(e));return n}function gl(e,t){if(!hr(e))return[];hr(t)||(t=[t]);let r=[];return _r(e,(e,n)=>{0===ye(e,"ok")&&r.push({k:n,id:ye(t,[n,"id"]),err:ye(e,"err","")})}),r}function Il(e,t){var r,n,s;let i=`${e}: ${Pt(Ot((n=10,(r=t)&&r.length?fs(r,0,(n=s||void 0===n?1:dr(n))<0?0:n):[]),e=>er(e.ref)?e.ref:er(e.id)||wr(e.id)?`id[${$u(String(e.id),{length:100,omission:"…"})}]`:`data[${e.k}]`),", ")}`;return ys(t)>10&&(i+=`, ... (${ys(t)} in total)`),i}function ml(e,t){if(t.indexOf("id")<0)return!1;let r=ye(e,"settings",null);if(_t(r)&&!0!==ye(r,"id.pk"))return!1;let n=ye(r,"id.type","")||ye(e,"kpType.id","");return!(er(n)&&["STRING","TEXT","CHAR","UUID","CITEXT"].indexOf(n.split("(")[0].trim().toUpperCase())<0)}function Cl(e,t){return null!==e&&"object"==typeof e&&"string"==typeof t&&Object.prototype.hasOwnProperty.call(e,t)?void 0===e[t]?null:e[t]:null}function pl(e){return"number"==typeof e&&Number.isFinite(e)}function fl(e){return pl(e)?String(e):e}function Ll(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,t(e[r],r)]))}const hl=Object.freeze({proto:"unsupported key[__proto__]",accessor:"unsupported accessor property",unreadable:"unreadable value",deep:"too deep",hidden:"unsupported symbol key or non-enumerable property",irregular:"unsupported irregular object or array"}),bl="function"==typeof WeakRef?Function.prototype.call.bind(WeakRef.prototype.deref):null,Nl="function"==typeof FinalizationRegistry?Function.prototype.call.bind(FinalizationRegistry.prototype.unregister):null,Al={};function xl(e){for(let t=e;null!==t;t=Object.getPrototypeOf(t))if(o.types.isProxy(t)||Object.prototype.hasOwnProperty.call(t,Symbol.toStringTag))return!1;return!0}function El(e){return o.types.isMap(e)||o.types.isSet(e)||o.types.isWeakMap(e)||o.types.isWeakSet(e)||o.types.isPromise(e)||o.types.isAnyArrayBuffer(e)||o.types.isArrayBufferView(e)||o.types.isBoxedPrimitive(e)||o.types.isRegExp(e)||o.types.isNativeError(e)||o.types.isGeneratorObject(e)||o.types.isMapIterator(e)||o.types.isSetIterator(e)||o.types.isModuleNamespaceObject(e)}function Tl(e){if("object"!=typeof e||null===e||!xl(e)||!$t(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t===Object.prototype||function(e){if(null!==Object.getPrototypeOf(e))return!1;let t=Reflect.ownKeys(Object.prototype);if(Reflect.ownKeys(e).length!==t.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))return!1;let r=Object.getOwnPropertyDescriptor(e,"constructor");if(void 0===r||"function"!=typeof r.value||o.types.isProxy(r.value))return!1;if(Function.prototype.toString.call(r.value)!==Function.prototype.toString.call(Object))return!1;let n=Object.getOwnPropertyDescriptor(r.value,"prototype");return void 0!==n&&n.value===e}(t)}function Sl(e){return"object"!=typeof e||null===e||!xl(e)||El(e)?null:Array.isArray(e)?"arr":$t(e)?"obj":null}function Zl(e){if(null!==bl)try{return bl(e),!0}catch(e){}if(null!==Nl)try{return Nl(e,Al),!0}catch(e){}return!1}function vl(e,...t){try{console.log(e,...t)}catch(t){try{console.log(e,"(unprintable)")}catch(e){}}}function Yl(e,t={n:0},r=0){if(t.n>=200)return"[...]";if(t.n++,"string"==typeof e)return $u(e,{length:200});if("function"==typeof e)return"[Function]";if("symbol"==typeof e)return"[Symbol]";if("object"!=typeof e||null===e)return e;if(o.types.isProxy(e))return"[Proxy]";if(o.types.isDate(e))return"[Date]";if(El(e))return"[Object]";if(r>=8)return"[...]";let n=e=>void 0===e?"[empty]":void 0!==e.get||void 0!==e.set?"[Getter/Setter]":Yl(e.value,t,r+1);if(Array.isArray(e)){let t=Math.min(e.length,50),r=[];for(let s=0;s<t;s++)r.push(n(Object.getOwnPropertyDescriptor(e,s)));return e.length>t&&r.push(`[${e.length-t} more]`),r}let s=Reflect.ownKeys(e),i={};for(let t of s.slice(0,50)){let r=Object.getOwnPropertyDescriptor(e,t),s="symbol"==typeof t?String(t):t;Object.defineProperty(i,r.enumerable?s:`${s} (non-enumerable)`,{value:n(r),enumerable:!0,writable:!0,configurable:!0})}return s.length>50&&Object.defineProperty(i,"[more]",{value:s.length-50,enumerable:!0,writable:!0,configurable:!0}),i}function Xl(e,t){let r;try{r=Yl(t)}catch(e){r="(unprintable)"}vl(e,r)}function jl(e,t=1/0,r=!1){try{let n=new Set,s=[e,1],i=0,u=[];for(;s.length>0;){let e,l=s.pop(),a=s.pop();if(n.has(a))continue;if(r){if("object"==typeof a&&null!==a){if(!xl(a)||El(a))return"irregular";if(o.types.isDate(a)){if(Reflect.ownKeys(a).length>0)return"irregular";continue}}e=Sl(a)}else e=Array.isArray(a)?"arr":$t(a)?"obj":null;if(null===e)continue;let c="arr"===e;if(l>t)return"deep";if(n.add(a),Object.prototype.hasOwnProperty.call(a,"__proto__"))return"proto";let d=c?null:Object.keys(a);if(r&&!c){if(!Tl(a))return"irregular";if(Reflect.ownKeys(a).length!==d.length)return"hidden";u.push(a)}let D=c?a.length:d.length;for(let e=0;e<D;e++){let t=Object.getOwnPropertyDescriptor(a,c?e:d[e]);if(void 0!==t){if(void 0!==t.get||void 0!==t.set)return"accessor";if(r&&c&&!t.enumerable)return"irregular";r&&(i+=c?0:d[e].length,"string"==typeof t.value&&(i+=t.value.length)),"object"==typeof t.value&&null!==t.value&&s.push(t.value,l+1)}else if(r)return"irregular"}if(r&&c&&Reflect.ownKeys(a).length!==D+1)return"irregular"}if(r&&"object"==typeof e&&null!==e)if(i<=4e6&&"function"==typeof structuredClone){if(function(e){if("function"!=typeof structuredClone)return!1;let t;try{t=structuredClone(e)}catch(e){return!0}let r=new Set,n=[t];for(;n.length>0;){let e=n.pop();if("object"!=typeof e||null===e||r.has(e))continue;r.add(e);let t=Object.getPrototypeOf(e);if(t!==Date.prototype){if(t!==Object.prototype&&t!==Array.prototype)return!0;for(let t of Object.keys(e))n.push(e[t])}}return!1}(e))return"irregular"}else for(let e=0;e<u.length;e++)if(Zl(u[e]))return"irregular";return null}catch(e){return"unreadable"}}function zl(e,t){try{if(void 0!==t&&"object"==typeof t&&null!==t&&o.types.isProxy(t))return`invalid find of ${e}, ${hl.irregular}`;if(void 0!==t&&!Tl(t))return`invalid find of ${e}, need an object`;let r=jl(t,64,!0);return null!==r?`invalid find of ${e}, ${hl[r]}`:null}catch(t){return`invalid find of ${e}, ${hl.unreadable}`}}function Gl(e,t){let r=new Map,n=(e,t)=>{r.has(e)||r.set(e,[]),r.get(e).push({k:t})};if(Array.isArray(t))for(let e=0;e<t.length;e++)try{let r=Object.getOwnPropertyDescriptor(t,e);if(void 0===r)continue;if(void 0!==r.get||void 0!==r.set){n("accessor",e);continue}let s=jl(r.value);null!==s&&n(s,e)}catch(t){n("unreadable",e)}else{let e=jl(t);null!==e&&n(e,0)}return Ot([...r],([t,r])=>Il(`${e}, ${hl[t]}`,r))}function Wl(e){let t=!hr(e),r=Ot(t?[e]:e,e=>$t(e)&&pl(e.id)?{...e,id:fl(e.id)}:e);return t?r[0]:r}function Kl(e){return"obj"!==Sl(e)?e:Ll(e,(e,t)=>{return"id"===t?"obj"!==Sl(r=e)?fl(r):Ll(r,(e,t)=>["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"].indexOf(t)>=0?"arr"===Sl(e)?Ot(e,fl):fl(e):e):["$and","$or"].indexOf(t)>=0&&"arr"===Sl(e)?Ot(e,Kl):e;var r})}function Fl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{$t(e)||t.push({k:r})}),t}function kl(e){let t=fl(ye(e,"id"));return er(t)?t:null}function Vl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{let n=ye(e,"id");er(n)&&yl(n)!==n&&t.push({k:r,id:n})}),t}function Hl(e,t){return Il(`${e}, id contains HTML markup`,Ot(t,e=>({k:e.k})))}function Ul(e,t,r,n,s="save"){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");let i=e[t].keys,u=!1;hr(n)||(u=!0,n=[n]);let o=_u();if(s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&_r(n,(e,t)=>{n[t].userId=r}),i.indexOf("timeCreate")>=0&&_r(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),n=Ot(n,e=>Ll(e,e=>yl(e))),ml(e[t],i)){(u?_t(n[0]):Er(n))&&_r(n,e=>{er(e.id)||(e.id=uo())})}return n=u?n[0]:n}async function Bl(e,t,r,n,s,i){try{return await async function(e,t,r,n,s,i){let u,o=null;if(!_t(t))return Promise.reject("invalid woItems");let l=Cl(t,n);if(null===l)return Promise.reject(`can not find table[${"string"==typeof n?n:""}] in ORM`);let a=function(e,t){let r=Cl(e,t),n=ye(r,"keys",null);return!!hr(n)&&ml(r,n)}(e,n);if("select"===s){let e=zl("select",i);if(null!==e)return Xl(`${n}.select invalid find`,i),Promise.reject(e);if(u=await l.select(a?Kl(i):i).catch(e=>{console.log(`${n}.select catch`,e),o="failed to select data"}),er(o))return Promise.reject(o)}else if("insert"===s||"save"===s){let t=i,c="insert"===s?"failed to insert data":"failed to save data",d=Fl(i);if(ys(d)>0)return console.log(`${n}.${s} data is not an object`,d),Promise.reject(Il(`${c}, not an object`,d));let D=Gl(c,i);if(ys(D)>0)return console.log(`${n}.${s} data has unsupported key`,D),Promise.reject(Pt(D,"; "));a&&(i=Wl(i));let M=Vl(i);if(ys(M)>0)return console.log(`${n}.${s} id changed by clearXSS`,M),Promise.reject(Hl(c,M));try{i=Ul(e,n,r,i,s)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if("insert"===s?u=await l.insert(i).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}):"save"===s&&(u=await l.save(i).catch(e=>{console.log(`${n}.save catch`,e),o="failed to save data"})),er(o))return Promise.reject(o);if("save"===s){let e=gl(u,i);if(ys(e)>0)return console.log(`${n}.save fail`,e),Promise.reject(Il("failed to save data",gl(u,t)))}u=hr(i)?Ot(i,e=>({id:e.id})):{id:i.id}}else if("del"===s){if(a&&(i=Wl(i)),u=await l.del(i).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"}),!er(o)){let e=gl(u,i);ys(e)>0&&(console.log(`${n}.del fail`,e),o=Il("failed to delete data",e))}}else if("delAll"===s){let e=zl("delAll",i);if(null!==e)return Xl(`${n}.delAll invalid find`,i),Promise.reject(e);u=await l.delAll(a?Kl(i):i).catch(e=>{console.log(`${n}.delAll catch`,e),o="failed to delete data"})}else if("mix"===s){if(!_t(i))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");for(let e of["add","del","diff"]){let t=Object.getOwnPropertyDescriptor(i,e);if(void 0!==t&&(void 0!==t.get||void 0!==t.set))return Promise.reject(`invalid input of mix, ${hl.accessor}`)}i={add:i.add,del:i.del,diff:i.diff};for(let e of["add","del","diff"])if(void 0!==i[e]&&!hr(i[e]))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");let t=[];for(let[e,r]of[["add","failed to insert data"],["diff","failed to update data"]]){let s=Fl(ye(i,e,[]));ys(s)>0&&(console.log(`${n}.mix ${e} data is not an object`,s),t.push(Il(`${r}, not an object`,s)))}if(ys(t)>0)return Promise.reject(Pt(t,"; "));let s=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]])s.push(...Gl(t,ye(i,e,[])));if(ys(s)>0)return console.log(`${n}.mix data has unsupported key`,s),Promise.reject(Pt(s,"; "));if(a){i={...i};for(let e of["add","del","diff"])hr(i[e])&&(i[e]=Wl(i[e]))}let c=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]]){let r=Vl(ye(i,e,[]));ys(r)>0&&(console.log(`${n}.mix ${e} id changed by clearXSS`,r),c.push(Hl(t,r)))}if(ys(c)>0)return Promise.reject(Pt(c,"; "));let d,D=function(e){let t=[];for(let[r,n]of[["add","del"],["del","diff"]]){let s=new Map;_r(ye(e,r,[]),(e,t)=>{let r=kl(e);null!==r&&s.set(r,[...s.get(r)||[],t])});let i=[],u=[];if(_r(ye(e,n,[]),(e,t)=>{let r=kl(e);null!==r&&s.has(r)&&(i=[...i,...s.get(r)],u.push(t))}),ys(u)>0){let e=[...Ot([...new Set(i)].sort((e,t)=>e-t),e=>({ref:`${r}[${e}]`})),...Ot(u,e=>({ref:`${n}[${e}]`}))];t.push(Il(`invalid input of mix, same id in ${r} and ${n}`,e))}}return t}(i);if(ys(D)>0)return console.log(`${n}.mix same id across steps`,D),Promise.reject(Pt(D,"; "));u=[];let M=[],w=ye(i,"add",[]);if(ys(w)>0){try{w=Ul(e,n,r,w,"insert+save")}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if(await l.insert(w).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}),er(o))return Promise.reject(o);d=Ot(w,e=>({id:e.id})),u=[...u,...d]}let y=ye(i,"del",[]);if(ys(y)>0){let e=await l.del(y).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"});if(er(o))return Promise.reject(o);let t=gl(e,y);ys(t)>0&&(console.log(`${n}.del fail`,t),M.push(Il("failed to delete data",t))),d=Ot(y,e=>({id:e.id})),u=[...u,...d]}let g=ye(i,"diff",[]);if(ys(g)>0){let t=g;try{g=Ul(e,n,r,g)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}let s=await l.save(g).catch(e=>{console.log(`${n}.save catch`,e),o="failed to update data"});if(er(o))return Promise.reject(o);let i=gl(s,g);ys(i)>0&&(console.log(`${n}.save fail`,i),M.push(Il("failed to update data",gl(s,t)))),d=Ot(g,e=>({id:e.id})),u=[...u,...d]}if(ys(M)>0)return Promise.reject(Pt(M,"; "))}else o=`invalid mode: ${s}`;if(er(o))return Promise.reject(o);return u}(e,t,r,n,s,i)}catch(e){return"string"==typeof e?Promise.reject(e):(vl(`${"string"==typeof n?n:""}.${"string"==typeof s?s:""} mapOrm catch`,e),Promise.reject("failed to process input"))}}function Ql(e,t){return async(r,n,s,i)=>Bl(e,t,r,n,s,i)}function Rl(e,t,r,n=!1){if(!Gr(t)){let s=`${r} needs a function, but got ${typeof t}`;throw n&&e.push(()=>Promise.reject(s)),new Error(s)}setTimeout(()=>{e.push(t)},1)}function Ol(e,t={}){if(Qu(t),!Gr(e))throw new Error("invalid mapOrm");let r={funChecks:[],funPreProcessing:[],funPostProcessing:[],mapOrm:e};return{addFunCheck:e=>{Rl(r.funChecks,e,"addFunCheck",!0)},addFunPreProcessing:e=>{Rl(r.funPreProcessing,e,"addFunPreProcessing")},addFunPostProcessing:e=>{Rl(r.funPostProcessing,e,"addFunPostProcessing")},procOrm:async(e,t,n,s)=>async function(e,t,r,n,s){await Bu(e.funChecks,e=>e({woName:r,userId:t,mode:n,input:s}));for(let i of[...e.funPreProcessing]){let e=await i({woName:r,userId:t,mode:n,input:s});if(!_t(e)||void 0===e.input)return Promise.reject("invalid return of pre-processing, need an object with input");s=e.input}let i=await e.mapOrm(t,r,n,s);for(let u of[...e.funPostProcessing])i=await u({woName:r,userId:t,mode:n,input:s,output:i});return i}(r,e,t,n,s)}}function Jl(e,t,r,n,s={}){Qu(s);let i=function(e,t,r,n){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");if(!Gr(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!er(r))throw console.log("url",r),new Error("invalid url");if(!er(n))throw console.log("db",n),new Error("invalid db");let s={};return _r(at(e),e=>{let i=new t({url:r,db:n,cl:e});Object.defineProperty(s,e,{value:i,enumerable:!0,writable:!0,configurable:!0})}),s}(e,t,r,n),u=Ol(Ql(e,i),s);return{...Ru,woItems:i,closeAll:async()=>{await Bu(i,async e=>{e&&Gr(e.close)&&await e.close()})},...u}}function Pl(e,t){if(!$t(e))return{};if(!Er(t))return{};let r={};return _r(t,function(t){dn(e,t)&&(r[t]=ye(e,t))}),r}let $l="grups",_l={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ql=(e={})=>{let t=qr(e,at(_l));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ea="pemis",ta={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ra=(e={})=>{let t=qr(e,at(ta));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},na="targets",sa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ia=(e={})=>{let t=qr(e,at(sa));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ua="users",oa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},la=(e={})=>{let t=qr(e,at(oa));return t.id=`${uo()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function aa(e,t={}){let r=ye(t,"useCreateStorage");Dr(r)||(r=!1);let{keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,parser:o,funNew:l,funTest:a,ext:c}=e;if(!er(n))throw new Error(`invalid keyTable[${n}]`);if(er(s)||(s=n),er(i)||(i=n),!_t(u))throw new Error("invalid settings");_t(c)||(c=null),_t(o)||(o=null),Gr(l)||(l=null);let d=null;Gr(a)&&(d=async e=>{if(!_t(e))throw new Error("invalid wo");if(!dn(e,n))throw console.log(e),new Error(`keyTable[${n}] is not in wo`);let t=[];try{t=a(),Wr(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${n}] funTest catch`,e),new Error(e)}if(0===ys(t))return;r&&await e[n].createStorage();let s=gl(await e[n].save(t),t);if(ys(s)>0)throw new Error(`failed to write test data into table[${n}]: ${JSON.stringify(s)}`);return t});let D={},M={};return _r(at(u),e=>{let t=ye(u,`${e}.name`,"");er(t)&&(D[e]=t);let r=ye(u,`${e}.type`,"");er(r)&&(M[e]=r)}),{...e,keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,keys:at(u),kpType:M,kpHead:D,parser:o,funNew:l,funTest:a,funTestAndSave:d,ext:c}}let ca={grups:{keyTable:$l,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:_l,funNew:ql,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ot(e,([e,t],r)=>{let n=ql({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,cpemis:t});return n.id=`id-for-${e}`,n=Pl(n,at(_l)),n}),console.log(`已產生: ${$l} 測試資料`,e),e}},pemis:{keyTable:ea,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:ta,funNew:ra,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ot(e,([e,t],r)=>{let n=ra({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,crules:t});return n.id=`id-for-${e}`,n=Pl(n,at(ta)),n}),console.log(`已產生: ${ea} 測試資料`,e),e}},targets:{keyTable:na,tableNameCht:"管控對象",tableNameEng:"Targets",settings:sa,funNew:ia,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ot(e,(e,t)=>{let r=ia({userId:"id-for-admin",order:t,description:`${e}的說明`});return r.id=e,r=Pl(r,at(sa)),r}),console.log(`已產生: ${na} 測試資料`,e),e}},users:{keyTable:ua,tableNameCht:"使用者",tableNameEng:"Users",settings:oa,funNew:la,funTest:()=>{let e=[["peter","teamA","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","teamA","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","teamA","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ot(e,([e,t,r,n],s)=>{let i=la({userId:"id-for-admin",order:s,name:e,email:`${e}@example.com`,from:t,cgrups:r,isAdmin:n});return i.id=`id-for-${e}`,i.isAdmin=n,i=Pl(i,at(oa)),i}),console.log(`已產生: ${ua} 測試資料`,e),e}}},da={};for(let e in ca)da[e]=aa(ca[e],{useCreateStorage:!1});var Da={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),r=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});r.version;var n=function(e){return"object"==typeof e?null!==e:"function"==typeof e},s=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},u=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),o=t.document,l=n(o)&&n(o.createElement),a=function(e){return l?o.createElement(e):{}},c=!u&&!i(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}),d=function(e,t){if(!n(e))return e;var r,s;if(t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;if("function"==typeof(r=e.valueOf)&&!n(s=r.call(e)))return s;if(!t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;throw TypeError("Can't convert object to primitive value")},D=Object.defineProperty,M={f:u?Object.defineProperty:function(e,t,r){if(s(e),t=d(t,!0),s(r),c)try{return D(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},w=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=u?function(e,t,r){return M.f(e,t,w(1,r))}:function(e,t,r){return e[t]=r,e},g={}.hasOwnProperty,I=function(e,t){return g.call(e,t)},m=0,C=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++m+C).toString(36))},f=e(function(e){var n="__core-js_shared__",s=t[n]||(t[n]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),L=f("native-function-to-string",Function.toString),h=e(function(e){var n=p("src"),s="toString",i=(""+L).split(s);r.inspectSource=function(e){return L.call(e)},(e.exports=function(e,r,s,u){var o="function"==typeof s;o&&(I(s,"name")||y(s,"name",r)),e[r]!==s&&(o&&(I(s,n)||y(s,n,e[r]?""+e[r]:i.join(String(r)))),e===t?e[r]=s:u?e[r]?e[r]=s:y(e,r,s):(delete e[r],y(e,r,s)))})(Function.prototype,s,function(){return"function"==typeof this&&this[n]||L.call(this)})}),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},N=function(e,t,r){if(b(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,s){return e.call(t,r,n,s)}}return function(){return e.apply(t,arguments)}},A="prototype",x=function(e,n,s){var i,u,o,l,a=e&x.F,c=e&x.G,d=e&x.S,D=e&x.P,M=e&x.B,w=c?t:d?t[n]||(t[n]={}):(t[n]||{})[A],g=c?r:r[n]||(r[n]={}),I=g[A]||(g[A]={});for(i in c&&(s=n),s)o=((u=!a&&w&&void 0!==w[i])?w:s)[i],l=M&&u?N(o,t):D&&"function"==typeof o?N(Function.call,o):o,w&&h(w,i,o,e&x.U),g[i]!=o&&y(g,i,l),D&&I[i]!=o&&(I[i]=o)};t.core=r,x.F=1,x.G=2,x.S=4,x.P=8,x.B=16,x.W=32,x.U=64,x.R=128;var E,T=x,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},Y=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},X=(E=!1,function(e,t){var r,n,s=String(Y(e)),i=v(t),u=s.length;return i<0||i>=u?E?"":void 0:(r=s.charCodeAt(i))<55296||r>56319||i+1===u||(n=s.charCodeAt(i+1))<56320||n>57343?E?s.charAt(i):r:E?s.slice(i,i+2):n-56320+(r-55296<<10)+65536});T(T.P,"String",{codePointAt:function(e){return X(this,e)}}),r.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=v(e))<0?j(e+t,0):z(e,t)},W=String.fromCharCode,K=String.fromCodePoint;T(T.S+T.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,r=arguments,n=[],s=arguments.length,i=0;s>i;){if(t=+r[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?W(t):W(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}}),r.String.fromCodePoint;var F,k,V,H,U,B,Q,R,O,J,P,$,_,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},re=function(e,t){F=String(e),k="start",V=[],H=0,U=1,B=0,Q=void 0,R=void 0,O=void 0;do{Q=se(),Me[k]()}while("eof"!==Q.type);return"function"==typeof t?ne({"":O},"",t):O};function ne(e,t,r){var n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(var s=0;s<n.length;s++){var i=String(s),u=ne(n,i,r);void 0===u?delete n[i]:Object.defineProperty(n,i,{value:u,writable:!0,enumerable:!0,configurable:!0})}else for(var o in n){var l=ne(n,o,r);void 0===l?delete n[o]:Object.defineProperty(n,o,{value:l,writable:!0,enumerable:!0,configurable:!0})}return r.call(e,t,n)}function se(){for(J="default",P="",$=!1,_=1;;){q=ie();var e=oe[J]();if(e)return e}}function ie(){if(F[H])return String.fromCodePoint(F.codePointAt(H))}function ue(){var e=ie();return"\n"===e?(U++,B=0):e?B+=e.length:B++,e&&(H+=e.length),e}var oe={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void ue();case"/":return ue(),void(J="comment");case void 0:return ue(),le("eof")}if(!te.isSpaceSeparator(q))return oe[k]();ue()},comment:function(){switch(q){case"*":return ue(),void(J="multiLineComment");case"/":return ue(),void(J="singleLineComment")}throw ge(ue())},multiLineComment:function(){switch(q){case"*":return ue(),void(J="multiLineCommentAsterisk");case void 0:throw ge(ue())}ue()},multiLineCommentAsterisk:function(){switch(q){case"*":return void ue();case"/":return ue(),void(J="default");case void 0:throw ge(ue())}ue(),J="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return ue(),void(J="default");case void 0:return ue(),le("eof")}ue()},value:function(){switch(q){case"{":case"[":return le("punctuator",ue());case"n":return ue(),ae("ull"),le("null",null);case"t":return ue(),ae("rue"),le("boolean",!0);case"f":return ue(),ae("alse"),le("boolean",!1);case"-":case"+":return"-"===ue()&&(_=-1),void(J="sign");case".":return P=ue(),void(J="decimalPointLeading");case"0":return P=ue(),void(J="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return P=ue(),void(J="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",1/0);case"N":return ue(),ae("aN"),le("numeric",NaN);case'"':case"'":return $='"'===ue(),P="",void(J="string")}throw ge(ue())},identifierNameStartEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw me()}P+=e,J="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"":case"":return void(P+=ue());case"\\":return ue(),void(J="identifierNameEscape")}if(!te.isIdContinueChar(q))return le("identifier",P);P+=ue()},identifierNameEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":case"":case"":break;default:if(!te.isIdContinueChar(e))throw me()}P+=e,J="identifierName"},sign:function(){switch(q){case".":return P=ue(),void(J="decimalPointLeading");case"0":return P=ue(),void(J="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return P=ue(),void(J="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",_*(1/0));case"N":return ue(),ae("aN"),le("numeric",NaN)}throw ge(ue())},zero:function(){switch(q){case".":return P+=ue(),void(J="decimalPoint");case"e":case"E":return P+=ue(),void(J="decimalExponent");case"x":case"X":return P+=ue(),void(J="hexadecimal")}return le("numeric",0*_)},decimalInteger:function(){switch(q){case".":return P+=ue(),void(J="decimalPoint");case"e":case"E":return P+=ue(),void(J="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(P));P+=ue()},decimalPointLeading:function(){if(te.isDigit(q))return P+=ue(),void(J="decimalFraction");throw ge(ue())},decimalPoint:function(){switch(q){case"e":case"E":return P+=ue(),void(J="decimalExponent")}return te.isDigit(q)?(P+=ue(),void(J="decimalFraction")):le("numeric",_*Number(P))},decimalFraction:function(){switch(q){case"e":case"E":return P+=ue(),void(J="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(P));P+=ue()},decimalExponent:function(){switch(q){case"+":case"-":return P+=ue(),void(J="decimalExponentSign")}if(te.isDigit(q))return P+=ue(),void(J="decimalExponentInteger");throw ge(ue())},decimalExponentSign:function(){if(te.isDigit(q))return P+=ue(),void(J="decimalExponentInteger");throw ge(ue())},decimalExponentInteger:function(){if(!te.isDigit(q))return le("numeric",_*Number(P));P+=ue()},hexadecimal:function(){if(te.isHexDigit(q))return P+=ue(),void(J="hexadecimalInteger");throw ge(ue())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return le("numeric",_*Number(P));P+=ue()},string:function(){switch(q){case"\\":return ue(),void(P+=ce());case'"':return $?(ue(),le("string",P)):void(P+=ue());case"'":return $?void(P+=ue()):(ue(),le("string",P));case"\n":case"\r":throw ge(ue());case"\u2028":case"\u2029":Ce(q);break;case void 0:throw ge(ue())}P+=ue()},start:function(){switch(q){case"{":case"[":return le("punctuator",ue())}J="value"},beforePropertyName:function(){switch(q){case"$":case"_":return P=ue(),void(J="identifierName");case"\\":return ue(),void(J="identifierNameStartEscape");case"}":return le("punctuator",ue());case'"':case"'":return $='"'===ue(),void(J="string")}if(te.isIdStartChar(q))return P+=ue(),void(J="identifierName");throw ge(ue())},afterPropertyName:function(){if(":"===q)return le("punctuator",ue());throw ge(ue())},beforePropertyValue:function(){J="value"},afterPropertyValue:function(){switch(q){case",":case"}":return le("punctuator",ue())}throw ge(ue())},beforeArrayValue:function(){if("]"===q)return le("punctuator",ue());J="value"},afterArrayValue:function(){switch(q){case",":case"]":return le("punctuator",ue())}throw ge(ue())},end:function(){throw ge(ue())}};function le(e,t){return{type:e,value:t,line:U,column:B}}function ae(e){for(var t=0,r=e;t<r.length;t+=1){var n=r[t];if(ie()!==n)throw ge(ue());ue()}}function ce(){switch(ie()){case"b":return ue(),"\b";case"f":return ue(),"\f";case"n":return ue(),"\n";case"r":return ue(),"\r";case"t":return ue(),"\t";case"v":return ue(),"\v";case"0":if(ue(),te.isDigit(ie()))throw ge(ue());return"\0";case"x":return ue(),de();case"u":return ue(),De();case"\n":case"\u2028":case"\u2029":return ue(),"";case"\r":return ue(),"\n"===ie()&&ue(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw ge(ue())}return ue()}function de(){var e="",t=ie();if(!te.isHexDigit(t))throw ge(ue());if(e+=ue(),t=ie(),!te.isHexDigit(t))throw ge(ue());return e+=ue(),String.fromCodePoint(parseInt(e,16))}function De(){for(var e="",t=4;t-- >0;){var r=ie();if(!te.isHexDigit(r))throw ge(ue());e+=ue()}return String.fromCodePoint(parseInt(e,16))}var Me={start:function(){if("eof"===Q.type)throw Ie();we()},beforePropertyName:function(){switch(Q.type){case"identifier":case"string":return R=Q.value,void(k="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===Q.type)throw Ie();k="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Q.type)throw Ie();we()},beforeArrayValue:function(){if("eof"===Q.type)throw Ie();"punctuator"!==Q.type||"]"!==Q.value?we():ye()},afterPropertyValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforeArrayValue");case"]":ye()}},end:function(){}};function we(){var e;switch(Q.type){case"punctuator":switch(Q.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Q.value}if(void 0===O)O=e;else{var t=V[V.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,R,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)V.push(e),k=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var r=V[V.length-1];k=null==r?"end":Array.isArray(r)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];k=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function ge(e){return fe(void 0===e?"JSON5: invalid end of input at "+U+":"+B:"JSON5: invalid character '"+pe(e)+"' at "+U+":"+B)}function Ie(){return fe("JSON5: invalid end of input at "+U+":"+B)}function me(){return fe("JSON5: invalid identifier character at "+U+":"+(B-=5))}function Ce(e){console.warn("JSON5: '"+pe(e)+"' in strings is not valid ECMAScript; consider escaping")}function pe(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var r=e.charCodeAt(0).toString(16);return"\\x"+("00"+r).substring(r.length)}return e}function fe(e){var t=new SyntaxError(e);return t.lineNumber=U,t.columnNumber=B,t}var Le=function(e,t,r){var n,s,i,u=[],o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(r=t.space,i=t.quote,t=t.replacer),"function"==typeof t)s=t;else if(Array.isArray(t)){n=[];for(var a=0,c=t;a<c.length;a+=1){var d=c[a],D=void 0;"string"==typeof d?D=d:("number"==typeof d||d instanceof String||d instanceof Number)&&(D=String(d)),void 0!==D&&n.indexOf(D)<0&&n.push(D)}}return r instanceof Number?r=Number(r):r instanceof String&&(r=String(r)),"number"==typeof r?r>0&&(r=Math.min(10,Math.floor(r)),l=" ".substr(0,r)):"string"==typeof r&&(l=r.substr(0,10)),M("",{"":e});function M(e,t){var r=t[e];switch(null!=r&&("function"==typeof r.toJSON5?r=r.toJSON5(e):"function"==typeof r.toJSON&&(r=r.toJSON(e))),s&&(r=s.call(t,e,r)),r instanceof Number?r=Number(r):r instanceof String?r=String(r):r instanceof Boolean&&(r=r.valueOf()),r){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof r?w(r):"number"==typeof r?String(r):"object"==typeof r?Array.isArray(r)?I(r):y(r):void 0}function w(e){for(var t={"'":.1,'"':.2},r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},n="",s=0;s<e.length;s++){var u=e[s];switch(u){case"'":case'"':t[u]++,n+=u;continue;case"\0":if(te.isDigit(e[s+1])){n+="\\x00";continue}}if(r[u])n+=r[u];else if(u<" "){var o=u.charCodeAt(0).toString(16);n+="\\x"+("00"+o).substring(o.length)}else n+=u}var l=i||Object.keys(t).reduce(function(e,r){return t[e]<t[r]?e:r});return l+(n=n.replace(new RegExp(l,"g"),r[l]))+l}function y(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,s,i=[],a=0,c=n||Object.keys(e);a<c.length;a+=1){var d=c[a],D=M(d,e);if(void 0!==D){var w=g(d)+":";""!==l&&(w+=" "),w+=D,i.push(w)}}if(0===i.length)r="{}";else if(""===l)r="{"+(s=i.join(","))+"}";else{var y=",\n"+o;s=i.join(y),r="{\n"+o+s+",\n"+t+"}"}return u.pop(),o=t,r}function g(e){if(0===e.length)return w(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return w(e);for(var r=t.length;r<e.length;r++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(r))))return w(e);return e}function I(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,n=[],s=0;s<e.length;s++){var i=M(String(s),e);n.push(void 0!==i?i:"null")}if(0===n.length)r="[]";else if(""===l)r="["+n.join(",")+"]";else{var a=",\n"+o,c=n.join(a);r="[\n"+o+c+",\n"+t+"]"}return u.pop(),o=t,r}},he={parse:re,stringify:Le},be=he,Ne=be;return Ne}()}(Da);var Ma=nn(Da.exports);function wa(e,t){var r=[];return Qt(e,function(e,n,s){t(e,n,s)&&r.push(e)}),r}function ya(e,t){return(M(e)?Ee:wa)(e,Vt(t))}var ga=I?I.isConcatSpreadable:void 0;function Ia(e){return M(e)||We(e)||!!(ga&&e&&e[ga])}function ma(e,t,r,n,s){var i=-1,u=e.length;for(r||(r=Ia),s||(s=[]);++i<u;){var o=e[i];t>0&&r(o)?t>1?ma(o,t-1,r,n,s):Ae(s,o):n||(s[s.length]=o)}return s}function Ca(e,t){if(e!==t){var r=void 0!==e,n=null===e,s=e==e,i=A(e),u=void 0!==t,o=null===t,l=t==t,a=A(t);if(!o&&!a&&!i&&e>t||i&&u&&l&&!o&&!a||n&&u&&l||!r&&l||!s)return 1;if(!n&&!i&&!a&&e<t||a&&r&&s&&!n&&!i||o&&r&&s||!u&&s||!l)return-1}return 0}function pa(e,t,r){t=t.length?oe(t,function(e){return M(e)?function(t){return we(t,1===e.length?e[0]:e)}:e}):[Kt];var n=-1;return t=oe(t,Re(Vt)),function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}(Rt(e,function(e,r,s){return{criteria:oe(t,function(t){return t(e)}),index:++n,value:e}}),function(e,t){return function(e,t,r){for(var n=-1,s=e.criteria,i=t.criteria,u=s.length,o=r.length;++n<u;){var l=Ca(s[n],i[n]);if(l)return n>=o?l:l*("desc"==r[n]?-1:1)}return e.index-t.index}(e,t,r)})}var fa=Qi(function(e,t){if(null==e)return[];var r=t.length;return r>1&&Ri(e,t[0],t[1])?t=[]:r>2&&Ri(t[0],t[1],t[2])&&(t=[t[0]]),pa(e,ma(t,1),[])});function La(e,t){if(Array.isArray(e))for(let r=0,n=e.length;r<n&&!1!==t(e[r],r,e);r++);else if(null!==e&&"object"==typeof e){let r=Object.keys(e);for(let n=0;n<r.length;n++){let s=r[n];if(!1===t(e[s],s,e))break}}return e}function ha(e,t,r){return null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:r}function ba(e,t,r,n){let s=e=>{let t=Object.create(null);try{t=Ma.parse(e)}catch(t){console.log("c",e),console.log(t)}let r=[];try{r=(e=>{let t=[],r=Array.isArray(e);return La(e,(e,n)=>{let s={name:n};_t(e)?(s={...s,...e},r||(s.name=n)):s={...s,isActive:e},t.push(s)}),t})(t)}catch(r){console.log("c",e),console.log("kp",t),console.log(r)}return r},i=(e,t,r)=>{let n=[];return _r(e,e=>{let s=ye(e,r,"");_r(t,t=>{let i=ye(t,r,"");if(s===i)return n.push({...e,data:t}),!1})}),n},u=e=>{let t=[];if(_r(e,e=>{let r=ye(e,"mode","");if("OR"!==r&&"AND"!==r)return!0;let n=ye(e,"rules",[]),s=Object.create(null);_r(n,e=>{s[e.name]=e.isActive}),t.push({mode:r,kpRule:s})}),0===ys(t))return[];let r=ya(t,{mode:"OR"}),n=ya(t,{mode:"AND"}),s=null;ys(r)>0?s=ye(r,"0.kpRule"):ys(n)>0&&(s=ye(n,"0.kpRule")),_r(r,e=>{let t=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.create(null);return _r([e,t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]||"y"===e?r[t]="y":r[t]="n"})}),r})(s,t)}),_r(n,(e,t)=>{let r=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.assign(Object.create(null),e);return _r([t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]&&"y"===e?r[t]="y":r[t]="n"})}),r})(s,r)});let i=[];return La(s,(e,t)=>{i.push({name:t,isActive:e})}),i},o=ye(e,"cgrups",""),l=s(o);l=i(l,t,"name"),l=ya(l,{isActive:"y"}),l=Ot(l,e=>{let t=ye(e,"data.cpemis",""),n=s(t);return n=ya(n,{isActive:"y"}),n=i(n,r,"name"),e.data._pemis=n,e}),l=Ot(l,e=>{let t=ye(e,"data._pemis",[]);return t=Ot(t,e=>{let t=ye(e,"data.crules",""),r=s(t);return e.data._rules=r,e}),e.data._pemis=t,e});let a=[];{let e=[];_r(l,t=>{let r=t.mode,n=t.data._pemis,s=[];_r(n,e=>{let t=e.mode,r=e.data._rules;s.push({mode:t,rules:r})});let i={mode:r,rules:u(s)};e.push(i)}),a=u(e)}{let e=Object.create(null);_r(a,t=>{e[t.name]=t.isActive});let t=[];_r(n,r=>{t.push({name:r.id,isActive:ha(e,r.id,"n")})}),a=t}return{grups:l,rules:a}}function Na(e,t){return Yt(e,t)}function Aa(e,t){function r(e){return hr(e)?e:[e]}if(xr(e))return!1;if(0===(e=r(e)).length)return!1;if(xr(e))return!1;if(0===(t=r(t)).length)return!1;for(let r=0;r<e.length;r++)for(let n=0;n<t.length;n++)if(Na(e[r],t[n]))return!0;return!1}let xa={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},saveInProgress:{eng:"The previous save is still in progress. Please do not submit again.",cht:"上一次儲存仍在處理中,請勿重複送出"},saveNewRowExists:{eng:"The newly added data has already been saved. Please reload the page before making changes.",cht:"新增之資料已儲存過,請重新整理頁面後再操作"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},htmlMarkupNotAllowed:{eng:'The input contains HTML markup that is not allowed (such as "<" followed by a letter). Please remove it and try again.',cht:"輸入內容含有不允許的 HTML 標記(如「<」後接英文字母),請移除後再試一次。"},saveWriteFail:{eng:"Not all changes were written, and some may have taken effect. Please reload the page and check before making changes.",cht:"資料寫入未全部完成,部分變更可能已生效,請重新整理頁面確認後再操作"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid data format.",cht:"資料格式錯誤。"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},menuUser:{eng:"User menu",cht:"使用者選單"},language:{eng:"Language",cht:"語系"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},Ea=(e={})=>{let t=ye(e,"kpLangExt");_t(t)||(t={});let r=ye(e,"webName");_t(r)||(r={});let n=ye(e,"webDescription");_t(n)||(n={});let s={};s={...s,...xa},_t(t)&&(s={...s,...t}),_t(r)&&(s={...s,webName:{...r}}),_t(n)&&(s={...s,webDescription:{...n}});let i={};return _r(["eng","cht"],e=>{let t={};_r(s,(r,n)=>{t[n]=r[e]}),i[e]=t}),i};function Ta(e,t={}){if(!Array.isArray(e))return{reason:"rowsInvalid",k:-1,field:""};let r=!0===ye(t,"idRequired",!1),n=ye(t,"rowsIdOnly",[]);Array.isArray(n)||(n=[]);let s=Object.create(null),i=(e,t)=>{let n=ye(e,"id"),i="number"==typeof n;if(!!(null==n||""===n||i&&!Number.isFinite(n)))return r?{reason:"idInvalid",k:t,field:"id"}:null;if(!er(n)&&!i)return{reason:"idInvalid",k:t,field:"id"};let u=String(n);return er(n)&&Buffer.byteLength(n,"utf8")>1978?{reason:"idTooLong",k:t,field:"id"}:!0===s[u]?{reason:"idDuplicate",k:t,field:"id"}:(s[u]=!0,null)},u=null;return La(e,(e,t)=>{if(u=i(e,t),null!==u)return!1}),null!==u?u:(La(n,e=>{if(u=i(e,-1),null!==u)return!1}),null!==u||La(e,(e,t)=>!(null!==e&&"object"==typeof e&&!Array.isArray(e))||(La(e,(e,r)=>{if(er(e)&&yl(e)!==e)return u={reason:"htmlMarkup",k:t,field:r},!1}),null===u&&void 0)),u)}let Sa=e=>null!==e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).length>0;function Za(e,t,{srLog:r,kmx:n,lockSave:s}){let i=async(i,u,o,l,a={})=>{if(!Array.isArray(o)||!o.every(Sa))return r.error({event:"updateTabItems-validate-error",keyTable:i,msg:"saveRowFieldInvalid",reason:"rowsInvalid",row:-1,field:""}),Promise.reject("saveRowFieldInvalid");let c=ye(a,"pickKeysOnly",null),d=[];return Er(c)||_r(o,e=>{!0===ye(e,"_isNew")&&d.push(ye(e,"id",""))}),await s(`updateTabItems:${i}`,u,()=>n("updateTabItems:"+i,async()=>{if(Er(c)){let t=await e[i].select();o=function(e,t,r,n){let s=Object.create(null);Array.isArray(t)&&_r(t,e=>{let t=ye(e,r,"");er(t)&&(s[t]=e)});let i=fa(e,"order");return i=Ot(i,e=>{let t={...e},i=ye(e,r,""),u=ha(s,i,null);return null!==u&&_r(n,e=>{dn(u,e)&&(t[e]=u[e])}),t}),i}(t,o,l,c),r.info({event:"updateTabItems-pickKeysOnly",keyTable:i,userId:u,pickKeysOnly:c})}o=Ot(o=en(o,da[i].keys),(e,t)=>(e.order=t+1,e));let n=(e,t)=>{let n=null,s=Object.create(null);return _r(e,(e,u)=>{let o=ye(e,t,"");return er(o)?dn(s,o)?(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldDuplicate",row:u,value:o}),n="saveRowFieldDuplicate",!1):void(s[o]=!0):(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldInvalid",row:u}),n="saveRowFieldInvalid",!1)}),n},s=null;if(Aa(i,["targets"])&&(s=n(o,"id"),null!==s))return Promise.reject(s);if(Aa(i,["pemis","grups"])&&(s=n(o,"name"),null!==s))return Promise.reject(s);if(Aa(i,["users"])&&(s=n(o,"email"),null!==s))return Promise.reject(s);o=Ot(o,e=>{let t=ye(e,"id");return"number"==typeof t&&Number.isFinite(t)?{...e,id:String(t)}:e});let a=await e[i].select();if(ys(d)>0){let e=Object.create(null);if(_r(a,t=>{e[ye(t,"id","")]=!0}),d.some(t=>!0===e[t]))return Promise.reject("saveNewRowExists")}let D=o,M=function(e,t,r,n={}){let s=ye(n,"withInfor");Dr(s)||(s=!0);let i={del:[],add:[],same:[],diff:[]};if(!er(r))return console.log("invalid key"),s&&(i.infor={}),i;hr(e)||(e=[e]),hr(t)||(t=[t]),e=ya(e,e=>dn(e,r)),t=ya(t,e=>dn(e,r));let u=new Map(t.map(e=>[e[r],e]));for(let t of e){let e=u.get(t[r]);e?(JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),u.delete(t[r])):i.del.push(t)}if(i.add=Array.from(u.values()),s){let e={};for(let t of i.del)e[t[r]]="del";for(let t of i.add)e[t[r]]="add";for(let t of i.diff)e[t[r]]="diff";for(let t of i.same)e[t[r]]="same";i.infor=e}return i}(a,D,l),w=Ta([...M.add,...M.diff],{rowsIdOnly:M.same});if(null!==w){let e="saveRowFieldInvalid";return"htmlMarkup"===w.reason?e="htmlMarkupNotAllowed":"idDuplicate"===w.reason&&(e="saveRowFieldDuplicate"),r.error({event:"updateTabItems-validate-error",keyTable:i,msg:e,reason:w.reason,row:w.k,field:w.field}),Promise.reject(e)}return ys(M.del)>0&&await t(u,i,"del",M.del),ys(M.add)>0&&await t(u,i,"insert",M.add),ys(M.diff)>0&&await t(u,i,"save",M.diff),D}))},u=(e,t,n)=>{let s=Ya(n),i="string"==typeof n?n:n&&n.message||String(n);return r.error({event:e,userId:t,msg:s,...i!==s?{raw:i}:{}}),s};return{updateTargets:async(e,t)=>{try{await i("targets",e,t,"id")}catch(t){throw u("updateTargets-error",e,t)}return r.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t)=>{try{await i("pemis",e,t,"name")}catch(t){throw u("updatePemis-error",e,t)}return r.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t)=>{try{await i("grups",e,t,"name")}catch(t){throw u("updateGrups-error",e,t)}return r.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,n={})=>{try{await i("users",e,t,"id",n)}catch(t){throw u("updateUsers-error",e,t)}return r.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let va=null;function Ya(e,t="saveWriteFail"){return null===va&&(va=new Set(Object.keys(Ea({}).eng))),"string"==typeof e&&va.has(e)?e:t}let Xa="w-syslog/src/formatter.mjs";function ja(r={}){let n=r.fpSelf,s=r.cwd,i=[],u=e.dirname(e.dirname(n)),o=e.join(u,"src","formatter.mjs");if((r=>{try{return"w-syslog"===JSON.parse(t.readFileSync(e.join(r,"package.json"),"utf8")).name}catch(e){return!1}})(u)&&t.existsSync(o))return{fp:o,by:"pkgRoot"};i.push(`package root of ${n}`);try{return{fp:c.createRequire(n).resolve(Xa),by:"resolveFromSelf"}}catch(e){i.push(`resolve from ${n}`)}try{return{fp:c.createRequire(e.join(s,"index.js")).resolve(Xa),by:"resolveFromCwd"}}catch(e){i.push(`resolve from ${s}`)}throw new Error(`w-syslog: can not resolve transport target ${Xa}, tried: ${i.join("; ")}. When bundling, keep w-syslog installed and list "pino" in external`)}let za="",Ga="wsyslogFormatterError",Wa=e=>{try{return t.statSync(e).isDirectory()}catch(e){return!1}};function Ka(r={}){let n=ln(),s=ye(r,"timeZone",null),i=ye(r,"fdLog");er(i)||(i="./_logs");let u=ye(r,"interval");"day"!==u&&"hr"!==u&&(u="day");let o=ye(r,"numKeep");if(Lr(o)||(o="day"===u?365:8760),o=fr(o),"function"!=typeof a.transport)throw new Error('w-syslog: pino.transport is not a function, pino seems to be bundled as its browser build; list "pino" in external when bundling');if(er(s))try{Intl.DateTimeFormat("en-US",{timeZone:s})}catch(e){throw new Error(`w-syslog: invalid timeZone[${s}]`)}let c=e.resolve(i);if(On(c),!Wa(c))throw new Error(`w-syslog: can not create fdLog[${i}]`);let d=(""===za&&(za=ja({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href),cwd:process.cwd()}).fp),za),M=a.transport({targets:[{level:"info",target:l.pathToFileURL(d).href,options:{interval:u,fdLog:c,timeZone:s}}]});M.unref();let w=!1,y=e=>{try{n.emit("writeError",e)}catch(e){}},g=e=>{w=!0,console.error("w-syslog transport error:",e),y(e)},I=e=>{let t=new Error(ye(e,"message","w-syslog formatter error"));t.code=ye(e,"code"),t.syscall=ye(e,"syscall"),t.path=ye(e,"path"),y(t)};M.on("error",g),M.on(Ga,I);let m=()=>{M.off("error",g),M.off(Ga,I)},C=a(M),p=()=>{try{if(!Wa(c))return;let r="hr"===u?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,s=t.readdirSync(c).filter(e=>r.test(e));s.sort();let l=s.length-o;if(l<=0)return;let a=s.slice(0,l);for(let r of a){let s=e.join(i,r);try{t.unlinkSync(e.join(c,r)),n.emit("delete",{fp:s,fn:r})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}},f=setImmediate(()=>{f=null,p()}),L=setInterval(p,36e5);L.unref();let h=null,b=e=>{let t=C[e].bind(C);return(...r)=>{try{n.emit(e,{args:r})}catch(e){}w||t(...r)}};return n.fatal=b("fatal"),n.error=b("error"),n.warn=b("warn"),n.info=b("info"),n.debug=b("debug"),n.trace=b("trace"),n.cleanLogs=p,n.clear=(e={})=>{if(null!==h)return h;null!==f&&(clearImmediate(f),f=null),clearInterval(L);let t=ye(e,"timeLimit");Lr(t)||(t=6e4),h=Hr();let r=!1,n=()=>{r||(r=!0,M.closed?setImmediate(m):M.once("close",()=>{setImmediate(m)}),h.resolve())},s=setTimeout(()=>{console.error("w-syslog clear: timeout, worker terminated, some logs may be lost");try{M.worker.terminate()}catch(e){}n()},t);try{if(M.closed||M.destroyed)return clearTimeout(s),n(),h;M.once("close",()=>{clearTimeout(s),n()}),M.end()}catch(e){clearTimeout(s),n()}return h},n}function Fa(){let e=ln(),t=Object.create(null);function r(t,r){Mn(e,t,[r],{tag:"cache"})}function n(e,n={}){if(dn(t,e))return;let s=ye(n,"fun");Gr(s)||(s=async()=>{});let i=ye(n,"inputs");hr(i)||(i=[]);let u=ye(n,"timeExpired");Lr(u)||(u=5e3),u=fr(u);let o=ye(n,"timeFrom");"end"!==o&&(o="start");let l=ye(n,"useCacheWhenError");Dr(l)||(l=!1);let a=ye(n,"useCloneDeep");Dr(a)||(a=!0),t[e]={needExec:!0,fun:s,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a},r("message",{fun:"set",key:e,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a})}async function s(e,n={}){if(dn(t,e)){let s=t[e],i=ye(n,"useCloneDeep");if(Dr(i)||(i=s.useCloneDeep),s.pm)return r("message",{fun:"get",key:e,msg:"waiting"}),await s.pm,i?wu(s.value):s.value;let u=Date.now(),o=s.needExec,l=u-s.time;if(o?r("message",{fun:"get",key:e,msg:"execute first"}):s.timeExpired>0&&l>s.timeExpired&&(r("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:l}),o=!0),o){r("message",{fun:"get",key:e,msg:"fun start"}),s.needExec=!1;let t,n,i=s.gen,o=async()=>{try{let t;try{t=await s.fun(...s.inputs)}catch(n){if(r("error",{fun:"get",key:e,msg:n}),!s.useCacheWhenError)throw s.gen===i&&(s.needExec=!0),n;t=void 0}s.gen===i&&(s.value=t,s.time="end"===s.timeFrom?Date.now():u)}finally{s.pm=null,r("message",{fun:"get",key:e,msg:"fun end"})}},l=new Promise((e,r)=>{t=e,n=r});s.pm=l,o().then(t,n),await l}else r("message",{fun:"get",key:e,msg:"use cache"});return i?wu(s.value):s.value}return r("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=n,e.getProxy=async function(e,t={}){return n(e,t),s(e,t)},e.get=s,e.update=function(e,n){dn(t,e)&&(r("message",{fun:"updateValue",key:e}),t[e].value=n,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){dn(t,e)&&(r("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){dn(t,e)&&(r("message",{fun:"remove",key:e}),delete t[e])},e}function ka(r,n=1){return function(e,t=1,r={}){let n=1,s=ye(r,"path"),i=ye(r,"fs");if(!Qr(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&Lr(t)&&(t=fr(t))<1&&(t=1),function e(r){let u=[];return Qr(r,{fs:i})?(_r(i.readdirSync(r),function(o){let l=s.resolve(r,o),a=null;try{a=i.statSync(l)}catch(e){}a&&a.isDirectory()?(u.push({isFolder:!0,level:n,path:l,name:s.basename(l)}),n+=1,(n<=t||null===t)&&(u=u.concat(e(l))),n-=1):u.push({isFolder:!1,level:n,path:l,name:s.basename(l)})}),u):u}(e)}(r,n,{path:e,fs:t})}let Va=new Map,Ha=new Map;function Ua(e){let t=ye(e,"fdLog");return er(t)||(t="./logs"),t}function Ba(e,r,n){let s=ka(e);s=s.filter(e=>!ye(e,"isFolder",!1)),s=function(e,t,r){let n=t.format(r);return ya(e,e=>{let t=ye(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=n.slice(0,t.length)})}(s,r,n);let i=[];for(let e of s)try{let r=t.statSync(e.path);if(!r.isFile())continue;i.push({path:e.path,name:e.name,size:r.size,mtimeMs:r.mtimeMs})}catch(e){}return i}function Qa(e){let t=new Map;return r=>{let n=Math.floor(r/6e4),s=t.get(n);return void 0===s&&(s=Is(6e4*n).format(e),t.set(n,s)),s}}function Ra(e,r){return new Promise((n,s)=>{let i=null,u=t.createReadStream(e,{encoding:"utf8"}),o=d.createInterface({input:u,crlfDelay:1/0});o.on("line",r);let l=e=>{i=e,o.close()};u.on("error",l),o.on("error",l),u.on("close",()=>{i?s(i):n()})})}function Oa(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function Ja(e,t,r,n=null){Gr(n)||(n=Qa(r));let s={minTimeMs:null,ev:{}};return await Ra(e,e=>{let r=Oa(e);if(null===r)return;let i=r.event;if(!er(i))return;let u=function(e){return"number"==typeof e?e:er(e)?Is(e).valueOf():NaN}(r.time);if(Number.isNaN(u))return;if((null===s.minTimeMs||u<s.minTimeMs)&&(s.minTimeMs=u),!(u>t))return;let o=n(u),l=s.ev[o];void 0===l&&(l={count:0,kp:{}},s.ev[o]=l),l.count+=1,l.kp[i]=(l.kp[i]||0)+1}),s}async function Pa(e,t,r){let n=Qa(r),s=[];for(let i of e)try{let e=await Ja(i.path,t,r,n);s.push({name:i.name,ok:!0,agg:e})}catch(e){s.push({name:i.name,ok:!1,err:String(ye(e,"message",e))})}return s}function $a(e,t){for(let r in t.ev){let n=t.ev[r],s=e[r];void 0===s&&(s={count:0,kp:{}},e[r]=s),s.count+=n.count;for(let e in n.kp)s.kp[e]=(s.kp[e]||0)+n.kp[e]}return e}async function _a(t,r={}){let n=!1!==ye(r,"useCache"),s=ye(r,"scanFiles");Gr(s)||(s=Pa);let i=ye(r,"srLog",null),u=Ba(t.fdLog,t.tStart,t.fmt),o=function(e){let t=Va.get(e);return t||(t=new Map,Va.set(e,t)),t}((l=t.fdLog,a=t.fmt,`${e.resolve(l)}|${a}`));var l,a;let c=[],d={};for(let e of u){let r=n?o.get(e.name):void 0;void 0!==r&&r.size===e.size&&r.mtimeMs===e.mtimeMs&&(null===r.minTimeMs||r.minTimeMs>r.scanTStartMs&&r.minTimeMs>t.tStartMs)?d[e.name]=r.agg:c.push(e)}if(n){let e=new Set(u.map(e=>e.name));for(let t of o.keys())e.has(t)||o.delete(t)}let D=[];if(c.length>0){let e=await s(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),r={};for(let t of e)r[t.name]=t;for(let e of c){let s=r[e.name];if(s&&s.ok)d[e.name]=s.agg,n&&o.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:s.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:s.agg});else{let t=ye(s,"err","no result");D.push({name:e.name,err:t}),n&&o.delete(e.name),i&&Gr(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let M={};for(let e of u){let t=d[e.name];t&&$a(M,t)}let w=function(e,t){let r={};for(let e of t)r[e]={count:0};for(let t in e){let n=e[t];r[t]={count:n.count,...n.kp}}return Object.keys(r).sort().map(e=>({time:e,data:r[e]}))}(M,t.kpTime);return{rs:w,stat:{nFiles:u.length,nScanned:c.length,nCached:u.length-c.length,errors:D}}}function qa(t=7,r="hr",n={}){let s=function(e=7,t="hr",r={}){let n=Ua(r),s=function(e){return"day"===e?"day":"hr"}(t),i="day"===s?"YYYY-MM-DD":"YYYY-MM-DDTHH",u="day"===s?"day":"hour",o=ye(r,"timeNow"),l="number"==typeof o?Is(o):Is(),a=l.subtract(e,"day"),c=a.valueOf(),d=a.startOf(u),D=l.startOf(u),M=[];for(;!d.isAfter(D);)M.push(d.format(i)),d=d.add(1,u);return{fdLog:n,timeInterval:s,fmt:i,unit:u,tStart:a,tStartMs:c,kpTime:M,timeNow:l.valueOf()}}(t,r,n),i=JSON.stringify([e.resolve(s.fdLog),t,s.timeInterval,ye(n,"timeNow",null)]);if(Ha.has(i))return Ha.get(i);let u=_a(s,n).finally(()=>{Ha.delete(i)});return Ha.set(i,u),u}function ec(e,t){return null==e?t:"number"==typeof e?e:Is(e).valueOf()}async function tc(e,t){let r={},n=[];for(let s of e)try{await Ra(s.path,e=>{let n=Oa(e);if(null===n)return;let s=n.event;if(!er(s))return;let i=ec(n.time,t),u=(o=(t-i)/36e5)<0?Math.ceil(o)||0:Math.floor(o);var o;u<0||u>24||(r[s]||(r[s]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),u<=24&&(r[s].last1Day+=1),u<=8&&(r[s].last8Hour+=1),u<=4&&(r[s].last4Hour+=1),u<=1&&(r[s].last1Hour+=1))})}catch(e){n.push({name:s.name,err:String(ye(e,"message",e))})}return{kp:r,errors:n}}function rc(r={}){let n=r.fpSelf,s=r.cwd||process.cwd(),i=r.pkgName||"w-web-perm",u=r.rel||"server/staLogs/staLogsCore.shellWorker.mjs",o=r.existsSync||t.existsSync,l=r.readFileSync||t.readFileSync,a=r.createRequire||c.createRequire;if("string"!=typeof n||""===n)throw new Error("invalid fpSelf");let d=[],D=function(t,r){let n=t;for(;;){if(r(e.join(n,"package.json")))return n;let t=e.dirname(n);if(t===n)return"";n=t}}(e.dirname(n),o);if(""===D)d.push(`(a) no package.json above ${e.dirname(n)}`);else{let t="";try{t=JSON.parse(l(e.join(D,"package.json"),"utf8")).name}catch(e){}let r=e.join(D,u);if(t!==i)d.push(`(a) ${e.join(D,"package.json")} name[${t}]`);else{if(o(r))return r;d.push(`(a) ${r}`)}}let M=`${i}/${u}`,w=[["b",n],["c",e.join(s,"noop.js")]];for(let[e,t]of w)try{let r=a(t).resolve(M);if(o(r))return r;d.push(`(${e}) ${r}`)}catch(r){d.push(`(${e}) resolve ${M} from ${t}`)}throw new Error(`cannot resolve ${u} of ${i} (the package must be installed with its server folder), tried: ${d.join("; ")}`)}let nc="";function sc(e,t=""){let r=Hr();if("string"!=typeof t||""===t)try{""===nc&&(nc=rc({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href)})),t=nc}catch(e){return r.reject(e),r}let n=new u.Worker(t),s=!1,i=(e,t)=>{s||(s=!0,e(t));try{n.terminate().catch(()=>{})}catch(e){}};return n.on("message",e=>{"done"===e.mode?i(r.resolve,e.payload):"error"===e.mode&&i(r.reject,e.payload)}),n.on("error",e=>{i(r.reject,e)}),n.on("exit",e=>{i(r.reject,new Error(`staLogs worker exited without result, code=${e}`))}),n.postMessage(e),r}async function ic(e,t,r){return 0===e.length?[]:sc({kind:"scan",files:e,tStartMs:t,fmt:r})}async function uc(e,t){return 0===e.length?{kp:{},errors:[]}:sc({kind:"table",files:e,nowMs:t})}function oc(e={}){return async function(e={}){let t=Ua(e),r=ye(e,"timeNow"),n="number"==typeof r?Is(r):Is(),s=n.valueOf(),i=ye(e,"scanTableFiles");Gr(i)||(i=tc);let u=ye(e,"srLog",null),o=Ba(t,n.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:l,errors:a}=await i(o.map(e=>({path:e.path,name:e.name})),s);for(let e of a)u&&Gr(u.warn)&&u.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in l)c.push({event:e,...l[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:o.length,errors:a}}}({...e,scanTableFiles:uc})}async function lc(e=7,t="hr",r={}){let n=await function(e=7,t="hr",r={}){return qa(e,t,{...r,scanFiles:ic})}(e,t,r);return n.rs}let ac=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],cc=["api/getPermUserInfor-success","api/getUserByToken-success","getStaEvent-success","getStaEventTable-success","getTokenUser-error","getWebInfor-success","updateGrups-success","updatePemis-success","updateTabItems-pickKeysOnly","updateTargets-success","updateUsers-success","verifyConn","verifyConn-error"];function dc(e="hr",t=!0){let r="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,i=function(e){return"many"===e?cc:ac}(t),u=Is("2025-01-01T00:00:00"),o=[];for(let e=0;e<s;e++){let t=u.add(e,n),s={count:0};i.forEach((t,r)=>{let n=Math.round(20+15*Math.sin((e+3*r)/4));s[t]=n,s.count+=n}),o.push({time:t.format(r),data:s})}return o}function Dc(e={}){let t=ye(e,"fdLog","");er(t)||(t="./logs");let r=ye(e,"mock",!1),n=ye(e,"srLog",null),s=async(e=7,s="hr")=>{if(r)return dc(s,r);return await lc(e,s,{fdLog:t,srLog:n})},i=Fa(),u=async()=>{if(r)return function(e=!0){if("many"!==e)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];return cc.map((e,t)=>{let r=400-20*t;return{event:e,last1Day:r,last8Hour:Math.round(.4*r),last4Hour:Math.round(.2*r),last1Hour:Math.round(.05*r)}})}(r);let e=await async function(e={}){return(await oc(e)).rs}({fdLog:t,srLog:n});return e},o=Fa(),l={getStaEvent:async(e,t=7,r="hr")=>{let n=`${t}:${r}`,u=await i.getProxy(n,{fun:s,inputs:[t,r],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(u)?u:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await o.getProxy("staEventTable",{fun:u,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return l}function Mc(e){return Array.from(e,e=>{let t=e.charCodeAt(0);return t<32||127===t?"?":e}).join("")}function wc(e){if(hr(e))return e.map(wc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=e.length,r=Math.min(4,Math.floor(t/8));return 0===r?`(len=${t})`:`${Mc(e.slice(0,r))}...${Mc(e.slice(-r))}(len=${t})`}function yc(e){if(null===e||"object"!=typeof e||hr(e))return wc(e);let t={};for(let r of Object.keys(e))t[r]="token"===r.toLowerCase()?wc(e[r]):e[r];return t}function gc(e){if(hr(e))return e.map(gc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=null;try{t=new URL(e)}catch(e){return"(invalid-url)"}return"http:"!==t.protocol&&"https:"!==t.protocol?t.protocol:`${t.origin}${t.pathname}`}let Ic=["invalidUrl","invalidTokenSelf","invalidTokenTar","invalidUserIdTar","noTokenKeyValueInUrl","noTokenKeyUserIdInUrl","noTokenInUrl","cannotGetUserByUrl","cannotGetUsersByUrl","cannotGetUserDataByUrl","cannotGetUsersDataByUrl","noUserDataByUrl","noUsersDataByUrl","noUserDataAfterConvert"],mc=/^[A-Za-z]{1,40}$/;function Cc(e,t={}){let r=ye(t,"failValue",null),n=ye(t,"onFail",null);return async(...t)=>{try{return await e(...t)}catch(e){if(Gr(n))try{n(function(e){let t=er(e)?e:ye(e,"message");if(er(t)&&Ic.includes(t))return{upstream:t};let r=null===e?"null":hr(e)?"array":typeof e,n=ye(e,"name");return{upstreamType:r,upstreamName:er(n)&&mc.test(n)?n:""}}(e))}catch(e){}return r}}}function pc({srLog:e}){return({userId:t,tableName:r,methodName:n})=>{let s="";return er(t)?"select"!==n&&(s="userNoPermission"):s="cannotFindUserId",""===s||(e.error({event:"authorizeExec",ok:!1,msg:s,userId:t,tableName:r,methodName:n}),!1)}}function fc(e,{srLog:t}){return async(r,n,s,i)=>{try{return await e(r,n,s,i)}catch(e){let i="string"==typeof e?e:e&&e.message||String(e);return t.error({event:"operOrm-error",msg:"anUnexpectedErrorOccurred",raw:i,userId:r,tableName:n,methodName:s}),Promise.reject("anUnexpectedErrorOccurred")}}}return function(r,n,s,i,u,o,l={}){let a=null;if(!Gr(r))throw console.log("invalid WOrm",r),new Error("invalid WOrm");if(!er(n))throw console.log("invalid url",n),new Error("invalid url");if(!er(s))throw console.log("invalid db",s),new Error("invalid db");if(!Gr(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!Gr(u))throw console.log("invalid verifyClientUser",u),new Error("invalid verifyClientUser");if(!Gr(o))throw console.log("invalid verifyAppUser",o),new Error("invalid verifyAppUser");let c=ye(l,"serverPort");Lr(c)||(c=11006),c=fr(c);let d=ye(l,"webName",{}),D=ye(l,"webDescription",{}),M=ye(l,"webLogo",""),w=ye(l,"subfolder","");var y,g;er(w)&&("/"===Vr(w,1)&&(g=1,w=er(y=w)&&Fr(g)?0===(g=fr(g))?y:kr(y,y.length-g):""),"/"!==kr(w,1)&&(w=`/${w}`));let I=ye(l,"urlRedirect",""),m=ye(l,"showLanguage","n"),C=ye(l,"language","eng"),p=ye(l,"showModeEditTargets","n"),f=ye(l,"showModeEditPemis","n"),L=ye(l,"showModeEditGrups","n"),h=ye(l,"showModeEditUsers","n"),b=ye(l,"modeEditTargets","n"),N=ye(l,"modeEditPemis","n"),A=ye(l,"modeEditGrups","n"),x=ye(l,"modeEditUsers","n"),E=ye(l,"widthTargetId",""),T=ye(l,"widthTargetDescription",""),S=ye(l,"widthPemisName",""),Z=ye(l,"widthPemisDescription",""),v=ye(l,"widthGrupsName",""),Y=ye(l,"widthGrupsDescription",""),X=ye(l,"widthUsersName",""),j=ye(l,"widthUsersEmail",""),z=ye(l,"widthUsersDescription",""),G=ye(l,"mappingBy","");"id"!==G&&"email"!==G&&"name"!==G&&(G="id");let W=ye(l,"kpLangExt",null),K=Ea({kpLangExt:W,webName:d,webDescription:D}),F=((e={})=>{let t=ye(e,"logFd","");er(t)||(t="./logs");let r=ye(e,"logInterval","");er(r)||(r="hr");let n=ye(e,"logNumKeep",null),s={fdLog:t,interval:r};if(null!=n&&""!==n){if(!Lr(n))throw new Error(`invalid logNumKeep[${n}], must be positive integer`);s.numKeep=fr(n)}return Ka(s)})(l);try{Qu(l)}catch(e){throw F.error({event:"WWebPerm-init-error",msg:e.message}),e}let k=e=>t=>{F.warn({event:`inject-${e}-fail`,...t})};i=Cc(i,{failValue:null,onFail:k("getUserByToken")}),u=Cc(u,{failValue:!1,onFail:k("verifyClientUser")}),o=Cc(o,{failValue:!1,onFail:k("verifyAppUser")});let V={};try{V=Jl(da,r,n,s)}catch(e){throw console.log(e),F.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:H,procOrm:U}=V,B=new function(){let e=new Map,t=new Map;return async(r,n)=>{let s=(e.get(r)||Promise.resolve()).then(async()=>await n(),async()=>await n());e.set(r,s.catch(()=>{})),t.set(r,(t.get(r)||0)+1);try{return await s}finally{let n=t.get(r)-1;n<=0?(t.delete(r),e.delete(r)):t.set(r,n)}}},Q=function(e){return async(t,r,n,s={})=>{let i=ye(s,"errKey","");er(i)||(i="saveInProgress");let u=`${t}:${r}`;return await e.setWithFree([u],n).catch(e=>e===`setWithFree: key in use: ${u}`?Promise.reject(i):Promise.reject(e))}}(Dn()),R=Za(H,U,{srLog:F,kmx:B,lockSave:Q}),O=ye(l,"logFd","");er(O)||(O="./logs");let J=Dc({fdLog:O,mock:ye(l,"staEventMock",!1),srLog:F}),P=async e=>{let t=null;if(er(e)&&(t=i(e),Wr(t)&&(t=await t)),!_t(t))return console.log("token",wc(e)),F.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!er(ye(e,"id","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!er(ye(e,"email","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!er(ye(e,"name","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=ye(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),F.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let r=ye(t,G,"");if(!er(r))return console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:G}),Promise.reject("cannotGetUserProp");let n=await H.users.select({[G]:r,isActive:"y"});return n=ye(n,0,null),_t(n)?n:(console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:G}),Promise.reject("cannotGetUserFromPerm"))},$=async(e,t="")=>{let r=await P(e),n=u(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},_=async(e,t="")=>{let r=null;if(er(e)&&(r=i(e),Wr(r)&&(r=await r)),!_t(r))return console.log("token",wc(e)),F.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let n=o(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},q=async(e,t="")=>(await $(e,t),!0),ee=async(e,t,r)=>await B("syncAndReplaceTabs:"+r,async()=>{let n=ye(t,"from","");if(!er(n))return console.log("inp",t),F.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:r}),Promise.reject("invalidFrom");let s=ye(t,"rows",[]);if(!Er(s))return console.log("inp",t),console.log("keyTable",r),F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:r}),Promise.reject("invalidRows");let i=s.findIndex(e=>!Sa(e));if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowInvalid",keyTable:r,from:n,row:i}),Promise.reject("invalidRows");s=Ot(s,(e,t)=>(e.from=n,e)),s=en(s,da[r].keys);let u={from:!0,userId:!0,timeCreate:!0,userIdUpdate:!0,timeUpdate:!0},o=s.findIndex(e=>!Object.keys(e).some(t=>{return!0!==u[t]&&("string"==typeof(r=e[t])&&""!==r||"number"==typeof r&&Number.isFinite(r)||"boolean"==typeof r);var r}));if(o>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowBlank",keyTable:r,from:n,row:o}),Promise.reject("invalidRows");let l=Ta(s);if(null!==l){let e="htmlMarkup"===l.reason?"htmlMarkupNotAllowed":"invalidRows";return F.error({event:"syncAndReplaceTabs-error",msg:e,reason:l.reason,keyTable:r,from:n,row:l.k,field:l.field}),Promise.reject(e)}let a=e=>{let t=ye(e,"id");return er(t)||"number"==typeof t&&Number.isFinite(t)?String(t):null},c=s.map(a).filter(e=>null!==e);if(c.length>0){let e=null;try{e=await H[r].select({id:{$in:c}})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e,"anUnexpectedErrorOccurred");return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=new Map;for(let r of e)t.set(String(r.id),r.from);let i=s.findIndex(e=>{let r=a(e);return null!==r&&t.has(r)&&t.get(r)!==n});if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"idOtherFrom",keyTable:r,from:n,row:i,field:"id"}),Promise.reject("invalidRows")}let d=null;try{await H[r].delAll({from:n}),d=await U(e,r,"insert",s)}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e);return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n}),Promise.reject(s)}return d}),te=async e=>{let t=await(async(e,t)=>{let r=await H.users.select({[e]:t,isActive:"y"});return r=ye(r,0,null),_t(r)?r:null})("id",e);return _t(t)?t:null},re=async e=>{let t=await te(e),r=ba(t,await H.grups.select(),await H.pemis.select(),await H.targets.select());if(!_t(r))return console.log("userId",e),F.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let n=Ot(ye(r,"grups",[]),"name");return n=Pt(n,";"),{user:{...t,grupsNames:n},rules:ye(r,"rules",[])}},ne="dist",se="./node_modules/w-web-perm/dist";Rr(se)&&(ne=se);let ie="index.html";try{let r=e.resolve(ne,"index.tmp");if(Jr(r)||(r=e.resolve(ne,ie)),!Jr(r))throw console.log("fpEntryIn",r),new Error("invalid fpEntryIn");let n=e.resolve(ne,ie),s=t.readFileSync(r,"utf8");s=Pr(s,"/mperm/","{sfd}/"),s=Pr(s,"{sfd}",w),s=Pr(s,"{urlRedirect}",I),s=Pr(s,"{language}",C),t.writeFileSync(n,s,"utf8")}catch(e){console.log(e),console.log(`can not generate ${ie}`)}let ue=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getUserByToken/check token: invalid token"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getUserByToken");return _t(r)?(F.info({event:"api/getUserByToken-success",userId:ye(r,"id","")}),r):(console.log("token",wc(t)),console.log("[API]getUserByToken/check user: invalid user"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getPerm/check token: invalid token"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getPerm");if(!_t(r))return console.log("token",wc(t)),console.log("[API]getPerm/check userSelf: invalid userSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=ye(r,"id","");if(!er(n))return console.log("token",wc(t)),console.log("userSelf",r),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await re(n);return _t(s)?(F.info({event:"api/getPerm-success",userId:n}),s):(console.log("token",wc(t)),console.log("userSelf",r),console.log("userIdSelf",n),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!_t(await _(t,"getPermUserInfor")))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.userId","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await re(r);return _t(n)?(F.info({event:"api/getPermUserInfor-success",userId:r}),n):(console.log("userIdFind",r),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),F.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.keyTable","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("keyTable",r),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(r))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",r),F.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:r}),Promise.reject("invalidKeyTable");let n=await _(t,"syncAndReplaceTabs");if(!_t(n))return console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=ye(n,"id","");if(!er(s))return console.log("token",wc(t)),console.log("user",n),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=ye(e,"payload");if(er(t)&&(t=Kr(t)),!_t(t))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let r=ye(t,"from","");if(!er(r))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let n=ye(t,"rows",[]);return Er(n)?{from:r,rows:n}:(console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),u=await ee(s,i,r);return F.info({event:"api/syncAndReplaceTabs-success",userId:s,keyTable:r}),u})();return zr(r.msg)&&(r.msg=r.msg.message),r}}],oe=at(da),le=oe,ae={port:c,pathStaticFiles:ne,apiName:"api",apis:ue,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:r,headers:n,req:s})=>{let i=function(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?e:Vr(e,e.length-t):""}(t,7);if(!er(i))return console.log("apiType",e),console.log("authorization",wc(t)),console.log("invalid token"),F.error({event:"verifyConn-error",ok:!1,apiType:e,msg:"tokenNoPermission"}),!1;let u=!1,o="";await q(i,e).then(()=>{u=!0}).catch(e=>{o="string"==typeof e?e:e&&e.message||"checkTokenFail"});let l=ye(n,"x-forwarded-for","").split(",")[0].trim();er(l)||(l=ye(s,"info.remoteAddress","")||ye(s,"socket.remoteAddress","")||ye(s,"connection.remoteAddress",""));let a=ye(n,"origin",""),c=gc(ye(n,"referer",""));return u?F.info({event:"verifyConn",ok:u,apiType:e,ip:l,origin:a,referer:c}):F.error({event:"verifyConn-error",ok:u,apiType:e,ip:l,origin:a,referer:c,msg:o}),u},getUserIdByToken:async e=>{let t=ye(await i(e),"id","");return er(t)?t:(console.log("token",wc(e)),console.log("userId",t),F.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:H,operOrm:fc(U,{srLog:F}),tableNamesExec:oe,methodsExec:["select"],authorizeExec:pc({srLog:F}),tableNamesSync:le,kpFunExt:{getWebInfor:e=>(F.info({event:"getWebInfor-success",userId:e}),{webLogo:M,showLanguage:m,language:C,kpLang:K,showModeEditTargets:p,showModeEditPemis:f,showModeEditGrups:L,showModeEditUsers:h,modeEditTargets:b,modeEditPemis:N,modeEditGrups:A,modeEditUsers:x,widthTargetId:E,widthTargetDescription:T,widthPemisName:S,widthPemisDescription:Z,widthGrupsName:v,widthGrupsDescription:Y,widthUsersName:X,widthUsersEmail:j,widthUsersDescription:z}),updateTargets:R.updateTargets,updatePemis:R.updatePemis,updateGrups:R.updateGrups,updateUsers:(e,t)=>{let r="for:grups"===x?{pickKeysOnly:["cgrups"]}:{};return R.updateUsers(e,t,r)},getStaEvent:async(e,t,r)=>{try{let n=await J.getStaEvent(e,t,r);return F.info({event:"getStaEvent-success",userId:e}),n}catch(t){throw F.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await J.getStaEventTable(e);return F.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw F.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"};try{a=new Hu(ae)}catch(e){throw console.log(e),F.error({event:"WServHapiServer-init-error",msg:e&&e.message||"WServHapiServerInitFailed"}),e}return a}});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("path"),require("fs"),require("@hapi/hapi"),require("@hapi/inert"),require("stream"),require("http"),require("worker_threads"),require("util"),require("url"),require("pino"),require("module"),require("readline")):"function"==typeof define&&define.amd?define(["path","fs","@hapi/hapi","@hapi/inert","stream","http","worker_threads","util","url","pino","module","readline"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-web-perm"]=t(e.path,e.fs,e["@hapi/hapi"],e["@hapi/inert"],e.stream,e.http,e.require$$0$1,e.util$2,e.url,e.pino,e.module$1,e.readline)}(this,function(e,t,r,n,s,i,u,o,l,a,c,d){"use strict";var D="undefined"!=typeof document?document.currentScript:null,M=Array.isArray,w="object"==typeof global&&global&&global.Object===Object&&global,y="object"==typeof self&&self&&self.Object===Object&&self,g=w||y||Function("return this")(),I=g.Symbol,m=Object.prototype,C=m.hasOwnProperty,p=m.toString,f=I?I.toStringTag:void 0;var L=Object.prototype.toString;var h=I?I.toStringTag:void 0;function b(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?function(e){var t=C.call(e,f),r=e[f];try{e[f]=void 0;var n=!0}catch(e){}var s=p.call(e);return n&&(t?e[f]=r:delete e[f]),s}(e):function(e){return L.call(e)}(e)}function N(e){return null!=e&&"object"==typeof e}function A(e){return"symbol"==typeof e||N(e)&&"[object Symbol]"==b(e)}var x=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/;function T(e,t){if(M(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!A(e))||(E.test(e)||!x.test(e)||null!=t&&e in Object(t))}function S(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Z(e){if(!S(e))return!1;var t=b(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var v,Y=g["__core-js_shared__"],X=(v=/[^.]+$/.exec(Y&&Y.keys&&Y.keys.IE_PROTO||""))?"Symbol(src)_1."+v:"";var j=Function.prototype.toString;function z(e){if(null!=e){try{return j.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var G=/^\[object .+?Constructor\]$/,W=Function.prototype,K=Object.prototype,F=W.toString,k=K.hasOwnProperty,V=RegExp("^"+F.call(k).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function H(e){return!(!S(e)||(t=e,X&&X in t))&&(Z(e)?V:G).test(z(e));var t}function U(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return H(r)?r:void 0}var B=U(Object,"create");var Q=Object.prototype.hasOwnProperty;var R=Object.prototype.hasOwnProperty;function O(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function P(e,t){return e===t||e!=e&&t!=t}function J(e,t){for(var r=e.length;r--;)if(P(e[r][0],t))return r;return-1}O.prototype.clear=function(){this.__data__=B?B(null):{},this.size=0},O.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},O.prototype.get=function(e){var t=this.__data__;if(B){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return Q.call(t,e)?t[e]:void 0},O.prototype.has=function(e){var t=this.__data__;return B?void 0!==t[e]:R.call(t,e)},O.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=B&&void 0===t?"__lodash_hash_undefined__":t,this};var $=Array.prototype.splice;function _(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}_.prototype.clear=function(){this.__data__=[],this.size=0},_.prototype.delete=function(e){var t=this.__data__,r=J(t,e);return!(r<0)&&(r==t.length-1?t.pop():$.call(t,r,1),--this.size,!0)},_.prototype.get=function(e){var t=this.__data__,r=J(t,e);return r<0?void 0:t[r][1]},_.prototype.has=function(e){return J(this.__data__,e)>-1},_.prototype.set=function(e,t){var r=this.__data__,n=J(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var q=U(g,"Map");function ee(e,t){var r,n,s=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?s["string"==typeof t?"string":"hash"]:s.map}function te(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}te.prototype.clear=function(){this.size=0,this.__data__={hash:new O,map:new(q||_),string:new O}},te.prototype.delete=function(e){var t=ee(this,e).delete(e);return this.size-=t?1:0,t},te.prototype.get=function(e){return ee(this,e).get(e)},te.prototype.has=function(e){return ee(this,e).has(e)},te.prototype.set=function(e,t){var r=ee(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function re(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,s=t?t.apply(this,n):n[0],i=r.cache;if(i.has(s))return i.get(s);var u=e.apply(this,n);return r.cache=i.set(s,u)||i,u};return r.cache=new(re.Cache||te),r}re.Cache=te;var ne=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/\\(\\)?/g,ie=function(e){var t=re(e,function(e){return 500===r.size&&r.clear(),e}),r=t.cache;return t}(function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ne,function(e,r,n,s){t.push(n?s.replace(se,"$1"):r||e)}),t}),ue=ie;function oe(e,t){for(var r=-1,n=null==e?0:e.length,s=Array(n);++r<n;)s[r]=t(e[r],r,e);return s}var le=I?I.prototype:void 0,ae=le?le.toString:void 0;function ce(e){if("string"==typeof e)return e;if(M(e))return oe(e,ce)+"";if(A(e))return ae?ae.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function de(e){return null==e?"":ce(e)}function De(e,t){return M(e)?e:T(e,t)?[e]:ue(de(e))}function Me(e){if("string"==typeof e||A(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function we(e,t){for(var r=0,n=(t=De(t,e)).length;null!=e&&r<n;)e=e[Me(t[r++])];return r&&r==n?e:void 0}function ye(e,t,r){var n=null==e?void 0:we(e,t);return void 0===n?r:n}function ge(e){var t=this.__data__=new _(e);this.size=t.size}ge.prototype.clear=function(){this.__data__=new _,this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ge.prototype.get=function(e){return this.__data__.get(e)},ge.prototype.has=function(e){return this.__data__.has(e)},ge.prototype.set=function(e,t){var r=this.__data__;if(r instanceof _){var n=r.__data__;if(!q||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new te(n)}return r.set(e,t),this.size=r.size,this};function Ie(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new te;++t<r;)this.add(e[t])}function me(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function Ce(e,t){return e.has(t)}Ie.prototype.add=Ie.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Ie.prototype.has=function(e){return this.__data__.has(e)};function pe(e,t,r,n,s,i){var u=1&r,o=e.length,l=t.length;if(o!=l&&!(u&&l>o))return!1;var a=i.get(e),c=i.get(t);if(a&&c)return a==t&&c==e;var d=-1,D=!0,M=2&r?new Ie:void 0;for(i.set(e,t),i.set(t,e);++d<o;){var w=e[d],y=t[d];if(n)var g=u?n(y,w,d,t,e,i):n(w,y,d,e,t,i);if(void 0!==g){if(g)continue;D=!1;break}if(M){if(!me(t,function(e,t){if(!Ce(M,t)&&(w===e||s(w,e,r,n,i)))return M.push(t)})){D=!1;break}}else if(w!==y&&!s(w,y,r,n,i)){D=!1;break}}return i.delete(e),i.delete(t),D}var fe=g.Uint8Array;function Le(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function he(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var be=I?I.prototype:void 0,Ne=be?be.valueOf:void 0;function Ae(e,t){for(var r=-1,n=t.length,s=e.length;++r<n;)e[s+r]=t[r];return e}function xe(e,t,r){var n=t(e);return M(e)?n:Ae(n,r(e))}function Ee(e,t){for(var r=-1,n=null==e?0:e.length,s=0,i=[];++r<n;){var u=e[r];t(u,r,e)&&(i[s++]=u)}return i}function Te(){return[]}var Se=Object.prototype.propertyIsEnumerable,Ze=Object.getOwnPropertySymbols,ve=Ze?function(e){return null==e?[]:(e=Object(e),Ee(Ze(e),function(t){return Se.call(e,t)}))}:Te;function Ye(e){return N(e)&&"[object Arguments]"==b(e)}var Xe=Object.prototype,je=Xe.hasOwnProperty,ze=Xe.propertyIsEnumerable,Ge=Ye(function(){return arguments}())?Ye:function(e){return N(e)&&je.call(e,"callee")&&!ze.call(e,"callee")},We=Ge;var Ke="object"==typeof exports&&exports&&!exports.nodeType&&exports,Fe=Ke&&"object"==typeof module&&module&&!module.nodeType&&module,ke=Fe&&Fe.exports===Ke?g.Buffer:void 0,Ve=(ke?ke.isBuffer:void 0)||function(){return!1},He=/^(?:0|[1-9]\d*)$/;function Ue(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&He.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Qe={};function Re(e){return function(t){return e(t)}}Qe["[object Float32Array]"]=Qe["[object Float64Array]"]=Qe["[object Int8Array]"]=Qe["[object Int16Array]"]=Qe["[object Int32Array]"]=Qe["[object Uint8Array]"]=Qe["[object Uint8ClampedArray]"]=Qe["[object Uint16Array]"]=Qe["[object Uint32Array]"]=!0,Qe["[object Arguments]"]=Qe["[object Array]"]=Qe["[object ArrayBuffer]"]=Qe["[object Boolean]"]=Qe["[object DataView]"]=Qe["[object Date]"]=Qe["[object Error]"]=Qe["[object Function]"]=Qe["[object Map]"]=Qe["[object Number]"]=Qe["[object Object]"]=Qe["[object RegExp]"]=Qe["[object Set]"]=Qe["[object String]"]=Qe["[object WeakMap]"]=!1;var Oe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Pe=Oe&&"object"==typeof module&&module&&!module.nodeType&&module,Je=Pe&&Pe.exports===Oe&&w.process,$e=function(){try{var e=Pe&&Pe.require&&Pe.require("util").types;return e||Je&&Je.binding&&Je.binding("util")}catch(e){}}(),_e=$e&&$e.isTypedArray,qe=_e?Re(_e):function(e){return N(e)&&Be(e.length)&&!!Qe[b(e)]},et=Object.prototype.hasOwnProperty;function tt(e,t){var r=M(e),n=!r&&We(e),s=!r&&!n&&Ve(e),i=!r&&!n&&!s&&qe(e),u=r||n||s||i,o=u?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],l=o.length;for(var a in e)!t&&!et.call(e,a)||u&&("length"==a||s&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ue(a,l))||o.push(a);return o}var rt=Object.prototype;function nt(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||rt)}function st(e,t){return function(r){return e(t(r))}}var it=st(Object.keys,Object),ut=Object.prototype.hasOwnProperty;function ot(e){if(!nt(e))return it(e);var t=[];for(var r in Object(e))ut.call(e,r)&&"constructor"!=r&&t.push(r);return t}function lt(e){return null!=e&&Be(e.length)&&!Z(e)}function at(e){return lt(e)?tt(e):ot(e)}function ct(e){return xe(e,at,ve)}var dt=Object.prototype.hasOwnProperty;var Dt=U(g,"DataView"),Mt=U(g,"Promise"),wt=U(g,"Set"),yt=U(g,"WeakMap"),gt="[object Map]",It="[object Promise]",mt="[object Set]",Ct="[object WeakMap]",pt="[object DataView]",ft=z(Dt),Lt=z(q),ht=z(Mt),bt=z(wt),Nt=z(yt),At=b;(Dt&&At(new Dt(new ArrayBuffer(1)))!=pt||q&&At(new q)!=gt||Mt&&At(Mt.resolve())!=It||wt&&At(new wt)!=mt||yt&&At(new yt)!=Ct)&&(At=function(e){var t=b(e),r="[object Object]"==t?e.constructor:void 0,n=r?z(r):"";if(n)switch(n){case ft:return pt;case Lt:return gt;case ht:return It;case bt:return mt;case Nt:return Ct}return t});var xt=At,Et="[object Arguments]",Tt="[object Array]",St="[object Object]",Zt=Object.prototype.hasOwnProperty;function vt(e,t,r,n,s,i){var u=M(e),o=M(t),l=u?Tt:xt(e),a=o?Tt:xt(t),c=(l=l==Et?St:l)==St,d=(a=a==Et?St:a)==St,D=l==a;if(D&&Ve(e)){if(!Ve(t))return!1;u=!0,c=!1}if(D&&!c)return i||(i=new ge),u||qe(e)?pe(e,t,r,n,s,i):function(e,t,r,n,s,i,u){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new fe(e),new fe(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return P(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var o=Le;case"[object Set]":var l=1&n;if(o||(o=he),e.size!=t.size&&!l)return!1;var a=u.get(e);if(a)return a==t;n|=2,u.set(e,t);var c=pe(o(e),o(t),n,s,i,u);return u.delete(e),c;case"[object Symbol]":if(Ne)return Ne.call(e)==Ne.call(t)}return!1}(e,t,l,r,n,s,i);if(!(1&r)){var w=c&&Zt.call(e,"__wrapped__"),y=d&&Zt.call(t,"__wrapped__");if(w||y){var g=w?e.value():e,I=y?t.value():t;return i||(i=new ge),s(g,I,r,n,i)}}return!!D&&(i||(i=new ge),function(e,t,r,n,s,i){var u=1&r,o=ct(e),l=o.length;if(l!=ct(t).length&&!u)return!1;for(var a=l;a--;){var c=o[a];if(!(u?c in t:dt.call(t,c)))return!1}var d=i.get(e),D=i.get(t);if(d&&D)return d==t&&D==e;var M=!0;i.set(e,t),i.set(t,e);for(var w=u;++a<l;){var y=e[c=o[a]],g=t[c];if(n)var I=u?n(g,y,c,t,e,i):n(y,g,c,e,t,i);if(!(void 0===I?y===g||s(y,g,r,n,i):I)){M=!1;break}w||(w="constructor"==c)}if(M&&!w){var m=e.constructor,C=t.constructor;m==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof C&&C instanceof C||(M=!1)}return i.delete(e),i.delete(t),M}(e,t,r,n,s,i))}function Yt(e,t,r,n,s){return e===t||(null==e||null==t||!N(e)&&!N(t)?e!=e&&t!=t:vt(e,t,r,n,Yt,s))}function Xt(e){return e==e&&!S(e)}function jt(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function zt(e){var t=function(e){for(var t=at(e),r=t.length;r--;){var n=t[r],s=e[n];t[r]=[n,s,Xt(s)]}return t}(e);return 1==t.length&&t[0][2]?jt(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var s=r.length,i=s,u=!n;if(null==e)return!i;for(e=Object(e);s--;){var o=r[s];if(u&&o[2]?o[1]!==e[o[0]]:!(o[0]in e))return!1}for(;++s<i;){var l=(o=r[s])[0],a=e[l],c=o[1];if(u&&o[2]){if(void 0===a&&!(l in e))return!1}else{var d=new ge;if(n)var D=n(a,c,l,e,t,d);if(!(void 0===D?Yt(c,a,3,n,d):D))return!1}}return!0}(r,e,t)}}function Gt(e,t){return null!=e&&t in Object(e)}function Wt(e,t){return null!=e&&function(e,t,r){for(var n=-1,s=(t=De(t,e)).length,i=!1;++n<s;){var u=Me(t[n]);if(!(i=null!=e&&r(e,u)))break;e=e[u]}return i||++n!=s?i:!!(s=null==e?0:e.length)&&Be(s)&&Ue(u,s)&&(M(e)||We(e))}(e,t,Gt)}function Kt(e){return e}function Ft(e){return function(t){return null==t?void 0:t[e]}}function kt(e){return T(e)?Ft(Me(e)):function(e){return function(t){return we(t,e)}}(e)}function Vt(e){return"function"==typeof e?e:null==e?Kt:"object"==typeof e?M(e)?function(e,t){return T(e)&&Xt(t)?jt(Me(e),t):function(r){var n=ye(r,e);return void 0===n&&n===t?Wt(r,e):Yt(t,n,3)}}(e[0],e[1]):zt(e):kt(e)}var Ht,Ut=function(e,t,r){for(var n=-1,s=Object(e),i=r(e),u=i.length;u--;){var o=i[Ht?u:++n];if(!1===t(s[o],o,s))break}return e};var Bt=function(e,t){return function(r,n){if(null==r)return r;if(!lt(r))return e(r,n);for(var s=r.length,i=t?s:-1,u=Object(r);(t?i--:++i<s)&&!1!==n(u[i],i,u););return r}}(function(e,t){return e&&Ut(e,t,at)}),Qt=Bt;function Rt(e,t){var r=-1,n=lt(e)?Array(e.length):[];return Qt(e,function(e,s,i){n[++r]=t(e,s,i)}),n}function Ot(e,t){return(M(e)?oe:Rt)(e,Vt(t))}var Pt=Array.prototype.join;function Jt(e,t){return null==e?"":Pt.call(e,t)}function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}function _t(e){if($t(e)){for(let t in e)return!0;return!1}return!1}function qt(e){return"[object String]"===Object.prototype.toString.call(e)}function er(e){return!!(qt(e)&&e.length>0)}var tr=/\s/;var rr=/^\s+/;function nr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&tr.test(e.charAt(t)););return t}(e)+1).replace(rr,""):e}var sr=/^[-+]0x[0-9a-f]+$/i,ir=/^0b[01]+$/i,ur=/^0o[0-7]+$/i,or=parseInt;function lr(e){if("number"==typeof e)return e;if(A(e))return NaN;if(S(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=S(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=nr(e);var r=ir.test(e);return r||ur.test(e)?or(e.slice(2),r?2:8):sr.test(e)?NaN:+e}var ar=1/0;function cr(e){return e?(e=lr(e))===ar||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function dr(e){var t=cr(e),r=t%1;return t==t?r?t-r:t:0}function Dr(e){return!0===(t=e)||!1===t||N(t)&&"[object Boolean]"==b(t);var t}function Mr(e){if(e!=e)return!0;if(null!==e&&"object"==typeof e)try{let t=Number.prototype.valueOf.call(e);return Number.isNaN(t)}catch(e){return!1}return!1}function wr(e){let t=!1;if(er(e)){if(""===e.trim())return!1;t=!isNaN(Number(e))}else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(Mr(e))return!1;t=!0}return t}function yr(e){if(!wr(e))return 0;return cr(e)}function gr(e,t={}){let r=ye(t,"useLimitSafe",null);return Dr(r)||(r=!1),!!wr(e)&&(e=yr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==dr(n));var n}var Ir=g.isFinite,mr=Math.min;var Cr,pr=(Cr=Math["round"],function(e,t){if(e=lr(e),(t=null==t?0:mr(dr(t),292))&&Ir(e)){var r=(de(e)+"e").split("e");return+((r=(de(Cr(r[0]+"e"+(+r[1]+t)))+"e").split("e"))[0]+"e"+(+r[1]-t))}return Cr(e)});function fr(e,t={}){let r=ye(t,"useClampSafe",null);Dr(r)||(r=!1);let n=ye(t,"useLimitSafe",null);Dr(n)||(n=!1);let s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"success",msg:e}:e,u=e=>{if(s)return{state:"error",msg:e};throw new Error(e)};if(!wr(e))return i(0);let o=null;try{e=yr(e),o=pr(e),r&&(o>Number.MAX_SAFE_INTEGER?o=Number.MAX_SAFE_INTEGER:o<Number.MIN_SAFE_INTEGER&&(o=Number.MIN_SAFE_INTEGER))}catch(e){return u(e.toString())}return n&&!Number.isSafeInteger(Number(o))?u(`v[${e}] is not a safe integer`):("0"===String(o)&&(o=0),i(o))}function Lr(e,t={}){if(!gr(e,t))return!1;return fr(e)>0}function hr(e){return"[object Array]"===Object.prototype.toString.call(e)}function br(e){return"[object Undefined]"===Object.prototype.toString.call(e)}function Nr(e){if($t(e)){for(let t in e)return!1;return!0}return!1}function Ar(e){return!!hr(e)&&0===e.length}function xr(e){return!!br(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!Nr(e)||(!!function(e){return!(!qt(e)||0!==e.length)}(e)||(!!Ar(e)||!!Mr(e)))))}function Er(e){return!!hr(e)&&(0!==e.length&&(1!==e.length||!xr(e[0])))}var Tr=st(Object.getPrototypeOf,Object),Sr=Function.prototype,Zr=Object.prototype,vr=Sr.toString,Yr=Zr.hasOwnProperty,Xr=vr.call(Object);function jr(e){if(!N(e)||"[object Object]"!=b(e))return!1;var t=Tr(e);if(null===t)return!0;var r=Yr.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&vr.call(r)==Xr}function zr(e){return function(e){if(!N(e))return!1;var t=b(e);return"[object Error]"==t||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!jr(e)}(e)}function Gr(e){return Z(e)}function Wr(e){let t,r;try{r=Object.prototype.toString.call(e)}catch(e){return!1}if(t="[object Promise]"===r,t)return!0;if("[object Function]"!==r)return!1;try{t="function"!=typeof e.subscribe&&"function"==typeof e.then}catch(e){}return t}function Kr(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!er(e))return n("invalid v");let s={};try{s=JSON.parse(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fr(e,t={}){if(!gr(e,t))return!1;return fr(e)>=0}function kr(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?"":e.substring(0,t):""}function Vr(e,t){if(!er(e))return"";if(!Fr(t))return"";if(0===(t=fr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Hr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}let Ur=function(e){if(!Gr(e))throw new Error("fn is not a function");return function(){let t,r=Hr();try{t=e.apply(this,arguments)}catch(e){return r.resolve({state:"error",msg:e}),r}let n=e=>{let t=!1;try{t="cancelled"===ye(e,"reason")}catch(e){}t?r.resolve({state:"cancelled",msg:""}):r.resolve({state:"error",msg:e})};try{Wr(t)?t.then(e=>{r.resolve({state:"success",msg:e})},n):r.resolve({state:"success",msg:t})}catch(e){r.resolve({state:"error",msg:e})}return r}};function Br(e,t={}){let r=ye(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function Qr(e,t={}){let r=ye(t,"fs");if(!Br(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Rr(e){return Qr(e,{fs:t})}function Or(e,t={}){let r=ye(t,"fs");return!!Br(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Pr(e){return Or(e,{fs:t})}function Jr(e,t,r){if(!er(e))return"";if(!er(t))return"";if(!qt(r))return"";return String(e).replaceAll(t,r)}function $r(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););return e}function _r(e,t){var r;return(M(e)?$r:Qt)(e,"function"==typeof(r=t)?r:Kt)}function qr(e,t,r=""){if(!Er(t))return{};let n={};return _r(t,function(t){n[t]=ye(e,t,r)}),n}function en(e,t,r=""){if(!Er(e))return[];if(!Er(t))return[];return Ot(e,e=>qr(e,t,r))}let tn=2147483647;var rn="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function nn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sn(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){if(this instanceof e){var r=[null];return r.push.apply(r,arguments),new(Function.bind.apply(t,r))}return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}),r}var un={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0===--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}(un);var on=nn(un.exports);function ln(){return new on}function an(e,t,r=[],n={}){let s=n.funSettle,i=n.tag||"evem",u=(t,...r)=>e.emit(t,...r);Gr(n.funEmit)&&(u=n.funEmit);try{return u(t,...r)}catch(n){if(Gr(s))try{s(n)}catch(e){}try{"error"!==t&&e.listenerCount("error")>0?u("error",{fun:"listener",name:t,msg:n,args:r}):console.error(`[wsemi ${i}] listener of '${String(t)}' threw:`,n)}catch(e){try{console.error(`[wsemi ${i}] listener of '${String(t)}' threw, and reporting it also threw:`,e,n)}catch(e){}}return!1}}async function cn(e,t={}){let r=null,n=Hr();if(!Gr(e))return n.reject("waitfunction需輸入函數f"),n;let s=async()=>{let t=e();return Wr(t)&&(t=await t),t};if(r=await s(),!0===r)return n.resolve(),n;let i=ye(t,"attemptNum",null);Lr(i)||(i=200);let u=ye(t,"timeInterval",null);Lr(u)||(u=1e3),u=Math.min(u,tn);let o=0,l=!1,a=setInterval(async()=>{if(o+=1,l)o>i&&clearInterval(a);else{l=!0;try{r=await s()}catch(e){return clearInterval(a),void n.reject(e)}finally{l=!1}if(!0===r)return clearInterval(a),void n.resolve();o>i&&(clearInterval(a),n.reject(`exceeded attemptNum[${i}]`))}},u);return n}function dn(e,t){return!!$t(e)&&(!(!er(t)&&!wr(t))&&t in e)}function Dn(e={}){let t=ye(e,"timeExpire",null);Lr(t)||(t=18e5),t=fr(t),t=Math.min(t,tn);let r=ye(e,"timeDetect",null);Lr(r)||(r=2e3),r=fr(r),r=Math.min(r,tn);let n=ln(),s=Object.create(null),i=e=>{if(dn(s,e)){return an(n,"checkWithSet",[{state:"error",msg:`checkWithSet: key in use: ${e}`}],{tag:"cacheSt"}),!1}return s[e]={time:Date.now(),value:!0},an(n,"checkWithSet",[{state:"success",msg:`checkWithSet: ${e}`}],{tag:"cacheSt"}),!0},u=setInterval(()=>{an(n,"detect",[{state:"start"}],{tag:"cacheSt"});let e=Date.now();for(let r of Object.keys(s)){let n=s[r];n&&e-n.time>t&&delete s[r]}an(n,"detect",[{state:"finish"}],{tag:"cacheSt"})},r);return n.checkWithSet=i,n.setWithFree=async(e,t)=>{an(n,"setWithFree",[{state:"start"}],{tag:"cacheSt"});let r=[];for(let t of e){if(!i(t)){for(let e of r)delete s[e];let e=`setWithFree: key in use: ${t}`;return an(n,"setWithFree",[{state:"error",msg:e}],{tag:"cacheSt"}),Promise.reject(e)}r.push(t)}try{let r=await t(),s=`setWithFree: ${e.join(", ")}`;return an(n,"setWithFree",[{state:"success",msg:s}],{tag:"cacheSt"}),r}catch(e){let t="";try{t=`${e&&e.message||e}`}catch(e){}throw an(n,"setWithFree",[{state:"error",msg:`setWithFree: fn threw: ${t}`}],{tag:"cacheSt"}),e}finally{for(let e of r)delete s[e]}},n.set=async(e,t=!0)=>{s[e]={time:Date.now(),value:t},an(n,"set",[{state:"success",msg:`set: ${e}`}],{tag:"cacheSt"})},n.get=async e=>{let t=s[e],r=void 0===t?null:t.value;return an(n,"get",[{state:"success",msg:`get: ${e}`}],{tag:"cacheSt"}),r},n.check=async e=>{let t=dn(s,e);return an(n,"check",[{state:"success",msg:`check: ${e} = ${t}`}],{tag:"cacheSt"}),t},n.del=async e=>{delete s[e],an(n,"del",[{state:"success",msg:`del: ${e}`}],{tag:"cacheSt"})},n.waitExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitExist timeout (${r*i}ms): ${e}`;return an(n,"waitExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitExist",[{state:"success",msg:`waitExist resolved: ${e}`}],{tag:"cacheSt"})},n.waitNotExist=async(e,t={})=>{let r=ye(t,"attemptNum",null);Lr(r)||(r=30),r=fr(r);let i=ye(t,"timeInterval",null);Lr(i)||(i=100),i=fr(i),an(n,"waitNotExist",[{state:"start"}],{tag:"cacheSt"});try{await cn(()=>!dn(s,e),{attemptNum:r,timeInterval:i})}catch(t){let s=`waitNotExist timeout (${r*i}ms): ${e}`;return an(n,"waitNotExist",[{state:"error",msg:s}],{tag:"cacheSt"}),Promise.reject(s)}an(n,"waitNotExist",[{state:"success",msg:`waitNotExist resolved: ${e}`}],{tag:"cacheSt"})},n.clear=()=>{clearInterval(u)},n}function Mn(e,t,r=[],n={}){let s=n.ms;return Lr(s)||(s=1),s=fr(s),s=Math.min(s,tn),setTimeout(()=>{an(e,t,r,n)},s)}function wn(e){try{let t=e();return"string"==typeof t?t:""}catch(e){return""}}function yn(e,t){try{let r=new WeakSet,n=[],s=JSON.stringify(e,function(e,s){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.length>=t)return"[Deep]";if("bigint"==typeof s)return String(s);if(null!==s&&"object"==typeof s){if(r.has(s))return"[Circular]";r.add(s),n.push(s)}return s});return"string"==typeof s?s:""}catch(e){return""}}function gn(e){if(e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]){let t=wn(()=>JSON.parse(e));if(""!==t)return t}return e}function In(e,t){if(void 0===e)return"";if(null===e)return"null";let r=function(e){let t=typeof e;return"string"===t?e:null==e?"":"number"===t||"boolean"===t||"bigint"===t||"symbol"===t?String(e):""}(e);if(""!==r)return r;let n=yn(e,t);if(""!==n&&"{}"!==n)return gn(n);let s=wn(()=>String(e));return""!==s&&"[object Object]"!==s?s:n}function mn(e,t){let r=new WeakSet;null===e||"object"!=typeof e&&"function"!=typeof e||r.add(e);let n=e,s=[];for(let e=0;e<t.levelCauseMax;e++){let e=null;try{e=n.cause}catch(e){break}if(null==e)break;if("object"==typeof e||"function"==typeof e){if(r.has(e))break;r.add(e)}let i=pn(e,{...t,useCause:!1,useAggregate:!1});""!==i&&s.push(i),n=e}return s.join(" <- ")}function Cn(e,t){let r=null;try{r=e.errors}catch(e){return""}if(!Array.isArray(r)||0===r.length)return"";let n=[];for(let s=0;s<r.length&&s<t.levelCauseMax;s++){if(r[s]===e)continue;let i=pn(r[s],{...t,useCause:!1,useAggregate:!1});""!==i&&n.push(i)}return n.join("; ")}function pn(e,t){if("string"==typeof e)return e;if(null==e)return"";if("number"==typeof e)return Number.isNaN(e)?"":String(e);if("boolean"==typeof e||"bigint"==typeof e||"symbol"==typeof e)return String(e);let r=null,n=!1;try{r=e.message,n=!0}catch(e){n=!1}if(n&&"string"==typeof r){if(""!==r){let n=r;if(t.useCause){let r=mn(e,t);""!==r&&(n=`${n} <- ${r}`)}if(t.useAggregate){let r=Cn(e,t);""!==r&&(n=`${n} [${r}]`)}return n}let n=mn(e,t);return""!==n?n:""}if(n){let e=In(r,t.levelJsonMax);if(""!==e)return e}let s=mn(e,t);if(""!==s)return s;if(t.useAggregate){let r=Cn(e,t);if(""!==r)return r}let i=yn(e,t.levelJsonMax),u=gn(i);if(""!==u&&"{}"!==u)return u;let o=wn(()=>String(e));if(""!==o&&"[object Object]"!==o)return o;let l=wn(()=>Object.prototype.toString.call(e));return""!==l&&"[object Object]"!==l?l:""!==i?i:""}function fn(e,t={}){let r=ye(t,"useCause",null);Dr(r)||(r=!1);let n=ye(t,"useAggregate",null);Dr(n)||(n=!1);let s=ye(t,"levelCauseMax",null);Lr(s,{useLimitSafe:!0})||(s=8),s=fr(s);let i=ye(t,"levelJsonMax",null);Lr(i,{useLimitSafe:!0})||(i=6),i=fr(i);let u=ye(t,"lengthMessageMax",null);Lr(u,{useLimitSafe:!0})||(u=0),u=fr(u);let o={useCause:r,useAggregate:n,levelCauseMax:s,levelJsonMax:i,lengthMessageMax:u},l="";try{l=pn(e,o)}catch(e){return l="",l}return er(l)?(o.lengthMessageMax>0&&l.length>o.lengthMessageMax&&(l=o.lengthMessageMax>3?l.slice(0,o.lengthMessageMax-3)+"...":l.slice(0,o.lengthMessageMax)),l):(l="",l)}function Ln(e){if(!(er(e)||wr(e)||A(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}var hn={exports:{}};var bn,Nn={exports:{}},An=sn(Object.freeze({__proto__:null,default:{}}));function xn(){return bn||(bn=1,function(e){var t;e.exports=(t=t||function(e,t){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==rn&&rn.crypto&&(r=rn.crypto),!r)try{r=An}catch(e){}var n=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},s=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),i={},u=i.lib={},o=u.Base={extend:function(e){var t=s(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},l=u.WordArray=o.extend({init:function(e,r){e=this.words=e||[],this.sigBytes=r!=t?r:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,s=e.sigBytes;if(this.clamp(),n%4)for(var i=0;i<s;i++){var u=r[i>>>2]>>>24-i%4*8&255;t[n+i>>>2]|=u<<24-(n+i)%4*8}else for(var o=0;o<s;o+=4)t[n+o>>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(n());return new l.init(t,e)}}),a=i.enc={},c=a.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push((i>>>4).toString(16)),n.push((15&i).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n+=2)r[n>>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new l.init(r,t/2)}},d=a.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],s=0;s<r;s++){var i=t[s>>>2]>>>24-s%4*8&255;n.push(String.fromCharCode(i))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n>>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new l.init(r,t)}},D=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(d.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return d.parse(unescape(encodeURIComponent(e)))}},M=u.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=D.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,n=this._data,s=n.words,i=n.sigBytes,u=this.blockSize,o=i/(4*u),a=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*u,c=e.min(4*a,i);if(a){for(var d=0;d<a;d+=u)this._doProcessBlock(s,d);r=s.splice(0,a),n.sigBytes-=c}return new l.init(r,c)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});u.Hasher=M.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){M.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function(e){return function(t,r){return new w.HMAC.init(e,r).finalize(t)}}});var w=i.algo={};return i}(Math),t)}(Nn)),Nn.exports}!function(e){e.exports=xn().enc.Utf8}(hn);var En=nn(hn.exports),Tn={exports:{}};!function(e){var t;e.exports=(t=xn(),function(){var e=t,r=e.lib.WordArray;function n(e,t,n){for(var s=[],i=0,u=0;u<t;u++)if(u%4){var o=n[e.charCodeAt(u-1)]<<u%4*2|n[e.charCodeAt(u)]>>>6-u%4*2;s[i>>>2]|=o<<24-i%4*8,i++}return r.create(s,i)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,n=this._map;e.clamp();for(var s=[],i=0;i<r;i+=3)for(var u=(t[i>>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;o<4&&i+.75*o<r;o++)s.push(n.charAt(u>>>6*(3-o)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var i=0;i<r.length;i++)s[r.charCodeAt(i)]=i}var u=r.charAt(64);if(u){var o=e.indexOf(u);-1!==o&&(t=o)}return n(e,t,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),t.enc.Base64)}(Tn);var Sn=nn(Tn.exports);function Zn(e){try{return String(e)}catch(e){}try{let t=e.message;if("string"==typeof t&&""!==t)return t}catch(e){}return"unknown error"}function vn(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}function Yn(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function Xn(e){return"[object Uint16Array]"===Object.prototype.toString.call(e)}function jn(e){if(!(vn(e)||function(e){let t=Object.prototype.toString.call(e);if("[object Blob]"===t||"[object File]"===t)return!0;try{if("undefined"!=typeof Blob&&e instanceof Blob)return!0}catch(e){}return!1}(e)||Yn(e)||Xn(e)))return null;try{if(wr(e.byteLength))return e.byteLength}catch(e){}try{if(wr(e.length))return e.length}catch(e){}try{if(wr(e.size))return e.size}catch(e){}return null}function zn(e){if(null===e||"object"!=typeof e)return!1;if(e instanceof Error)return!0;if("function"==typeof Error.isError)return Error.isError(e);if(Symbol.toStringTag in e)return!1;let t=Object.prototype.toString.call(e);return"[object Error]"===t||"[object DOMException]"===t}function Gn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{results:"",binarys:[]};if(!$t(e)&&!hr(e))return n("invalid data, data is not an object or array");if(Nr(e)||Ar(e))return n("invalid data, data is an empty object or empty array");let s=/^(?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,i="",u=[];try{let t=-1;i=JSON.stringify(e,function(e,r){if(Yn(r)){t+=1;let e=`[BlazeForUint8Array]::${t}`;return u.push(r),e}if(Xn(r)){t+=1;let e=`[BlazeForUint16Array]::${t}`;return u.push(r),e}if(vn(r)){t+=1;let e=`[BlazeForArrayBuffer]::${t}`;return u.push(r),e}return er(r=function(e){if(!zn(e))return e;let t=e.toString;return t===Object.prototype.toString||"function"!=typeof t?Error.prototype.toString.call(e):t.call(e)}(r))&&91===r.charCodeAt(0)&&s.test(r)?"[BlazeForPreventEscape]"+r:r})}catch(e){return n(Zn(e))}return r?{state:"success",msg:{results:i,binarys:u}}:{results:i,binarys:u}}let Wn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]/;function Kn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:new Uint8Array;if(!er(e))return n("invalid str");if(!("function"==typeof e.isWellFormed?e.isWellFormed():!Wn.test(e)))return n("invalid str, contains lone surrogates");let s=null;try{s=(new TextEncoder).encode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Fn(e,t,r=0,n=!0,s=52,i=8){return function(e,t,r,n,s,i){if(!wr(e))return null;if(!Yn(t))return null;if(!gr(r))return null;if(!Dr(n))return null;if(!gr(s))return null;if(!gr(i))return null;let u,o,l;e=yr(e);let a=8*i-s-1,c=(1<<a)-1,d=c>>1,D=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,M=n?i-1:0,w=n?-1:1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,u=c):(u=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-u))<1&&(u--,l*=2),(e+=u+d>=1?D/l:D*Math.pow(2,1-d))*l>=2&&(u++,l/=2),u+d>=c?(o=0,u=c):u+d>=1?(o=(e*l-1)*Math.pow(2,s),u+=d):(o=e*Math.pow(2,d-1)*Math.pow(2,s),u=0));s>=8;t[r+M]=255&o,M+=w,o/=256,s-=8);for(u=u<<s|o,a+=s;a>0;t[r+M]=255&u,M+=w,u/=256,a-=8);return t[r+M-w]|=128*y,null}(e,t,r,n,s,i)}function kn(e){let t=0;_r(e,e=>{t+=jn(e)});let r=new Uint8Array(t),n=0;return _r(e,e=>{let t=function(e){return vn(e)?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0)}(e);r.set(t,n),n+=t.length}),r}function Vn(e,t={}){let r=[],n=new Uint8Array,s=ye(t,"returnWithStateAndMsg",null);Dr(s)||(s=!1);let i=e=>s?{state:"error",msg:e}:new Uint8Array;if(!(u=e,hr(u)&&u.length>=1||_t(e)))return i("invalid data, data is not an effective object or a non-empty array");var u;let o=[],l=[];function a(e){o.push(jn(e)),l.push(e)}try{let t=Gn(e,{returnWithStateAndMsg:!0});if("error"===t.state)return i(`obj2stru8arr: ${t.msg}`);let s=t.msg;a(Kn(s.results)),_r(s.binarys,e=>{a(e)});let u=o,c=Kn(JSON.stringify(u)),d=new Uint8Array(8);Fn(jn(c),d),r.push(d),r.push(c),_r(l,e=>{r.push(e)}),n=kn(r)}catch(e){return i(Zn(e))}return s?{state:"success",msg:n}:n}function Hn(e,t=0,r=!0,n=52,s=8){return function(e,t,r,n,s){if(!Yn(e))return null;if(!gr(t))return null;if(!Dr(r))return null;if(!gr(n))return null;if(!gr(s))return null;let i,u,o=8*s-n-1,l=(1<<o)-1,a=l>>1,c=-7,d=r?0:s-1,D=r?1:-1,M=e[t+d];for(d+=D,i=M&(1<<-c)-1,M>>=-c,c+=o;c>0;i=256*i+e[t+d],d+=D,c-=8);for(u=i&(1<<-c)-1,i>>=-c,c+=n;c>0;u=256*u+e[t+d],d+=D,c-=8);if(0===i)i=1-a;else{if(i===l)return u?NaN:1/0*(M?-1:1);u+=Math.pow(2,n),i-=a}return(M?-1:1)*u*Math.pow(2,i-n)}(e,t,r,n,s)}function Un(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!Yn(e))return n("invalid u8a");let s="";try{s=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}function Bn(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:{};if(!_t(e))return n("invalid data");let s=null,i=null;try{s=e.results,i=e.binarys}catch(e){return n(Zn(e))}if(!er(s))return n("invalid results");if(!hr(i))return n("invalid binarys");let u=/^\[BlazeFor(Uint8Array|Uint16Array|ArrayBuffer)\]::(\d+)$/,o=/^\[BlazeForPreventEscape\](?:\[BlazeForPreventEscape\])*\[BlazeFor(?:Uint8Array|Uint16Array|ArrayBuffer)\]::\d+$/,l=new Set,a={};try{a=JSON.parse(s,function(e,t){if(!er(t)||91!==t.charCodeAt(0))return t;let r=u.exec(t);if(null===r)return o.test(t)?t.slice(23):t;let n=Number(r[2]);if(n>=i.length)throw new Error(`binary index out of range[${n}], binarys.length[${i.length}]`);if(l.has(n))throw new Error(`binary index referenced more than once[${n}]`);return l.add(n),((e,t,r)=>{if("Uint16Array"===e&&!Xn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to Uint16Array`);if(r.byteLength%2!=0)throw new Error(`binarys[${t}] byteLength[${r.byteLength}] is not even, can not be restored to Uint16Array`);let e=0===r.byteOffset&&r.byteLength===r.buffer.byteLength?r:new Uint8Array(r);return new Uint16Array(e.buffer)}if("ArrayBuffer"===e&&!vn(r)){if(!Yn(r))throw new Error(`binarys[${t}] can not be restored to ArrayBuffer`);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}return r})(r[1],n,i[n])})}catch(e){return n(Zn(e))}return r?{state:"success",msg:a}:a}function Qn(e,t={}){let r={},n=ye(t,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:{};if(!Yn(e))return s("invalid u8a");try{let t=8,n=e.slice(0,t),i=e.slice(t,jn(e)),u=Hn(n),o=i.slice(0,u),l=i.slice(u,jn(i)),a=Un(o,{returnWithStateAndMsg:!0});if("error"===a.state)return s(`u8arr2str: ${a.msg}`);let c=a.msg,d=JSON.parse(c),D=function(e,t){if(!Array.isArray(e))return"not an array";for(let t=0;t<e.length;t++){let r=e[t];if(!Number.isInteger(r)||r<0)return"every item must be a non-negative finite integer"}let r=0;for(let n=0;n<e.length;n++)if(r+=e[n],r>t)return"total length exceeds the packet";return e.length>1&&25*(e.length-1)>e[0]?"too many chunks for the main block":""}(d,jn(l));if(""!==D)return s(`invalid pks, ${D}`);let M=function(e,t){let r=0,n=0,s=[];for(let i=0;i<t.length;i++){n=r+t[i];let u=e.slice(r,n);r=n,s.push(u)}return s}(l,d),w=Un(M.shift(),{returnWithStateAndMsg:!0});if("error"===w.state)return s(`u8arr2str: ${w.msg}`);let y=Bn({results:w.msg,binarys:M},{returnWithStateAndMsg:!0});if("error"===y.state)return s(`stru8arr2obj: ${y.msg}`);r=y.msg}catch(e){return s(Zn(e))}return n?{state:"success",msg:r}:r}function Rn(e){let t=!1;try{t=zn(e)}catch(e){}if(t)return e;if("string"==typeof e&&""!==e)return e;let r=Zn(e);return""!==r?r:"unknown error"}function On(e){return function(e,t={}){try{let r=ye(t,"fs");if(Qr(e,{fs:r}))return{success:"input folder is already exists: "+e};if(Br(e,{fs:r}))return{error:"input path already exists: "+e};r.mkdirSync(e,{recursive:!0})}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Pn(e){return function(e,t={}){try{let r=ye(t,"fs");if(!Br(e,{fs:r}))return{success:"file does not exist: "+e};if(!Or(e,{fs:r}))return{error:"input path is not a file: "+e};r.unlinkSync(e)}catch(e){return{error:Rn(e)}}return{success:"done: "+e}}(e,{fs:t})}function Jn(e){return er(e)&&e.length<=128&&/^[A-Za-z0-9]+$/.test(e)}let $n={permission:200,param:200,app:200,output:200,packet:200,internal:200},_n={main:{event:"execute",apiType:"main",api:"apiMain",authFrom:"header",statusOf:$n},ulctr:{event:"upload",apiType:"upload-controller",api:"apiUploadCheck",authFrom:"header",statusOf:$n},slc:{event:"upload",apiType:"upload-slice",api:"apiUploadSlice",authFrom:"header",statusOf:$n},dwgfn:{event:"download",apiType:"download-get-filename",api:"apiDownloadGetFilename",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"}]},dwgf:{event:"download",apiType:"download-get-file",api:"apiDownloadGetFile",authFrom:"query",statusOf:{permission:403,param:400,app:404,output:500,packet:500,internal:500},fields:[{name:"streamRead"},{name:"fileSize"},{name:"fileType"},{name:"filename",optional:!0}]},dw:{event:"download",apiType:"download",api:"apiDownload",authFrom:"header",statusOf:$n,fields:[{name:"streamRead"},{name:"filename"},{name:"fileSize"},{name:"fileType"}]}};var qn=Ft("length"),es=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function ts(e){return es.test(e)}var rs="\\ud800-\\udfff",ns="["+rs+"]",ss="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",is="\\ud83c[\\udffb-\\udfff]",us="[^"+rs+"]",os="(?:\\ud83c[\\udde6-\\uddff]){2}",ls="[\\ud800-\\udbff][\\udc00-\\udfff]",as="(?:"+ss+"|"+is+")"+"?",cs="[\\ufe0e\\ufe0f]?",ds=cs+as+("(?:\\u200d(?:"+[us,os,ls].join("|")+")"+cs+as+")*"),Ds="(?:"+[us+ss+"?",ss,os,ls,ns].join("|")+")",Ms=RegExp(is+"(?="+is+")|"+Ds+ds,"g");function ws(e){return ts(e)?function(e){for(var t=Ms.lastIndex=0;Ms.test(e);)++t;return t}(e):qn(e)}function ys(e){if(null==e)return 0;if(lt(e))return"string"==typeof(t=e)||!M(t)&&N(t)&&"[object String]"==b(t)?ws(e):e.length;var t,r=xt(e);return"[object Map]"==r||"[object Set]"==r?e.size:ot(e).length}var gs={exports:{}};!function(e){e.exports=function(){var e=1e3,t=6e4,r=36e5,n="millisecond",s="second",i="minute",u="hour",o="day",l="week",a="month",c="quarter",d="year",D="date",M="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"}},I=function(e,t,r){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(r)+e},m={s:I,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),s=r%60;return(t<=0?"+":"-")+I(n,2,"0")+":"+I(s,2,"0")},m:function e(t,r){if(t.date()<r.date())return-e(r,t);var n=12*(r.year()-t.year())+(r.month()-t.month()),s=t.clone().add(n,a),i=r-s<0,u=t.clone().add(n+(i?-1:1),a);return+(-(n+(r-s)/(i?s-u:u-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:a,y:d,w:l,d:o,D:D,h:u,m:i,s:s,ms:n,Q:c}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},C="en",p={};p[C]=g;var f="$isDayjsObject",L=function(e){return e instanceof A||!(!e||!e[f])},h=function e(t,r,n){var s;if(!t)return C;if("string"==typeof t){var i=t.toLowerCase();p[i]&&(s=i),r&&(p[i]=r,s=i);var u=t.split("-");if(!s&&u.length>1)return e(u[0])}else{var o=t.name;p[o]=t,s=o}return!n&&s&&(C=s),s||!n&&C},b=function(e,t){if(L(e))return e.clone();var r="object"==typeof t?t:{};return r.date=e,r.args=arguments,new A(r)},N=m;N.l=h,N.i=L,N.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var A=function(){function g(e){this.$L=h(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var I=g.prototype;return I.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(N.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(w);if(n){var s=n[2]-1||0,i=(n[7]||"0").substring(0,3);return r?new Date(Date.UTC(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)):new Date(n[1],s,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)}}return new Date(t)}(e),this.init()},I.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},I.$utils=function(){return N},I.isValid=function(){return!(this.$d.toString()===M)},I.isSame=function(e,t){var r=b(e);return this.startOf(t)<=r&&r<=this.endOf(t)},I.isAfter=function(e,t){return b(e)<this.startOf(t)},I.isBefore=function(e,t){return this.endOf(t)<b(e)},I.$g=function(e,t,r){return N.u(e)?this[t]:this.set(r,e)},I.unix=function(){return Math.floor(this.valueOf()/1e3)},I.valueOf=function(){return this.$d.getTime()},I.startOf=function(e,t){var r=this,n=!!N.u(t)||t,c=N.p(e),M=function(e,t){var s=N.w(r.$u?Date.UTC(r.$y,t,e):new Date(r.$y,t,e),r);return n?s:s.endOf(o)},w=function(e,t){return N.w(r.toDate()[e].apply(r.toDate("s"),(n?[0,0,0,0]:[23,59,59,999]).slice(t)),r)},y=this.$W,g=this.$M,I=this.$D,m="set"+(this.$u?"UTC":"");switch(c){case d:return n?M(1,0):M(31,11);case a:return n?M(1,g):M(0,g+1);case l:var C=this.$locale().weekStart||0,p=(y<C?y+7:y)-C;return M(n?I-p:I+(6-p),g);case o:case D:return w(m+"Hours",0);case u:return w(m+"Minutes",1);case i:return w(m+"Seconds",2);case s:return w(m+"Milliseconds",3);default:return this.clone()}},I.endOf=function(e){return this.startOf(e,!1)},I.$set=function(e,t){var r,l=N.p(e),c="set"+(this.$u?"UTC":""),M=(r={},r[o]=c+"Date",r[D]=c+"Date",r[a]=c+"Month",r[d]=c+"FullYear",r[u]=c+"Hours",r[i]=c+"Minutes",r[s]=c+"Seconds",r[n]=c+"Milliseconds",r)[l],w=l===o?this.$D+(t-this.$W):t;if(l===a||l===d){var y=this.clone().set(D,1);y.$d[M](w),y.init(),this.$d=y.set(D,Math.min(this.$D,y.daysInMonth())).$d}else M&&this.$d[M](w);return this.init(),this},I.set=function(e,t){return this.clone().$set(e,t)},I.get=function(e){return this[N.p(e)]()},I.add=function(n,c){var D,M=this;n=Number(n);var w=N.p(c),y=function(e){var t=b(M);return N.w(t.date(t.date()+Math.round(e*n)),M)};if(w===a)return this.set(a,this.$M+n);if(w===d)return this.set(d,this.$y+n);if(w===o)return y(1);if(w===l)return y(7);var g=(D={},D[i]=t,D[u]=r,D[s]=e,D)[w]||1,I=this.$d.getTime()+n*g;return N.w(I,this)},I.subtract=function(e,t){return this.add(-1*e,t)},I.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return r.invalidDate||M;var n=e||"YYYY-MM-DDTHH:mm:ssZ",s=N.z(this),i=this.$H,u=this.$m,o=this.$M,l=r.weekdays,a=r.months,c=r.meridiem,d=function(e,r,s,i){return e&&(e[r]||e(t,n))||s[r].slice(0,i)},D=function(e){return N.s(i%12||12,e,"0")},w=c||function(e,t,r){var n=e<12?"AM":"PM";return r?n.toLowerCase():n};return n.replace(y,function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return N.s(t.$y,4,"0");case"M":return o+1;case"MM":return N.s(o+1,2,"0");case"MMM":return d(r.monthsShort,o,a,3);case"MMMM":return d(a,o);case"D":return t.$D;case"DD":return N.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return d(r.weekdaysMin,t.$W,l,2);case"ddd":return d(r.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(i);case"HH":return N.s(i,2,"0");case"h":return D(1);case"hh":return D(2);case"a":return w(i,u,!0);case"A":return w(i,u,!1);case"m":return String(u);case"mm":return N.s(u,2,"0");case"s":return String(t.$s);case"ss":return N.s(t.$s,2,"0");case"SSS":return N.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},I.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},I.diff=function(n,D,M){var w,y=this,g=N.p(D),I=b(n),m=(I.utcOffset()-this.utcOffset())*t,C=this-I,p=function(){return N.m(y,I)};switch(g){case d:w=p()/12;break;case a:w=p();break;case c:w=p()/3;break;case l:w=(C-m)/6048e5;break;case o:w=(C-m)/864e5;break;case u:w=C/r;break;case i:w=C/t;break;case s:w=C/e;break;default:w=C}return M?w:N.a(w)},I.daysInMonth=function(){return this.endOf(a).$D},I.$locale=function(){return p[this.$L]},I.locale=function(e,t){if(!e)return this.$L;var r=this.clone(),n=h(e,t,!0);return n&&(r.$L=n),r},I.clone=function(){return N.w(this.$d,this)},I.toDate=function(){return new Date(this.valueOf())},I.toJSON=function(){return this.isValid()?this.toISOString():null},I.toISOString=function(){return this.$d.toISOString()},I.toString=function(){return this.$d.toUTCString()},g}(),x=A.prototype;return b.prototype=x,[["$ms",n],["$s",s],["$m",i],["$H",u],["$W",o],["$M",a],["$y",d],["$D",D]].forEach(function(e){x[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),b.extend=function(e,t){return e.$i||(e(t,A,b),e.$i=!0),b},b.locale=h,b.isDayjs=L,b.unix=function(e){return b(1e3*e)},b.en=p[C],b.Ls=p,b.p={},b}()}(gs);var Is=nn(gs.exports);let ms="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),Cs=ms.length;function ps(e=32){let t=[];e=Lr(e)?fr(e):32;for(let r=0;r<e;r++)t[r]=ms[0|Math.random()*Cs];return t.join("")}function fs(e,t,r){var n=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(r=r>s?s:r)<0&&(r+=s),s=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(s);++n<s;)i[n]=e[n+t];return i}function Ls(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:fs(e,t,r)}function hs(e){return e!=e}function bs(e,t,r){return t==t?function(e,t,r){for(var n=r-1,s=e.length;++n<s;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var s=e.length,i=r+(n?1:-1);n?i--:++i<s;)if(t(e[i],i,e))return i;return-1}(e,hs,r)}var Ns="\\ud800-\\udfff",As="["+Ns+"]",xs="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Es="\\ud83c[\\udffb-\\udfff]",Ts="[^"+Ns+"]",Ss="(?:\\ud83c[\\udde6-\\uddff]){2}",Zs="[\\ud800-\\udbff][\\udc00-\\udfff]",vs="(?:"+xs+"|"+Es+")"+"?",Ys="[\\ufe0e\\ufe0f]?",Xs=Ys+vs+("(?:\\u200d(?:"+[Ts,Ss,Zs].join("|")+")"+Ys+vs+")*"),js="(?:"+[Ts+xs+"?",xs,Ss,Zs,As].join("|")+")",zs=RegExp(Es+"(?="+Es+")|"+js+Xs,"g");function Gs(e){return ts(e)?function(e){return e.match(zs)||[]}(e):function(e){return e.split("")}(e)}function Ws(e,t,r){if((e=de(e))&&(r||void 0===t))return nr(e);if(!e||!(t=ce(t)))return e;var n=Gs(e),s=Gs(t),i=function(e,t){for(var r=-1,n=e.length;++r<n&&bs(t,e[r],0)>-1;);return r}(n,s),u=function(e,t){for(var r=e.length;r--&&bs(t,e[r],0)>-1;);return r}(n,s)+1;return Ls(n,i,u).join("")}function Ks(e,t){if(!er(e))return[];if(!er(t))return[];let r=function(e,t){return er(e)&&er(t)?e.split(t):[]}(e,t);r=Ot(r,Ws);let n=[];return _r(r,function(e){er(e)&&n.push(e)}),n}const Fs=new Uint8Array([0,97,115,109,1,0,0,0,1,48,8,96,3,127,127,127,1,127,96,3,127,127,127,0,96,2,127,127,0,96,1,127,1,127,96,3,127,127,126,1,126,96,3,126,127,127,1,126,96,2,127,126,0,96,1,127,1,126,3,11,10,0,0,2,1,3,4,5,6,1,7,5,3,1,0,1,7,85,9,3,109,101,109,2,0,5,120,120,104,51,50,0,0,6,105,110,105,116,51,50,0,2,8,117,112,100,97,116,101,51,50,0,3,8,100,105,103,101,115,116,51,50,0,4,5,120,120,104,54,52,0,5,6,105,110,105,116,54,52,0,7,8,117,112,100,97,116,101,54,52,0,8,8,100,105,103,101,115,116,54,52,0,9,10,251,22,10,242,1,1,4,127,32,0,32,1,106,33,3,32,1,65,16,79,4,127,32,3,65,16,107,33,6,32,2,65,168,136,141,161,2,106,33,3,32,2,65,137,235,208,208,7,107,33,4,32,2,65,207,140,162,142,6,106,33,5,3,64,32,3,32,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,4,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,4,32,2,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,5,32,0,65,4,106,34,0,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,6,32,0,65,4,106,34,0,79,13,0,11,32,2,65,12,119,32,5,65,18,119,106,32,4,65,7,119,106,32,3,65,1,119,106,5,32,2,65,177,207,217,178,1,106,11,32,1,106,32,0,32,1,65,15,113,16,1,11,146,1,0,32,1,32,2,106,33,2,3,64,32,1,65,4,106,32,2,75,69,4,64,32,0,32,1,40,2,0,65,189,220,202,149,124,108,106,65,17,119,65,175,214,211,190,2,108,33,0,32,1,65,4,106,33,1,12,1,11,11,3,64,32,1,32,2,79,69,4,64,32,0,32,1,45,0,0,65,177,207,217,178,1,108,106,65,11,119,65,177,243,221,241,121,108,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,65,15,118,115,65,247,148,175,175,120,108,34,0,65,13,118,32,0,115,65,189,220,202,149,124,108,34,0,65,16,118,32,0,115,11,63,0,32,0,65,8,106,32,1,65,168,136,141,161,2,106,54,2,0,32,0,65,12,106,32,1,65,137,235,208,208,7,107,54,2,0,32,0,65,16,106,32,1,54,2,0,32,0,65,20,106,32,1,65,207,140,162,142,6,106,54,2,0,11,195,4,1,6,127,32,1,32,2,106,33,6,32,0,65,24,106,33,4,32,0,65,40,106,40,2,0,33,3,32,0,32,0,40,2,0,32,2,106,54,2,0,32,0,65,4,106,34,5,32,5,40,2,0,32,2,65,16,79,32,0,40,2,0,65,16,79,114,114,54,2,0,32,2,32,3,106,65,16,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,40,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,16,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,40,2,0,32,4,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,12,106,34,3,32,3,40,2,0,32,4,65,4,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,16,106,34,3,32,3,40,2,0,32,4,65,8,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,20,106,34,3,32,3,40,2,0,32,4,65,12,106,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,54,2,0,32,0,65,40,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,32,6,65,16,107,77,4,64,32,6,65,16,107,33,8,32,0,65,8,106,40,2,0,33,2,32,0,65,12,106,40,2,0,33,3,32,0,65,16,106,40,2,0,33,5,32,0,65,20,106,40,2,0,33,7,3,64,32,2,32,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,2,32,3,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,3,32,5,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,5,32,7,32,1,65,4,106,34,1,40,2,0,65,247,148,175,175,120,108,106,65,13,119,65,177,243,221,241,121,108,33,7,32,8,32,1,65,4,106,34,1,79,13,0,11,32,0,65,8,106,32,2,54,2,0,32,0,65,12,106,32,3,54,2,0,32,0,65,16,106,32,5,54,2,0,32,0,65,20,106,32,7,54,2,0,11,32,1,32,6,73,4,64,32,4,32,1,32,6,32,1,107,34,1,252,10,0,0,32,0,65,40,106,32,1,54,2,0,11,11,97,1,1,127,32,0,65,16,106,40,2,0,33,1,32,0,65,4,106,40,2,0,4,127,32,1,65,12,119,32,0,65,20,106,40,2,0,65,18,119,106,32,0,65,12,106,40,2,0,65,7,119,106,32,0,65,8,106,40,2,0,65,1,119,106,5,32,1,65,177,207,217,178,1,106,11,32,0,40,2,0,106,32,0,65,24,106,32,0,65,40,106,40,2,0,16,1,11,255,3,2,3,126,1,127,32,0,32,1,106,33,6,32,1,65,32,79,4,126,32,6,65,32,107,33,6,32,2,66,214,235,130,238,234,253,137,245,224,0,124,33,3,32,2,66,177,169,172,193,173,184,212,166,61,125,33,4,32,2,66,249,234,208,208,231,201,161,228,225,0,124,33,5,3,64,32,3,32,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,3,32,4,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,4,32,2,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,2,32,5,32,0,65,8,106,34,0,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,5,32,6,32,0,65,8,106,34,0,79,13,0,11,32,2,66,12,137,32,5,66,18,137,124,32,4,66,7,137,124,32,3,66,1,137,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,2,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,2,66,197,207,217,178,241,229,186,234,39,124,11,32,1,173,124,32,0,32,1,65,31,113,16,6,11,134,2,0,32,1,32,2,106,33,2,3,64,32,2,32,1,65,8,106,79,4,64,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,32,0,133,66,27,137,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,33,0,32,1,65,8,106,33,1,12,1,11,11,32,1,65,4,106,32,2,77,4,64,32,0,32,1,53,2,0,66,135,149,175,175,152,182,222,155,158,127,126,133,66,23,137,66,207,214,211,190,210,199,171,217,66,126,66,249,243,221,241,153,246,153,171,22,124,33,0,32,1,65,4,106,33,1,11,3,64,32,1,32,2,73,4,64,32,0,32,1,49,0,0,66,197,207,217,178,241,229,186,234,39,126,133,66,11,137,66,135,149,175,175,152,182,222,155,158,127,126,33,0,32,1,65,1,106,33,1,12,1,11,11,32,0,32,0,66,33,136,133,66,207,214,211,190,210,199,171,217,66,126,34,0,32,0,66,29,136,133,66,249,243,221,241,153,246,153,171,22,126,34,0,32,0,66,32,136,133,11,77,0,32,0,65,8,106,32,1,66,214,235,130,238,234,253,137,245,224,0,124,55,3,0,32,0,65,16,106,32,1,66,177,169,172,193,173,184,212,166,61,125,55,3,0,32,0,65,24,106,32,1,55,3,0,32,0,65,32,106,32,1,66,249,234,208,208,231,201,161,228,225,0,124,55,3,0,11,244,4,2,3,127,4,126,32,1,32,2,106,33,5,32,0,65,40,106,33,4,32,0,65,200,0,106,40,2,0,33,3,32,0,32,0,41,3,0,32,2,173,124,55,3,0,32,2,32,3,106,65,32,73,4,64,32,3,32,4,106,32,1,32,2,252,10,0,0,32,0,65,200,0,106,32,2,32,3,106,54,2,0,15,11,32,3,4,64,32,3,32,4,106,32,1,65,32,32,3,107,34,2,252,10,0,0,32,0,65,8,106,34,3,32,3,41,3,0,32,4,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,16,106,34,3,32,3,41,3,0,32,4,65,8,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,24,106,34,3,32,3,41,3,0,32,4,65,16,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,32,106,34,3,32,3,41,3,0,32,4,65,24,106,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,55,3,0,32,0,65,200,0,106,65,0,54,2,0,32,1,32,2,106,33,1,11,32,1,65,32,106,32,5,77,4,64,32,5,65,32,107,33,2,32,0,65,8,106,41,3,0,33,6,32,0,65,16,106,41,3,0,33,7,32,0,65,24,106,41,3,0,33,8,32,0,65,32,106,41,3,0,33,9,3,64,32,6,32,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,6,32,7,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,7,32,8,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,8,32,9,32,1,65,8,106,34,1,41,3,0,66,207,214,211,190,210,199,171,217,66,126,124,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,33,9,32,2,32,1,65,8,106,34,1,79,13,0,11,32,0,65,8,106,32,6,55,3,0,32,0,65,16,106,32,7,55,3,0,32,0,65,24,106,32,8,55,3,0,32,0,65,32,106,32,9,55,3,0,11,32,1,32,5,73,4,64,32,4,32,1,32,5,32,1,107,34,1,252,10,0,0,32,0,65,200,0,106,32,1,54,2,0,11,11,188,2,1,5,126,32,0,65,24,106,41,3,0,33,1,32,0,41,3,0,34,2,66,32,90,4,126,32,0,65,8,106,41,3,0,34,3,66,1,137,32,0,65,16,106,41,3,0,34,4,66,7,137,124,32,1,66,12,137,32,0,65,32,106,41,3,0,34,5,66,18,137,124,124,32,3,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,4,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,1,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,32,5,66,207,214,211,190,210,199,171,217,66,126,66,31,137,66,135,149,175,175,152,182,222,155,158,127,126,133,66,135,149,175,175,152,182,222,155,158,127,126,66,157,163,181,234,131,177,141,138,250,0,125,5,32,1,66,197,207,217,178,241,229,186,234,39,124,11,32,2,124,32,0,65,40,106,32,2,66,31,131,167,16,6,11]);async function ks(e,t={}){let r=Hr();try{let n=ye(t,"fs"),s=ye(t,"chunkSize");if(Lr(s)||(s=67108864),s=fr(s),s>2**30&&(s=67108864),!Or(e,{fs:n}))return r.reject("fp is not a file"),r;let{create64:i}=await async function(){return function(e){const{exports:{mem:t,xxh32:r,xxh64:n,init32:s,update32:i,digest32:u,init64:o,update64:l,digest64:a}}=e;let c=new Uint8Array(t.buffer);function d(e,r){if(t.buffer.byteLength<e+r){const n=Math.ceil((e+r-t.buffer.byteLength)/65536);t.grow(n),c=new Uint8Array(t.buffer)}}function D(e,t,r,n,s,i){d(e);const u=new Uint8Array(e);return c.set(u),r(0,t),u.set(c.subarray(0,e)),{update(t){let r;return c.set(u),"string"==typeof t?(d(3*t.length,e),r=g.encodeInto(t,c.subarray(e)).written):(d(t.byteLength,e),c.set(t,e),r=t.byteLength),n(0,e,r),u.set(c.subarray(0,e)),this},digest:()=>(c.set(u),i(s(0)))}}function M(e){return e>>>0}const w=2n**64n-1n;function y(e){return e&w}const g=new TextEncoder;function I(e,t=0){return d(3*e.length,0),M(r(0,g.encodeInto(e,c).written,t))}function m(e,t=0n){return d(3*e.length,0),y(n(0,g.encodeInto(e,c).written,t))}return{h32:I,h32ToString:(e,t=0)=>I(e,t).toString(16).padStart(8,"0"),h32Raw:(e,t=0)=>(d(e.byteLength,0),c.set(e),M(r(0,e.byteLength,t))),create32:(e=0)=>D(48,e,s,i,u,M),h64:m,h64ToString:(e,t=0n)=>m(e,t).toString(16).padStart(16,"0"),h64Raw:(e,t=0n)=>(d(e.byteLength,0),c.set(e),y(n(0,e.byteLength,t))),create64:(e=0n)=>D(88,e,o,l,a,y)}}((await WebAssembly.instantiate(Fs)).instance)}(),u=i(),o=n.createReadStream(e,{highWaterMark:s}),l=e=>{r.reject(Zn(e));try{o.destroy()}catch(e){}};o.on("data",e=>{try{u.update(e)}catch(e){l(e)}}),o.on("end",()=>{try{let e=u.digest().toString(16).padStart(16,"0");r.resolve(e)}catch(e){l(e)}}),o.on("error",e=>{r.reject(Zn(e))})}catch(e){r.reject(Zn(e))}return r}var Vs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpLGU9cmVxdWlyZSgiZXZlbnRzIiksbj1BcnJheS5pc0FycmF5LG89Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGk9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZix1PW98fGl8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksYT11LlN5bWJvbCxjPU9iamVjdC5wcm90b3R5cGUsZj1jLmhhc093blByb3BlcnR5LHM9Yy50b1N0cmluZyxsPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIGg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgcD0iW29iamVjdCBOdWxsXSIseT0iW29iamVjdCBVbmRlZmluZWRdIixnPWE/YS50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3k6cDpnJiZnIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1mLmNhbGwodCxsKSxlPXRbbF07dHJ5e3RbbF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgbz1zLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbbF09ZTpkZWxldGUgdFtsXSksb30odCk6ZnVuY3Rpb24odCl7cmV0dXJuIGguY2FsbCh0KX0odCl9ZnVuY3Rpb24gYih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBkPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIF8odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxiKHQpJiZ2KHQpPT1kfXZhciBqPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLFM9L15cdyokLztmdW5jdGlvbiBtKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB3PSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixPPSJbb2JqZWN0IEZ1bmN0aW9uXSIsRT0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLE49IltvYmplY3QgUHJveHldIjt2YXIgQSxSPXVbIl9fY29yZS1qc19zaGFyZWRfXyJdLHg9KEE9L1teLl0rJC8uZXhlYyhSJiZSLmtleXMmJlIua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK0E6IiI7dmFyICQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBJPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHo9RnVuY3Rpb24ucHJvdG90eXBlLFA9T2JqZWN0LnByb3RvdHlwZSxGPXoudG9TdHJpbmcsTD1QLmhhc093blByb3BlcnR5LFQ9UmVnRXhwKCJeIitGLmNhbGwoTCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gTSh0KXtpZighbSh0KXx8KHI9dCx4JiZ4IGluIHIpKXJldHVybiExO3ZhciByLGU9ZnVuY3Rpb24odCl7aWYoIW0odCkpcmV0dXJuITE7dmFyIHI9dih0KTtyZXR1cm4gcj09T3x8cj09RXx8cj09d3x8cj09Tn0odCk/VDpJO3JldHVybiBlLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiAkLmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSh0KSl9ZnVuY3Rpb24gayh0LHIpe3ZhciBlPWZ1bmN0aW9uKHQscil7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbcl19KHQscik7cmV0dXJuIE0oZSk/ZTp2b2lkIDB9dmFyIFU9ayhPYmplY3QsImNyZWF0ZSIpO3ZhciBDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIEc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQpe3ZhciByPS0xLGU9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytyPGU7KXt2YXIgbj10W3JdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHEodCxyKXtmb3IodmFyIGUsbixvPXQubGVuZ3RoO28tLTspaWYoKGU9dFtvXVswXSk9PT0obj1yKXx8ZSE9ZSYmbiE9bilyZXR1cm4gbztyZXR1cm4tMX1XLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189VT9VKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxXLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPXI/MTowLHJ9LFcucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKFUpe3ZhciBlPXJbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09ZT92b2lkIDA6ZX1yZXR1cm4gQy5jYWxsKHIsdCk/clt0XTp2b2lkIDB9LFcucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiBVP3ZvaWQgMCE9PXJbdF06Ry5jYWxsKHIsdCl9LFcucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGVbdF09VSYmdm9pZCAwPT09cj8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6cix0aGlzfTt2YXIgRD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIFgodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19WC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxYLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPXEocix0KTtyZXR1cm4hKGU8MCkmJihlPT1yLmxlbmd0aC0xP3IucG9wKCk6RC5jYWxsKHIsZSwxKSwtLXRoaXMuc2l6ZSwhMCl9LFgucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9fZGF0YV9fLGU9cShyLHQpO3JldHVybiBlPDA/dm9pZCAwOnJbZV1bMV19LFgucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gcSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxYLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9fZGF0YV9fLG49cShlLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLGUucHVzaChbdCxyXSkpOmVbbl1bMV09cix0aGlzfTt2YXIgQj1rKHUsIk1hcCIpO2Z1bmN0aW9uIEgodCxyKXt2YXIgZSxuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihlPXIpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1lOm51bGw9PT1lKT9vWyJzdHJpbmciPT10eXBlb2Ygcj8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIEoodCl7dmFyIHI9LTEsZT1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3I8ZTspe3ZhciBuPXRbcl07dGhpcy5zZXQoblswXSxuWzFdKX19Si5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXLG1hcDpuZXcoQnx8WCksc3RyaW5nOm5ldyBXfX0sSi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciByPUgodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09cj8xOjAscn0sSi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMsdCkuZ2V0KHQpfSxKLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIEgodGhpcyx0KS5oYXModCl9LEoucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3ZhciBlPUgodGhpcyx0KSxuPWUuc2l6ZTtyZXR1cm4gZS5zZXQodCxyKSx0aGlzLnNpemUrPWUuc2l6ZT09bj8wOjEsdGhpc307dmFyIEs9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIFEodCxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihLKTt2YXIgZT1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPXI/ci5hcHBseSh0aGlzLG4pOm5bMF0saT1lLmNhY2hlO2lmKGkuaGFzKG8pKXJldHVybiBpLmdldChvKTt2YXIgdT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIGUuY2FjaGU9aS5zZXQobyx1KXx8aSx1fTtyZXR1cm4gZS5jYWNoZT1uZXcoUS5DYWNoZXx8SiksZX1RLkNhY2hlPUo7dmFyIFYsWSxaLHR0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csZXQ9KFY9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZyLnB1c2goIiIpLHQucmVwbGFjZSh0dCwoZnVuY3Rpb24odCxlLG4sbyl7ci5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOmV8fHQpfSkpLHJ9LFk9UShWLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09Wi5zaXplJiZaLmNsZWFyKCksdH0pKSxaPVkuY2FjaGUsWSksbnQ9ZXQ7dmFyIG90PTEvMCxpdD1hP2EucHJvdG90eXBlOnZvaWQgMCx1dD1pdD9pdC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG4odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytlPG47KW9bZV09cih0W2VdLGUsdCk7cmV0dXJuIG99KHQsYXQpKyIiO2lmKF8odCkpcmV0dXJuIHV0P3V0LmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LW90PyItMCI6cn1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gbnVsbD09dD8iIjphdCh0KX1mdW5jdGlvbiBmdCh0LHIpe3JldHVybiBuKHQpP3Q6ZnVuY3Rpb24odCxyKXtpZihuKHQpKXJldHVybiExO3ZhciBlPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPWUmJiJzeW1ib2wiIT1lJiYiYm9vbGVhbiIhPWUmJm51bGwhPXQmJiFfKHQpKXx8Uy50ZXN0KHQpfHwhai50ZXN0KHQpfHxudWxsIT1yJiZ0IGluIE9iamVjdChyKX0odCxyKT9bdF06bnQoY3QodCkpfXZhciBzdD0xLzA7ZnVuY3Rpb24gbHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxfKHQpKXJldHVybiB0O3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zdD8iLTAiOnJ9ZnVuY3Rpb24gaHQodCxyLGUpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTAsbj0ocj1mdChyLHQpKS5sZW5ndGg7bnVsbCE9dCYmZTxuOyl0PXRbbHQocltlKytdKV07cmV0dXJuIGUmJmU9PW4/dDp2b2lkIDB9KHQscik7cmV0dXJuIHZvaWQgMD09PW4/ZTpufWZ1bmN0aW9uIHB0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKSxuPSExO3RyeXtlLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB5dCh0LHI9e30pe2xldCBlPWh0KHIsImZzIik7cmV0dXJuISFwdCh0LHtmczplfSkmJighZS5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIWUubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGd0KCl7bGV0IHQscixlPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLHI9YXJndW1lbnRzWzFdfSkpO3JldHVybiBlLnJlc29sdmU9dCxlLnJlamVjdD1yLGV9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBidCh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGR0KHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIF90KHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IHI9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihyKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4hIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFVuZGVmaW5lZF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVsbF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8KCEhYnQodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIWR0KHQpfHwwIT09dC5sZW5ndGgpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISF2dCh0KSYmMD09PXQubGVuZ3RofSh0KXx8ISFfdCh0KSkpKSl9ZnVuY3Rpb24gU3QodCl7cmV0dXJuISEoZHQodCkmJnQubGVuZ3RoPjApfXZhciBtdD0vXHMvO3ZhciB3dD0vXlxzKy87ZnVuY3Rpb24gT3QodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJm10LnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2Uod3QsIiIpOnR9dmFyIEV0PU5hTixOdD0vXlstK10weFswLTlhLWZdKyQvaSxBdD0vXjBiWzAxXSskL2ksUnQ9L14wb1swLTddKyQvaSx4dD1wYXJzZUludDtmdW5jdGlvbiAkdCh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoXyh0KSlyZXR1cm4gRXQ7aWYobSh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9bShyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9T3QodCk7dmFyIGU9QXQudGVzdCh0KTtyZXR1cm4gZXx8UnQudGVzdCh0KT94dCh0LnNsaWNlKDIpLGU/Mjo4KTpOdC50ZXN0KHQpP0V0Oit0fXZhciBJdD0xLzAsenQ9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIFB0KHQpe3JldHVybiB0Pyh0PSR0KHQpKT09PUl0fHx0PT09LUl0Pyh0PDA/LTE6MSkqenQ6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEZ0KHQpe3ZhciByPVB0KHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH12YXIgTHQ9IltvYmplY3QgQm9vbGVhbl0iO2Z1bmN0aW9uIFR0KHQpe3JldHVybiEwPT09KHI9dCl8fCExPT09cnx8YihyKSYmdihyKT09THQ7dmFyIHJ9ZnVuY3Rpb24gTXQodCl7bGV0IHI9ITE7aWYoU3QodCkpe2lmKCIiPT09dC50cmltKCkpcmV0dXJuITE7cj0haXNOYU4oTnVtYmVyKHQpKX1lbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoX3QodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBrdCh0KXtpZighTXQodCkpcmV0dXJuIDA7cmV0dXJuIFB0KHQpfWZ1bmN0aW9uIFV0KHQscj17fSl7bGV0IGU9aHQociwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gVHQoZSl8fChlPSExKSwhIU10KHQpJiYodD1rdCh0KSxlP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09RnQobikpO3ZhciBufXZhciBDdD11LmlzRmluaXRlLEd0PU1hdGgubWluO3ZhciBXdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LGUpe2lmKHQ9JHQodCksKGU9bnVsbD09ZT8wOkd0KEZ0KGUpLDI5MikpJiZDdCh0KSl7dmFyIG49KGN0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShjdChyKG5bMF0rImUiKygrblsxXStlKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1lKSl9cmV0dXJuIHIodCl9fSgicm91bmQiKSxxdD1XdDtmdW5jdGlvbiBEdCh0LHI9e30pe2xldCBlPWh0KHIsInVzZUNsYW1wU2FmZSIsbnVsbCk7VHQoZSl8fChlPSExKTtsZXQgbj1odChyLCJ1c2VMaW1pdFNhZmUiLG51bGwpO1R0KG4pfHwobj0hMSk7bGV0IG89aHQociwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTtUdChvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFNdCh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWt0KHQpLGE9cXQodCksZSYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gWHQodCxyPXt9KXtpZighVXQodCxyKSlyZXR1cm4hMTtyZXR1cm4gRHQodCk+PTB9ZnVuY3Rpb24gQnQodCxyKXtpZighU3QodCkpcmV0dXJuIiI7aWYoIVh0KHIpKXJldHVybiIiO2lmKDA9PT0ocj1EdChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gSHQodCxyKXtyZXR1cm4gU3QodCkmJlh0KHIpPzA9PT0ocj1EdChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBTdCh0KSYmWHQocik/MD09PShyPUR0KHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIEp0KHQpe2lmKCFTdCh0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PUJ0KHQsMSkpcmV0dXJue3BhdGg6YCR7dH1cXGAsaXNSb290OiEwfTtpZigiXFwiPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4iOiI9PT1CdChyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09QnQodCwxKSl7bGV0IHI9SHQodCwxKTtyZXR1cm4gMD09PXIubGVuZ3RoP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19cmV0dXJue3BhdGg6dCxpc1Jvb3Q6ITF9fWZ1bmN0aW9uIEt0KHQpe2lmKCFTdCh0KSlyZXR1cm4iIjtsZXQgcj1KdCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfWZ1bmN0aW9uIFF0KHQscj17fSl7bGV0IGU9aHQociwiZnMiKTtpZighcHQodCx7ZnM6ZX0pKXJldHVybiExO2xldCBuPWUubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIFZ0KHQpe3RyeXtyZXR1cm4gU3RyaW5nKHQpfWNhdGNoKHQpe310cnl7bGV0IHI9dC5tZXNzYWdlO2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yKXJldHVybiByfWNhdGNoKHQpe31yZXR1cm4idW5rbm93biBlcnJvciJ9ZnVuY3Rpb24gWXQodCl7bGV0IHI9ITE7dHJ5e3I9ZnVuY3Rpb24odCl7aWYobnVsbD09PXR8fCJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4hMTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuITA7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEVycm9yLmlzRXJyb3IpcmV0dXJuIEVycm9yLmlzRXJyb3IodCk7aWYoU3ltYm9sLnRvU3RyaW5nVGFnIGluIHQpcmV0dXJuITE7bGV0IHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO3JldHVybiJbb2JqZWN0IEVycm9yXSI9PT1yfHwiW29iamVjdCBET01FeGNlcHRpb25dIj09PXJ9KHQpfWNhdGNoKHQpe31pZihyKXJldHVybiB0O2lmKCJzdHJpbmciPT10eXBlb2YgdCYmIiIhPT10KXJldHVybiB0O2xldCBlPVZ0KHQpO3JldHVybiIiIT09ZT9lOiJ1bmtub3duIGVycm9yIn1mdW5jdGlvbiBadCh0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKCFwdCh0LHtmczplfSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIXl0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTtlLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB0cih0LHIsbj17fSl7bGV0IG89IiI7aWYoIXZ0KGk9dCl8fDA9PT1pLmxlbmd0aHx8MT09PWkubGVuZ3RoJiZqdChpWzBdKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgaTtsZXQgdT1mdW5jdGlvbih0KXtpZighU3QodCkpcmV0dXJuIiI7bGV0IHI9SnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1LdCh0PXIucGF0aCk7aWYoIVN0KGUpKXJldHVybiB0O2xldCBuPUp0KHQ9SHQodCxlLmxlbmd0aCkpO3JldHVybiBuLmlzUm9vdCxuLnBhdGh9KHIpLGE9Z3QoKTthLmNhdGNoKCgoKT0+e30pKTtsZXQgYz1udWxsLGY9bnVsbCxzPSExLGw9Z3QoKTtsLmNhdGNoKCgoKT0+e30pKTtsZXQgaD10PT57bGV0IHI7dHJ5e3I9dC5tZXNzYWdlfWNhdGNoKHQpe31yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHI/cjpWdCh0KX07dHJ5e2xldCBpPWh0KG4sImZzIikscD1odChuLCJmbk91dCIsIiIpO1N0KHApfHwocD1LdChyKSksUXQodSx7ZnM6aX0pfHxmdW5jdGlvbih0LHI9e30pe3RyeXtsZXQgZT1odChyLCJmcyIpO2lmKFF0KHQse2ZzOmV9KSlyZXR1cm57c3VjY2VzczoiaW5wdXQgZm9sZGVyIGlzIGFscmVhZHkgZXhpc3RzOiAiK3R9O2lmKHB0KHQse2ZzOmV9KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggYWxyZWFkeSBleGlzdHM6ICIrdH07ZS5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOll0KHQpfX19KHUse2ZzOml9KSxjPWkuY3JlYXRlV3JpdGVTdHJlYW0ociksYy5vbigiZXJyb3IiLCh0PT57cz0hMCxmPXQsbz1oKHQpLGwucmVqZWN0KHQpLGEucmVqZWN0KG8pfSkpLGMub24oImZpbmlzaCIsKCgpPT57bGV0IHQ9e2ZpbGVuYW1lOnAscGF0aDpyfTthLnJlc29sdmUodCl9KSk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHMpdGhyb3cgZjtsZXQgbj10W3JdO2lmKCF5dChuLHtmczppfSkpdGhyb3cgbmV3IEVycm9yKGBmcEluWyR7bn1dIGlzIG5vdCBhIGZpbGVgKTtsZXQgbz1hc3luYygpPT57bGV0IHQ9aS5jcmVhdGVSZWFkU3RyZWFtKG4pLHI9bnVsbDtmb3IgYXdhaXQobGV0IG4gb2YgdCl7aWYocyl0aHJvdyBmO2xldCB0PSExLG89bmV3IFByb21pc2UoKChyLGUpPT57dD0hYy53cml0ZShuLCh0PT57dD9lKHQpOnIoKX0pKX0pKTtvLmNhdGNoKCgoKT0+e30pKSxyPW8sdCYmYXdhaXQgUHJvbWlzZS5yYWNlKFtlLm9uY2UoYywiZHJhaW4iKSxsXSl9aWYobnVsbCE9PXImJmF3YWl0IHIscyl0aHJvdyBmO1p0KG4se2ZzOml9KX07YXdhaXQgbygpfWMuZW5kKCl9Y2F0Y2godCl7bz1oKHQpO3RyeXtjLmRlc3Ryb3koKX1jYXRjaCh0KXt9YS5yZWplY3Qobyl9cmV0dXJuIGF9Y29uc3QgcnI9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gZXIodCxyPXt9KXtsZXQgZT1ndCgpO3RyeXtsZXQgbj1odChyLCJmcyIpLG89aHQociwiY2h1bmtTaXplIik7aWYoZnVuY3Rpb24odCxyPXt9KXtyZXR1cm4hIVV0KHQscikmJkR0KHQpPjB9KG8pfHwobz02NzEwODg2NCksbz1EdChvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXl0KHQse2ZzOm59KSlyZXR1cm4gZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxlO2xldHtjcmVhdGU2NDppfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06cix4eGgzMjplLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6aSxkaWdlc3QzMjp1LGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpO2Z1bmN0aW9uIGwodCxlKXtpZihyLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrZSl7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrZS1yLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ci5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpfX1mdW5jdGlvbiBoKHQscixlLG4sbyxpKXtsKHQpO2NvbnN0IHU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KHUpLGUoMCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUocil7bGV0IGU7cmV0dXJuIHMuc2V0KHUpLCJzdHJpbmciPT10eXBlb2Ygcj8obCgzKnIubGVuZ3RoLHQpLGU9di5lbmNvZGVJbnRvKHIscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoci5ieXRlTGVuZ3RoLHQpLHMuc2V0KHIsdCksZT1yLmJ5dGVMZW5ndGgpLG4oMCx0LGUpLHUuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQodSksaShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHk9Mm4qKjY0bi0xbjtmdW5jdGlvbiBnKHQpe3JldHVybiB0Jnl9Y29uc3Qgdj1uZXcgVGV4dEVuY29kZXIsYj0wLGQ9MG47ZnVuY3Rpb24gXyh0LHI9Yil7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKGUoMCx2LmVuY29kZUludG8odCxzKS53cml0dGVuLHIpKX1mdW5jdGlvbiBqKHQscj1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGcobigwLHYuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4scikpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxyPWIpPT5fKHQscikudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQscj1iKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAoZSgwLHQuYnl0ZUxlbmd0aCxyKSkpLGNyZWF0ZTMyOih0PWIpPT5oKDQ4LHQsbyxpLHUscCksaDY0OmosaDY0VG9TdHJpbmc6KHQscj1kKT0+aih0LHIpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxyPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksZyhuKDAsdC5ieXRlTGVuZ3RoLHIpKSksY3JlYXRlNjQ6KHQ9ZCk9PmgoODgsdCxhLGMsZixnKX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShycikpLmluc3RhbmNlKX0oKSx1PWkoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntlLnJlamVjdChWdCh0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e3UudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ZS5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e2UucmVqZWN0KFZ0KHQpKX0pKX1jYXRjaCh0KXtlLnJlamVjdChWdCh0KSl9cmV0dXJuIGV9bW9kdWxlLmV4cG9ydHM9YXN5bmMoZSxuLG8saSk9PntsZXQgdT1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LnJlc29sdmUobyxgJHtlfV8ke2l9YCk7aWYoIXl0KG4se2ZzOnJ9KSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtufV0gaXMgbm90IGEgZmlsZWApO3UucHVzaChuKX1sZXQgYT1hd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsbj17fSl7dHJ5e3JldHVybiB0cih0LGUse2ZzOnIsLi4ubn0pfWNhdGNoKHQpe2xldCByO3RyeXtyPXQubWVzc2FnZX1jYXRjaCh0KXt9cmV0dXJuIFByb21pc2UucmVqZWN0KCJzdHJpbmciPT10eXBlb2Ygcj9yOlZ0KHQpKX19KHUsaSk7cmV0dXJuey4uLmEsaGFzaDphd2FpdCBmdW5jdGlvbih0LGU9e30pe3RyeXtyZXR1cm4gZXIodCx7ZnM6ciwuLi5lfSl9Y2F0Y2godCl7cmV0dXJuIFByb21pc2UucmVqZWN0KFZ0KHQpKX19KGkpfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(Vs);var Hs=nn(Vs.exports);let Us=new Set,Bs=new Map,Qs=(t,r,n="")=>{let s=e.resolve(r,t);return{fp:s,fpm:`${s}.merging`,fpd:`${s}.done`,fpe:`${s}.error`,fpr:er(n)?`${s}.q${n}.ro`:""}},Rs=e=>{let t=Pn(e);if(Pr(e))throw new Error(`can not remove ${e}: ${fn(ye(t,"error"))}`)},Os=async(e,r)=>{Us.add(r.fp);try{let n=await function(e,r={}){try{return ks(e,{fs:t,...r})}catch(e){return Promise.reject(Zn(e))}}(r.fp);if(n===e)return t.writeFileSync(r.fpd,"","utf8"),{state:"done"};let s=`merged file[${r.fp}] is incomplete: hash[${n}] != fileHash[${e}], merge was interrupted`;try{t.writeFileSync(r.fpe,s,"utf8")}catch(e){console.log(`can not write ${r.fpe}`,e)}return{state:"mismatch",reason:s}}catch(e){return{state:"error",reason:`verify merged file[${r.fp}] error: ${fn(e)}`}}finally{Us.delete(r.fp)}},Ps=async(e,r,n)=>{let s=`${function(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYYMMDDHHmmss")}()}|${ps(6)}|${e}`,i=Qs(e,n);if(Us.has(i.fp))return s;let u=Pr(i.fpe),o=Pr(i.fp);if(!u&&o){let t=await Os(e,i);if("done"===t.state)return s;if("error"===t.state)throw new Error(t.reason)}return Rs(i.fpd),Rs(i.fpe),Us.add(i.fp),setTimeout(()=>{Hs(e,r,n,i.fpm).then(r=>{let n=ye(r,"hash","");if(n!==e)throw new Error(`merged file hash[${n}] != fileHash[${e}]`);t.renameSync(i.fpm,i.fp),t.writeFileSync(i.fpd,"","utf8")}).catch(e=>{console.log(e),Pn(i.fpm);let r=fn(e);try{t.writeFileSync(i.fpe,r,"utf8")}catch(e){console.log(`can not write ${i.fpe}`,e)}}).finally(()=>{Us.delete(i.fp)})},1),s},Js=async(e,r,n={})=>{let s=ye(n,"funConsume"),i=ye(n,"funLog");Gr(i)||(i=e=>{console.log(e)});let u=Ks(e,"|"),o=ye(u,0,""),l=ye(u,1,""),a=ye(u,2,"");if(3!==ys(u)||!Jn(o)||!Jn(l)||!Jn(a)){let t=`invalid queueId[${fn(e)}]`;return console.log(t),{state:"error",msg:"invalid queueId",reason:t,path:""}}let c=Qs(a,r,`${o}${l}`);if(Pr(c.fpr)){let e=((e,r)=>{try{let n=Qn(new Uint8Array(t.readFileSync(e.fpr)),{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r(`stored result ${e.fpr} is corrupted, treat as not stored: ${ye(n,"msg","unknown error")}`),{ok:!1};let s=n.msg;return $t(s)&&dn(s,"ro")?{ok:!0,ro:s.ro}:(r(`stored result ${e.fpr} has no own 'ro' key, treat as not stored`),{ok:!1})}catch(t){return r(`can not read stored result ${e.fpr}: ${fn(t)}`),{ok:!1}}})(c,i);if(e.ok)return{state:"success",msg:e.ro,path:c.fp,from:"stored"}}if(Pr(c.fpe)){let e="";try{e=t.readFileSync(c.fpe,"utf8")}catch(e){}return{state:"error",msg:"merge slices failed",reason:e,path:c.fp}}if(Us.has(c.fp))return{state:"merging",msg:"",path:c.fp};let d=Pr(c.fp),D=Pr(c.fpd);if(d&&!D){let e=await Os(a,c);if("done"!==e.state)return{state:"error",msg:"merge slices failed",reason:e.reason,path:c.fp};D=!0}if(d&&D){if(!Gr(s))return{state:"success",msg:"",path:c.fp};let e=await((e,r,n)=>{let s=e.fpr,i=Bs.get(s);return i||(i=Promise.resolve().then(()=>r(e.fp)).then(r=>{r=void 0===r?null:r;try{let n=Vn({ro:r},{returnWithStateAndMsg:!0});if("success"!==ye(n,"state"))return r;t.writeFileSync(e.fpr,Buffer.from(n.msg));let s=Qn(n.msg,{returnWithStateAndMsg:!0});if("success"===ye(s,"state")&&$t(s.msg)&&dn(s.msg,"ro"))return s.msg.ro}catch(t){n(`can not store consumed result to ${e.fpr}: ${fn(t)}`)}return r}).finally(()=>{Bs.delete(s)}),Bs.set(s,i),i)})(c,s,i);return{state:"success",msg:e,path:c.fp,from:"consumed"}}return!d&&D?{state:"error",msg:"merged file already consumed",reason:`merged file[${c.fp}] no longer exists and no stored result for queueId[${e}]`,path:c.fp}:{state:"error",msg:"no merge task",reason:`no merge task for fileHash[${a}] (never pushed, or artifacts removed)`,path:c.fp}};var $s={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLGg9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgcD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LGgpLHI9dFtoXTt0cnl7dFtoXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtoXT1yOmRlbGV0ZSB0W2hdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gcC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLFM9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sTz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsej1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsRT16JiZ6LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCx4PShFP0UuaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sTj05MDA3MTk5MjU0NzQwOTkxLEY9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIGsodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/TjplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmRi50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEk9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiAkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1JfXZhciBMPXt9O0xbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUxbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPUxbIltvYmplY3QgSW50OEFycmF5XSJdPUxbIltvYmplY3QgSW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IEludDMyQXJyYXldIl09TFsiW29iamVjdCBVaW50OEFycmF5XSJdPUxbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09TFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1MWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLExbIltvYmplY3QgQXJndW1lbnRzXSJdPUxbIltvYmplY3QgQXJyYXldIl09TFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1MWyJbb2JqZWN0IEJvb2xlYW5dIl09TFsiW29iamVjdCBEYXRhVmlld10iXT1MWyJbb2JqZWN0IERhdGVdIl09TFsiW29iamVjdCBFcnJvcl0iXT1MWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPUxbIltvYmplY3QgTWFwXSJdPUxbIltvYmplY3QgTnVtYmVyXSJdPUxbIltvYmplY3QgT2JqZWN0XSJdPUxbIltvYmplY3QgUmVnRXhwXSJdPUxbIltvYmplY3QgU2V0XSJdPUxbIltvYmplY3QgU3RyaW5nXSJdPUxbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgTSxQPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsVD1QJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUj1UJiZULmV4cG9ydHM9PT1QJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1UJiZULnJlcXVpcmUmJlQucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxSJiZSLmJpbmRpbmcmJlIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksQj1VJiZVLmlzVHlwZWRBcnJheSxEPUI/KE09QixmdW5jdGlvbih0KXtyZXR1cm4gTSh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiYkKHQubGVuZ3RoKSYmISFMW2QodCldfSxXPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gQyh0LGUpe3ZhciByPU8odCksbj0hciYmUyh0KSxvPSFyJiYhbiYmeCh0KSx1PSFyJiYhbiYmIW8mJkQodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIVcuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8ayhmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBHPU9iamVjdC5wcm90b3R5cGU7dmFyIHE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLFY9cSxYPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxHKSlyZXR1cm4gVih0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlYLmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEoodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIEs9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFE9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFKKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVF8fGU9PVl8fGU9PUt8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJiQodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP0ModCk6SCh0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKE8odCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIGh0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHB0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PXB0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSih0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6aHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLFN0PV90KGEsIlNldCIpLE90PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix6dD0iW29iamVjdCBQcm9taXNlXSIsRXQ9IltvYmplY3QgU2V0XSIseHQ9IltvYmplY3QgV2Vha01hcF0iLE50PSJbb2JqZWN0IERhdGFWaWV3XSIsRnQ9bHQoanQpLGt0PWx0KG10KSxJdD1sdCh3dCksJHQ9bHQoU3QpLEx0PWx0KE90KSxNdD1kOyhqdCYmTXQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1OdHx8bXQmJk10KG5ldyBtdCkhPUF0fHx3dCYmTXQod3QucmVzb2x2ZSgpKSE9enR8fFN0JiZNdChuZXcgU3QpIT1FdHx8T3QmJk10KG5ldyBPdCkhPXh0KSYmKE10PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBGdDpyZXR1cm4gTnQ7Y2FzZSBrdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4genQ7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSBMdDpyZXR1cm4geHR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gUnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9UnQoImxlbmd0aCIpLEJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBEdCh0KXtyZXR1cm4gQnQudGVzdCh0KX12YXIgV3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK1d0KyJdIixHdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrV3QrIl0iLFh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrR3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxYdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxZdD0iKD86IitbVnQrR3QrIj8iLEd0LFh0LEh0LEN0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1l0K1F0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIER0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhTyhlKSYmZyhlKSYmZChlKT09VHQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1QdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkgodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBoZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxoZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LGhlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gcGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1wZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBoZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBoZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxoPSEwLHA9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtoPSExO2JyZWFrfWlmKHApe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhcC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gcC5wdXNoKGUpO3ZhciBpfSkpKXtoPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtoPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSksaH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLFNlPTIsT2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix6ZT0iW29iamVjdCBFcnJvcl0iLEVlPSJbb2JqZWN0IE1hcF0iLHhlPSJbb2JqZWN0IE51bWJlcl0iLE5lPSJbb2JqZWN0IFJlZ0V4cF0iLEZlPSJbb2JqZWN0IFNldF0iLGtlPSJbb2JqZWN0IFN0cmluZ10iLEllPSJbb2JqZWN0IFN5bWJvbF0iLCRlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsTGU9IltvYmplY3QgRGF0YVZpZXddIixNZT1jP2MucHJvdG90eXBlOnZvaWQgMCxQZT1NZT9NZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBUZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIFJlPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsVWU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxCZT1VZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksVGUoVWUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBSZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIE8odCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LEJlKX12YXIgV2U9MSxDZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBHZT0xLHFlPSJbb2JqZWN0IEFyZ3VtZW50c10iLFZlPSJbb2JqZWN0IEFycmF5XSIsWGU9IltvYmplY3QgT2JqZWN0XSIsSGU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKZSh0LGUscixuLG8sdSl7dmFyIGk9Tyh0KSxhPU8oZSksYz1pP1ZlOlB0KHQpLGY9YT9WZTpQdChlKSxzPShjPWM9PXFlP1hlOmMpPT1YZSxsPShmPWY9PXFlP1hlOmYpPT1YZSxoPWM9PWY7aWYoaCYmeCh0KSl7aWYoIXgoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKGgmJiFzKXJldHVybiB1fHwodT1uZXcgcGUpLGl8fEQodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIExlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSAkZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBPZTpjYXNlIEFlOmNhc2UgeGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHplOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBOZTpjYXNlIGtlOnJldHVybiB0PT1lKyIiO2Nhc2UgRWU6dmFyIGE9amU7Y2FzZSBGZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1TZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEllOmlmKFBlKXJldHVybiBQZS5jYWxsKHQpPT1QZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImR2UpKXt2YXIgcD1zJiZIZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZIZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYocHx8dil7dmFyIHk9cD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBwZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIWgmJih1fHwodT1uZXcgcGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJldlLGE9RGUodCksYz1hLmxlbmd0aDtpZihjIT1EZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpDZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLGg9dS5nZXQoZSk7aWYobCYmaClyZXR1cm4gbD09ZSYmaD09dDt2YXIgcD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7cD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihwJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KHA9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIEtlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6SmUodCxlLHIsbixLZSxvKSl9dmFyIFFlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUoodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBwZTtpZihuKXZhciBoPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09aD9LZShzLGYsUWV8WWUsbixsKTpoKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihPKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxoZSkscn1jci5DYWNoZT1oZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxocj1scixwcj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihPKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tcHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIE8odCk/dDppcih0LGUpP1t0XTpocihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJiQobykmJmsoaSxvKSYmKE8odCl8fFModCkpfSh0LGUsU3IpfXZhciBBcj0xLHpyPTI7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIGlyKHQpP1J0KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiB4cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P08odCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP09yKHIsdCk6S2UoZSxuLEFyfHpyKX19KHRbMF0sdFsxXSk6ZXIodCk6RXIodCl9ZnVuY3Rpb24gTnIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIEZyKHQsZSl7cmV0dXJuKE8odCk/cmU6TnIpKHQseHIoZSkpfXZhciBrcj0vXHMvO3ZhciBJcj0vXlxzKy87ZnVuY3Rpb24gJHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJmtyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoSXIsIiIpOnR9ZnVuY3Rpb24gTHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gTXIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUHIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsTXIscil9dmFyIFRyPSJcXHVkODAwLVxcdWRmZmYiLFJyPSJbIitUcisiXSIsVXI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixCcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixEcj0iW14iK1RyKyJdIixXcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsQ3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEdyPSIoPzoiK1VyKyJ8IitCcisiKSIrIj8iLHFyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsVnI9cXIrR3IrKCIoPzpcXHUyMDBkKD86IitbRHIsV3IsQ3JdLmpvaW4oInwiKSsiKSIrcXIrR3IrIikqIiksWHI9Iig/OiIrW0RyK1VyKyI/IixVcixXcixDcixScl0uam9pbigifCIpKyIpIixIcj1SZWdFeHAoQnIrIig/PSIrQnIrIil8IitYcitWciwiZyIpO2Z1bmN0aW9uIEpyKHQpe3JldHVybiBEdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChIcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIEtyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gJHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49SnIodCksbz1KcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJlByKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZQcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBMcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gUXIodCl7cmV0dXJuISEoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpJiZ0Lmxlbmd0aD4wKX1mdW5jdGlvbiBZcih0LGUpe2lmKCFRcih0KSlyZXR1cm5bXTtpZighUXIoZSkpcmV0dXJuW107bGV0IHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUXIodCkmJlFyKGUpP3Quc3BsaXQoZSk6W119KHQsZSk7cj1GcihyLEtyKTtsZXQgbj1bXTtyZXR1cm4gaXQociwoZnVuY3Rpb24odCl7UXIodCkmJm4ucHVzaCh0KX0pKSxufXZhciBacj1OYU4sdG49L15bLStdMHhbMC05YS1mXSskL2ksZW49L14wYlswMV0rJC9pLHJuPS9eMG9bMC03XSskL2ksbm49cGFyc2VJbnQ7ZnVuY3Rpb24gb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG5yKHQpKXJldHVybiBacjtpZihKKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1KKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD0kcih0KTt2YXIgcj1lbi50ZXN0KHQpO3JldHVybiByfHxybi50ZXN0KHQpP25uKHQuc2xpY2UoMikscj8yOjgpOnRuLnRlc3QodCk/WnI6K3R9dmFyIHVuPTEvMCxhbj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gY24odCl7cmV0dXJuIHQ/KHQ9b24odCkpPT09dW58fHQ9PT0tdW4/KHQ8MD8tMToxKSphbjp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gZm4odCl7dmFyIGU9Y24odCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciBzbj0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gbG4odCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxnKGUpJiZkKGUpPT1zbjt2YXIgZX1mdW5jdGlvbiBobih0KXtsZXQgZT0hMTtpZihRcih0KSl7aWYoIiI9PT10LnRyaW0oKSlyZXR1cm4hMTtlPSFpc05hTihOdW1iZXIodCkpfWVsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtpZih0IT10KXJldHVybiEwO2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpdHJ5e2xldCBlPU51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHQpO3JldHVybiBOdW1iZXIuaXNOYU4oZSl9Y2F0Y2godCl7cmV0dXJuITF9cmV0dXJuITF9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gcG4odCl7aWYoIWhuKHQpKXJldHVybiAwO3JldHVybiBjbih0KX1mdW5jdGlvbiB2bih0LGU9e30pe2xldCByPXdyKGUsInVzZUxpbWl0U2FmZSIsbnVsbCk7cmV0dXJuIGxuKHIpfHwocj0hMSksISFobih0KSYmKHQ9cG4odCkscj9OdW1iZXIuaXNTYWZlSW50ZWdlcih0KToibnVtYmVyIj09dHlwZW9mKG49dCkmJm49PWZuKG4pKTt2YXIgbn12YXIgeW49YS5pc0Zpbml0ZSxibj1NYXRoLm1pbjt2YXIgZG49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PW9uKHQpLChyPW51bGw9PXI/MDpibihmbihyKSwyOTIpKSYmeW4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksZ249ZG47ZnVuY3Rpb24gX24odCxlPXt9KXtsZXQgcj13cihlLCJ1c2VDbGFtcFNhZmUiLG51bGwpO2xuKHIpfHwocj0hMSk7bGV0IG49d3IoZSwidXNlTGltaXRTYWZlIixudWxsKTtsbihuKXx8KG49ITEpO2xldCBvPXdyKGUsInJldHVybldpdGhTdGF0ZUFuZE1zZyIsbnVsbCk7bG4obyl8fChvPSExKTtsZXQgdT10PT5vP3tzdGF0ZToic3VjY2VzcyIsbXNnOnR9OnQsaT10PT57aWYobylyZXR1cm57c3RhdGU6ImVycm9yIixtc2c6dH07dGhyb3cgbmV3IEVycm9yKHQpfTtpZighaG4odCkpcmV0dXJuIHUoMCk7bGV0IGE9bnVsbDt0cnl7dD1wbih0KSxhPWduKHQpLHImJihhPk51bWJlci5NQVhfU0FGRV9JTlRFR0VSP2E9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI6YTxOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiYmKGE9TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKX1jYXRjaCh0KXtyZXR1cm4gaSh0LnRvU3RyaW5nKCkpfXJldHVybiBuJiYhTnVtYmVyLmlzU2FmZUludGVnZXIoTnVtYmVyKGEpKT9pKGB2WyR7dH1dIGlzIG5vdCBhIHNhZmUgaW50ZWdlcmApOigiMCI9PT1TdHJpbmcoYSkmJihhPTApLHUoYSkpfWZ1bmN0aW9uIGpuKHQsZT17fSl7aWYoIXZuKHQsZSkpcmV0dXJuITE7cmV0dXJuIF9uKHQpPj0wfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPSExO3RyeXtyLnN0YXRTeW5jKHQpLG49ITB9Y2F0Y2h7bj0hMX1yZXR1cm4gbn1mdW5jdGlvbiB3bih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFtbih0LHtmczpyfSkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIFNuKHQpe3JldHVybiB3bih0LHtmczplfSl9ZnVuY3Rpb24gT24odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBBbih0LGU9e30pe2lmKCF2bih0LGUpKXJldHVybiExO3JldHVybiBfbih0KT4wfWZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighbW4odCx7ZnM6cn0pKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIEVuKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIXpuKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBudWxsIT09ZSYmQW4oZSkmJihlPV9uKGUpKTwxJiYoZT0xKSxmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiB6bihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShPKGk9dSk/VGU6T24pKGkseHIoYSkpLHU9RnIodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTtmdW5jdGlvbiBObih0KXt0cnl7cmV0dXJuIFN0cmluZyh0KX1jYXRjaCh0KXt9dHJ5e2xldCBlPXQubWVzc2FnZTtpZigic3RyaW5nIj09dHlwZW9mIGUmJiIiIT09ZSlyZXR1cm4gZX1jYXRjaCh0KXt9cmV0dXJuInVua25vd24gZXJyb3IifWFzeW5jIGZ1bmN0aW9uIEZuKHQsZT17fSl7bGV0IHI9ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0IG49d3IoZSwiZnMiKSxvPXdyKGUsImNodW5rU2l6ZSIpO2lmKEFuKG8pfHwobz02NzEwODg2NCksbz1fbihvKSxvPjIqKjMwJiYobz02NzEwODg2NCksIXduKHQse2ZzOm59KSlyZXR1cm4gci5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKSxyO2xldHtjcmVhdGU2NDp1fT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBoKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIHAodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxwKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHAocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5oKDQ4LHQsbyx1LGkscCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PmgoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSxpPXUoKSxhPW4uY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm99KSxjPXQ9PntyLnJlamVjdChObih0KSk7dHJ5e2EuZGVzdHJveSgpfWNhdGNoKHQpe319O2Eub24oImRhdGEiLCh0PT57dHJ5e2kudXBkYXRlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVuZCIsKCgpPT57dHJ5e2xldCB0PWkuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7ci5yZXNvbHZlKHQpfWNhdGNoKHQpe2ModCl9fSkpLGEub24oImVycm9yIiwodD0+e3IucmVqZWN0KE5uKHQpKX0pKX1jYXRjaCh0KXtyLnJlamVjdChObih0KSl9cmV0dXJuIHJ9bW9kdWxlLmV4cG9ydHM9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LnJlc29sdmUodSxvKSxhPSExO2lmKGE9U24oaSksIWpuKHIse3VzZUxpbWl0U2FmZTohMH0pKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fXI9X24ocik7bGV0IGM9ITE7aWYoYSl7bGV0IHQ9LTE7dHJ5e3Q9ZS5zdGF0U3luYyhpKS5zaXplfWNhdGNoKHQpe2NvbnNvbGUubG9nKCJjaGVjayB0b3RhbCBmaWxlIHNpemU6IGZzLnN0YXRTeW5jKHBhdGhGaWxlKSIsaSx0KX1jPXI9PT10fWxldCBmPSExO2EmJmMmJmF3YWl0IGZ1bmN0aW9uKHQscj17fSl7dHJ5e3JldHVybiBGbih0LHtmczplLC4uLnJ9KX1jYXRjaCh0KXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoTm4odCkpfX0oaSkudGhlbigodD0+e2Y9bz09PXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZygiZnNJc0ZpbGUocGF0aEZpbGUpIixpLFNuKGkpKSxjb25zb2xlLmxvZyh0KSxmPSExfSkpO2xldCBzPVtdO2lmKCFmKXtpdChmdW5jdGlvbihyLG49MSl7cmV0dXJuIEVuKHIsbix7cGF0aDp0LGZzOmV9KX0odSksKHQ9PntsZXQgcj10Lm5hbWUuc3RhcnRzV2l0aChgJHtvfV9gKSx1PSExO3RyeXtsZXQgcj1lLnN0YXRTeW5jKHQucGF0aCk7dT1yLnNpemU+MCYmci5zaXplPD1ufWNhdGNoKGUpe2NvbnNvbGUubG9nKCJjaGVjayBlYWNoIGZpbGUgc2l6ZTogZnMuc3RhdFN5bmMocGF0aEZpbGUpIix0LnBhdGgsZSl9aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZigham4ocikpcmV0dXJuIHZvaWQgY29uc29sZS5sb2coYHNraXAgZmlsZVske3QubmFtZX1dOiBjYW4gbm90IHBhcnNlIGNodW5rIGluZGV4YCk7cj1fbihyKSxzLnB1c2gocil9dmFyIGksYX0pKX1sZXQgbD1lZShzKT4wO3JldHVybntwYXRoOmksYkFsbEV4aXN0OmEsYkFsbFNpemU6YyxiQWxsSGFzaDpmLGJTbHM6bCxzbGtzOnN9fTsKCiAgICB9KS5jYWxsKG1kVXNlci5leHBvcnRzLCBtZFVzZXIsIG1kVXNlci5leHBvcnRzKQoKICAgIC8v6aCQ6Kit5Yyv5Ye6OiByb2xsdXDku6VfX2VzTW9kdWxl5qiZ56S66aCQ6Kit6IiH5YW35ZCN5Lim5a2Y6ICFLCDlj5blhbZkZWZhdWx0OyDlkKbliYdtb2R1bGUuZXhwb3J0c+WNs+mgkOioreWMr+WHuijlj6rmnInlhbflkI3ljK/lh7rogIXngrrlkb3lkI3nqbrplpPnianku7YpCiAgICByZXR1cm4gKG1kVXNlci5leHBvcnRzICYmIG1kVXNlci5leHBvcnRzLl9fZXNNb2R1bGUgJiYgJ2RlZmF1bHQnIGluIG1kVXNlci5leHBvcnRzKSA/IG1kVXNlci5leHBvcnRzLmRlZmF1bHQgOiBtZFVzZXIuZXhwb3J0cwoKfSkoKSkKCg==",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}($s);var _s=nn($s.exports),qs={exports:{}};!function(e){var t,r;e.exports=(t=u,r={},function(e){e.exports=function(e){var t={};!function(e){var t=Object.prototype.hasOwnProperty,r="~";function n(){}function s(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function i(e,t,n,i,u){if("function"!=typeof n)throw new TypeError("The listener must be a function");var o=new s(n,i||e,u),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function o(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,n,s=[];if(0===this._eventsCount)return s;for(n in e=this._events)t.call(e,n)&&s.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?s.concat(Object.getOwnPropertySymbols(e)):s},o.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var s=0,i=n.length,u=new Array(i);s<i;s++)u[s]=n[s].fn;return u},o.prototype.listenerCount=function(e){var t=r?r+e:e,n=this._events[t];return n?n.fn?1:n.length:0},o.prototype.emit=function(e,t,n,s,i,u){var o=r?r+e:e;if(!this._events[o])return!1;var l,a,c=this._events[o],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,s),!0;case 5:return c.fn.call(c.context,t,n,s,i),!0;case 6:return c.fn.call(c.context,t,n,s,i,u),!0}for(a=1,l=new Array(d-1);a<d;a++)l[a-1]=arguments[a];c.fn.apply(c.context,l)}else{var D,M=c.length;for(a=0;a<M;a++)switch(c[a].once&&this.removeListener(e,c[a].fn,void 0,!0),d){case 1:c[a].fn.call(c[a].context);break;case 2:c[a].fn.call(c[a].context,t);break;case 3:c[a].fn.call(c[a].context,t,n);break;case 4:c[a].fn.call(c[a].context,t,n,s);break;default:if(!l)for(D=1,l=new Array(d-1);D<d;D++)l[D-1]=arguments[D];c[a].fn.apply(c[a].context,l)}}return!0},o.prototype.on=function(e,t,r){return i(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return i(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,n,s){var i=r?r+e:e;if(!this._events[i])return this;if(!t)return u(this,i),this;var o=this._events[i];if(o.fn)o.fn!==t||s&&!o.once||n&&o.context!==n||u(this,i);else{for(var l=0,a=[],c=o.length;l<c;l++)(o[l].fn!==t||s&&!o[l].once||n&&o[l].context!==n)&&a.push(o[l]);a.length?this._events[i]=1===a.length?a[0]:a:u(this,i)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&u(this,t)):(this._events=new n,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o}({get exports(){return t},set exports(e){t=e}});var r=t;let n;return function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let t=(s="J3VzZSBzdHJpY3QnCgoKCjsoZnVuY3Rpb24gKHBhcmVudFBvcnQsIG1kRGVmYXVsdCkgewoKbGV0IGluc3RhbmNlID0gbnVsbApsZXQgaW5pdEZhaWwgPSBudWxsIC8v5Yid5aeL5YyW5aSx5pWXKOW3peW7oOWHveaVuOaLi+mMr+etiSnmmYLkuYt7IGVyciB9LCDku6Xnianku7bljIXoo53lm6DpjK/oqqTlgLzlj6/ngrrku7vmhI/lgLw7IOW+jOe6jOWRvOWPq+S7peWFtuWOn+Wni+mMr+iqpOWbnuaHiQpmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBtZERlZmF1bHQKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEsIGRlc2MpIHsKICAgIHRyeSB7CiAgICAgICAgcGFyZW50UG9ydC5wb3N0TWVzc2FnZShkYXRhKQogICAgfQogICAgY2F0Y2ggKGVycikgewogICAgICAgIC8vZGF0YeWQq+eEoeazlee1kOani+WMluikh+ijveS5i+WFp+WuuSjlh73mlbjjgIFTeW1ib2znrYkp5pmCcG9zdE1lc3NhZ2XlkIzmraXmi4tEYXRhQ2xvbmVFcnJvcjog5LiN6JmV55CG5YmH5ouL5pa85ZG85Y+r6Lev5b6R5aSWLCDmlrxub2RlanPmiJB3b3JrZXLmnKrmjZXmjYnpjK/oqqTogIzltKnmvbAo5oyB5LmF6IiH5bel5bug5a+m6auU5b6e5q2k5q275LqhKSwg5pa854CP6Ka95Zmo5oiQ5pyq6JmV55CGcmVqZWN0aW9u6ICM5ZG85Y+r5rC45LmF5oe4572uOwogICAgICAgIC8v5L6d6KiK5oGv6aGe5Z6L5pS56YCB5Y+v6KSH6KO95LmL5a2X5Liy6Kqq5piOKGRlc2PngrrlhaflrrnkuYvmj4/ov7ApLCDkvb/lkbzlj6vnq6/lvpfliLDlhbflkI3ljp/lm6DkuJR3b3JrZXLnuozlj6/mnI3li5k7IOWFnOW6leWGjeWkseaVl+WNs+aUvuajhCwg5LiN5Y+v6YGe6L+0CiAgICAgICAgbGV0IG1zZyA9ICcnCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbXNnID0gZGVzYyArICcgY291bGQgbm90IGJlIGNsb25lZDogJyArIFN0cmluZygoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnIpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgICAgIGxldCBkYXRhU2FmZSA9IG51bGwKICAgICAgICBpZiAoZGF0YS5tb2RlID09PSAncmV0dXJuJykgewogICAgICAgICAgICBkYXRhU2FmZSA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICAgICAgc3RhdGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGF0YS5tb2RlID09PSAnZW1pdCcpIHsKICAgICAgICAgICAgZGF0YVNhZmUgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2csCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRhdGFTYWZlID0gewogICAgICAgICAgICAgICAgbW9kZTogZGF0YS5tb2RlLCAvL21lc3NhZ2VlcnJvcuS5i+mAmuefpeS4jeWPr+eVpemBjiwg5ZCm5YmH5aSW5bGk5ZG85Y+r5Lit5LmLcGVuZGluZ+aHuOe9rgogICAgICAgICAgICAgICAgbXNnLAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YVNhZmUpCiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7fQogICAgfQp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZERlZmF1bHQKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKCiAgICAgICAgICAgIC8vaW5pdEZhaWwKICAgICAgICAgICAgaW5pdEZhaWwgPSB7IGVyciB9CgogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMsICdpbml0IGVycm9yJykKCiAgICAgICAgfQoKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9jaGVjaywg5Yid5aeL5YyW5aSx5pWX5pmCaW5zdGFuY2XngrpudWxsLCDku6XliJ3lp4vljJbkuYvljp/lp4vpjK/oqqTlm57mh4ko5ZCM5bu656uL5aSx5pWX5LmL6JmV572uKSwg5LiN5b6X5bCNbnVsbOWPluWAvOiAjOW+l+iqpOWwjuS5i1R5cGVFcnJvcgogICAgICAgICAgICBpZiAoaW5pdEZhaWwpIHsKICAgICAgICAgICAgICAgIHRocm93IGluaXRGYWlsLmVycgogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2Z1biwg6aCI54K65Ye95pW4LCDlkKbliYfku6XlhbflkI3oqIrmga/mi5LntZUo5LiN5b6X54K65bCNdW5kZWZpbmVk5Y+W5YC85oiW5ZG85Y+r5LmL6Kqk5bCOVHlwZUVycm9yKQogICAgICAgICAgICBsZXQgZnVuID0gKGluc3RhbmNlICE9PSBudWxsICYmIGluc3RhbmNlICE9PSB1bmRlZmluZWQpID8gaW5zdGFuY2VbZGF0YS5mdW5dIDogdW5kZWZpbmVkCiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uWycgKyBkYXRhLmZ1biArICddIGlzIG5vdCBhIGZ1bmN0aW9uIGluIHdvcmtlcicpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjLCDku6Vhd2FpdOWPluWAvDog6Z2eYXN5bmPlh73mlbjlm57lgrPpnZ5wcm9taXNl5pmC5Lqm5Y+v5Lqk5LuYLCDkuI3lvpflm6Dlkbzlj6sudGhlbuiAjOWkseaVlzsg5LulUmVmbGVjdC5hcHBseeaMh+WumnRoaXMo6KaLY3RoaXMpCiAgICAgICAgICAgIG1zZyA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZnVuLCB1bmRlZmluZWQsIGlucHV0KQogICAgICAgICAgICBzdGF0ZSA9ICdzdWNjZXNzJwoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KCiAgICAgICAgLy9kZXNjLCDlm57mh4nlhaflrrnnhKHms5XntZDmp4vljJbopIfoo73mmYLlhZzlupXoqqrmmI7kuYvmj4/ov7AKICAgICAgICBsZXQgZGVzYyA9ICcnCiAgICAgICAgaWYgKHN0YXRlID09PSAnc3VjY2VzcycpIHsKICAgICAgICAgICAgZGVzYyA9ICdyZXR1cm4gdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGluaXRGYWlsKSB7CiAgICAgICAgICAgIGRlc2MgPSAnaW5pdCBlcnJvcicKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlc2MgPSAncmVqZWN0ZWQgdmFsdWUgb2YgZnVuY3Rpb25bJyArIGRhdGEuZnVuICsgJ10nCiAgICAgICAgfQoKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMsIGRlc2MpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBwYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJywgcmVjdk1lc3NhZ2UpCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZWVycm9yJywgKGVycikgPT4gewogICAgICAgICAgICBzZW5kTWVzc2FnZSh7IG1vZGU6ICdtZXNzYWdlZXJyb3InLCBtc2c6IGVyciB9LCAnbWVzc2FnZWVycm9yIG9mIHdvcmtlcicpCiAgICAgICAgfSkKICAgICAgICAKCnRyeXsKCiAgICAvL+WDheS7pXVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcuiomOmMhHdvcmtlcuWFp+acquaNleaNiemMr+iqpCwg5LiN5Y+v6Ki75YaKdW5jYXVnaHRFeGNlcHRpb27oiId1bmhhbmRsZWRSZWplY3Rpb27nm6Pogb06CiAgICAvL+aWvHdvcmtlcuWFp+iou+WGiuipsuS6jOebo+iBveacg+mYu+atondvcmtlcuS+nemgkOioree1guatoiwg5aSW5bGk5pS25LiN5YiwZXJyb3IvZXhpdOiAjOS7pHBlbmRpbmfmsLjkuYXmh7jnva4sIOaureWxjXdvcmtlcuS4puS7pOWuv+S4u+eEoeazlemAgOWHujsKICAgIC8v6Yyv6Kqk6ZuW5bey57aTZXJyb3Lkuovku7blgrPoh7PlpJblsaRyZWplY3QgcGVuZGluZywg5L2G54ShcGVuZGluZ+S4lOWRvOWPq+err+acquebo+iBvWVycm9y5pmCKGV2ZW50ZW1pdHRlcjPnhKHnm6Pogb3ogIXmmYJlbWl05LiN5ouL6YyvKeatpOi8uOWHuueCuuWUr+S4gOeXlei3oSwg5pWF5L+d55WZOwogICAgLy/mnKznm6Pogb3mlrzooqvljIXoo53nqIvlvI/norzln7fooYzkuYvlvozmiY3lronoo50sIOi8ieWFpeacn+S5i+mMr+iqpOS4jee2k+atpOiomOmMhAogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikgLy/oqLrmlrfovLjlh7roh7NzdGRlcnIo5ZCMTm9kZeacquaNleaNiemMr+iqpOS5i+aFo+S+iyksIHdvcmtlcuS5i3N0ZGlv6L2J6YCB6Iez5a6/5Li7LCDkuI3lvpfmt7flhaXlrr/kuLtzdGRvdXTkuYvos4fmlpnmtYEKICAgIH0pCgp9CmNhdGNoKGVycil7fQoKfSkoCi8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwpyZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLnBhcmVudFBvcnQsIC8vaW5uZXLku6VuZXcgV29ya2VyKGNvZGUsIHsgZXZhbDogdHJ1ZSB9KeWft+ihjCwgZXZhbOWtl+S4sumgkOioreS7pUNvbW1vbkpT6Kej5p6QKOiIh3BhY2thZ2UuanNvbuS5i3R5cGXnhKHpl5wsIOWDheeUsS0taW5wdXQtdHlwZeaxuuWumiksIOaVheW+l+S9v+eUqHJlcXVpcmUKLy/oqK3oqIjpmZDliLY6IOWuv+S4u+S7pS0taW5wdXQtdHlwZT1tb2R1bGXllZ/li5XmmYJ3b3JrZXLnubzmib/oqbLlj4PmlbgsIGlubmVy6KKr55W2RVNN6Kej5p6Q6ICMcmVxdWlyZeWkseaViCwg5bGs5LiN5pSv5o+05LmL5Z+36KGM5pa55byPCi8v6Iul6KaB5pa8bm9kZWpzIHdvcmtlcuWFp+S9v+eUqOeEoeazlei9ieitr+eahOWOn+eUn+Wll+S7tuS+i+WmgmZzLCDpgb/lhY3kvb/nlKjpoILlsaRpbXBvcnTliqDovInkvb/nlKgsIOWboOeEoeazlei9ieitr+acg+ebtOaOpeS/neeVmQovL+S4puWboGV2YWzlrZfkuLLngrpDb21tb25KU+iAjOS4jeaOpeWPl2ltcG9ydCwg5pWF5Ye654++6Yyv6Kqk54Sh5rOV6L2J6K2vCihmdW5jdGlvbiAoKSB7CgogICAgLy/kvb/nlKjogIXnqIvlvI/norwoY2pzKSwg5LulQ29tbW9uSlPmqKHntYTljIXoo53lh73mlbjln7fooYw7IOiIh+S4iuaWuWlubmVy5LmL5Ye95pW454K65YWE5byf5L2c55So5Z+fLCDkupLkuI3lj6/oposKICAgIGxldCBtZFVzZXIgPSAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlICE9PSBudWxsKSA/IG1vZHVsZSA6IHsgZXhwb3J0czoge30gfQogICAgOyhmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7CiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpLHI9QXJyYXkuaXNBcnJheSxuPSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxvPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaT1ufHxvfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHU9aS5TeW1ib2wsYT1PYmplY3QucHJvdG90eXBlLGM9YS5oYXNPd25Qcm9wZXJ0eSxmPWEudG9TdHJpbmcscz11P3UudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBsPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHA9IltvYmplY3QgTnVsbF0iLGg9IltvYmplY3QgVW5kZWZpbmVkXSIseT11P3UudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHYodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9oOnA6eSYmeSBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9Yy5jYWxsKHQscykscj10W3NdO3RyeXt0W3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89Zi5jYWxsKHQpO3JldHVybiBuJiYoZT90W3NdPXI6ZGVsZXRlIHRbc10pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgZD0iW29iamVjdCBTeW1ib2xdIjtmdW5jdGlvbiBnKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Yih0KSYmdih0KT09ZH12YXIgXz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxqPS9eXHcqJC87ZnVuY3Rpb24gUyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgdz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsbT0iW29iamVjdCBGdW5jdGlvbl0iLE89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixBPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gTih0KXtpZighUyh0KSlyZXR1cm4hMTt2YXIgZT12KHQpO3JldHVybiBlPT1tfHxlPT1PfHxlPT13fHxlPT1BfXZhciBFLCQ9aVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sej0oRT0vW14uXSskLy5leGVjKCQmJiQua2V5cyYmJC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrRToiIjt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gRih0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHguY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIEk9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sTT1GdW5jdGlvbi5wcm90b3R5cGUsUD1PYmplY3QucHJvdG90eXBlLFQ9TS50b1N0cmluZyxMPVAuaGFzT3duUHJvcGVydHksUj1SZWdFeHAoIl4iK1QuY2FsbChMKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBCKHQpe3JldHVybiEoIVModCl8fChlPXQseiYmeiBpbiBlKSkmJihOKHQpP1I6SSkudGVzdChGKHQpKTt2YXIgZX1mdW5jdGlvbiBrKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gQihyKT9yOnZvaWQgMH12YXIgVT1rKE9iamVjdCwiY3JlYXRlIik7dmFyIEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgRz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFcodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gSCh0LGUpe2Zvcih2YXIgcixuLG89dC5sZW5ndGg7by0tOylpZigocj10W29dWzBdKT09PShuPWUpfHxyIT1yJiZuIT1uKXJldHVybiBvO3JldHVybi0xfVcucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1VP1UobnVsbCk6e30sdGhpcy5zaXplPTB9LFcucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sVy5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoVSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBDLmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sVy5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFU/dm9pZCAwIT09ZVt0XTpHLmNhbGwoZSx0KX0sVy5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1VJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBxPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gRCh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1ELnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9SChlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTpxLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0sRC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1IKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sRC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBIKHRoaXMuX19kYXRhX18sdCk+LTF9LEQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBWPWsoaSwiTWFwIik7ZnVuY3Rpb24gWCh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gWih0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1aLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IFcsbWFwOm5ldyhWfHxEKSxzdHJpbmc6bmV3IFd9fSxaLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9WCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxaLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIFgodGhpcyx0KS5nZXQodCl9LFoucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gWCh0aGlzLHQpLmhhcyh0KX0sWi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9WCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTt2YXIgSj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gSyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKEopO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLG89ZT9lLmFwcGx5KHRoaXMsbik6blswXSxpPXIuY2FjaGU7aWYoaS5oYXMobykpcmV0dXJuIGkuZ2V0KG8pO3ZhciB1PXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1pLnNldChvLHUpfHxpLHV9O3JldHVybiByLmNhY2hlPW5ldyhLLkNhY2hlfHxaKSxyfUsuQ2FjaGU9Wjt2YXIgUSxZLHR0LGV0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLHJ0PS9cXChcXCk/L2csbnQ9KFE9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShldCwoZnVuY3Rpb24odCxyLG4sbyl7ZS5wdXNoKG4/by5yZXBsYWNlKHJ0LCIkMSIpOnJ8fHQpfSkpLGV9LFk9SyhRLChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09dHQuc2l6ZSYmdHQuY2xlYXIoKSx0fSkpLHR0PVkuY2FjaGUsWSksb3Q9bnQ7dmFyIGl0PTEvMCx1dD11P3UucHJvdG90eXBlOnZvaWQgMCxhdD11dD91dC50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gY3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHIodCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99KHQsY3QpKyIiO2lmKGcodCkpcmV0dXJuIGF0P2F0LmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LWl0PyItMCI6ZX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpjdCh0KX1mdW5jdGlvbiBzdCh0LGUpe3JldHVybiByKHQpP3Q6ZnVuY3Rpb24odCxlKXtpZihyKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFnKHQpKXx8ai50ZXN0KHQpfHwhXy50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX0odCxlKT9bdF06b3QoZnQodCkpfXZhciBsdD0xLzA7ZnVuY3Rpb24gcHQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxnKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1sdD8iLTAiOmV9ZnVuY3Rpb24gaHQodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1zdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbcHQoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9KHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufXZhciB5dD1PYmplY3QucHJvdG90eXBlO3ZhciB2dD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksYnQ9dnQsZHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBndCh0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHx5dCkpcmV0dXJuIGJ0KHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKWR0LmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufXZhciBfdD1rKGksIkRhdGFWaWV3IiksanQ9ayhpLCJQcm9taXNlIiksU3Q9ayhpLCJTZXQiKSx3dD1rKGksIldlYWtNYXAiKSxtdD0iW29iamVjdCBNYXBdIixPdD0iW29iamVjdCBQcm9taXNlXSIsQXQ9IltvYmplY3QgU2V0XSIsTnQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsJHQ9RihfdCksenQ9RihWKSx4dD1GKGp0KSxGdD1GKFN0KSxJdD1GKHd0KSxNdD12OyhfdCYmTXQobmV3IF90KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8ViYmTXQobmV3IFYpIT1tdHx8anQmJk10KGp0LnJlc29sdmUoKSkhPU90fHxTdCYmTXQobmV3IFN0KSE9QXR8fHd0JiZNdChuZXcgd3QpIT1OdCkmJihNdD1mdW5jdGlvbih0KXt2YXIgZT12KHQpLHI9IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsbj1yP0Yocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSAkdDpyZXR1cm4gRXQ7Y2FzZSB6dDpyZXR1cm4gbXQ7Y2FzZSB4dDpyZXR1cm4gT3Q7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSBJdDpyZXR1cm4gTnR9cmV0dXJuIGV9KTt2YXIgUHQ9TXQsVHQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMdCh0KXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PVR0fSh0Lmxlbmd0aCkmJiFOKHQpfXZhciBSdD0iW29iamVjdCBTdHJpbmddIjt2YXIgQnQsa3Q9KEJ0PSJsZW5ndGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W0J0XX0pLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsR3Q9IlsiK0N0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLEh0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHF0PSJbXiIrQ3QrIl0iLER0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixWdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsWHQ9Iig/OiIrV3QrInwiK0h0KyIpIisiPyIsWnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixKdD1adCtYdCsoIig/OlxcdTIwMGQoPzoiK1txdCxEdCxWdF0uam9pbigifCIpKyIpIitadCtYdCsiKSoiKSxLdD0iKD86IitbcXQrV3QrIj8iLFd0LER0LFZ0LEd0XS5qb2luKCJ8IikrIikiLFF0PVJlZ0V4cChIdCsiKD89IitIdCsiKXwiK0t0K0p0LCJnIik7ZnVuY3Rpb24gWXQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9UXQubGFzdEluZGV4PTA7UXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTprdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKEx0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IXIoZSkmJmIoZSkmJnYoZSk9PVJ0P1l0KHQpOnQubGVuZ3RoO3ZhciBlLG49UHQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PW58fCJbb2JqZWN0IFNldF0iPT1uP3Quc2l6ZTpndCh0KS5sZW5ndGh9dmFyIGVlPS9ccy87dmFyIHJlPS9eXHMrLztmdW5jdGlvbiBuZSh0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmZWUudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShyZSwiIik6dH12YXIgb2U9TmFOLGllPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHVlPS9eMGJbMDFdKyQvaSxhZT0vXjBvWzAtN10rJC9pLGNlPXBhcnNlSW50O2Z1bmN0aW9uIGZlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihnKHQpKXJldHVybiBvZTtpZihTKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1TKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1uZSh0KTt2YXIgcj11ZS50ZXN0KHQpO3JldHVybiByfHxhZS50ZXN0KHQpP2NlKHQuc2xpY2UoMikscj8yOjgpOmllLnRlc3QodCk/b2U6K3R9dmFyIHNlPTEvMCxsZT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQ/KHQ9ZmUodCkpPT09c2V8fHQ9PT0tc2U/KHQ8MD8tMToxKSpsZTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gaGUodCl7dmFyIGU9cGUodCkscj1lJTE7cmV0dXJuIGU9PWU/cj9lLXI6ZTowfXZhciB5ZT0iW29iamVjdCBCb29sZWFuXSI7ZnVuY3Rpb24gdmUodCl7cmV0dXJuITA9PT0oZT10KXx8ITE9PT1lfHxiKGUpJiZ2KGUpPT15ZTt2YXIgZX1mdW5jdGlvbiBiZSh0KXtyZXR1cm4hIShmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkmJnQubGVuZ3RoPjApfWZ1bmN0aW9uIGRlKHQpe2xldCBlPSExO2lmKGJlKHQpKXtpZigiIj09PXQudHJpbSgpKXJldHVybiExO2U9IWlzTmFOKE51bWJlcih0KSl9ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKGZ1bmN0aW9uKHQpe2lmKHQhPXQpcmV0dXJuITA7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCl0cnl7bGV0IGU9TnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodCk7cmV0dXJuIE51bWJlci5pc05hTihlKX1jYXRjaCh0KXtyZXR1cm4hMX1yZXR1cm4hMX0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBnZSh0KXtpZighZGUodCkpcmV0dXJuIDA7cmV0dXJuIHBlKHQpfWZ1bmN0aW9uIF9lKHQsZT17fSl7bGV0IHI9aHQoZSwidXNlTGltaXRTYWZlIixudWxsKTtyZXR1cm4gdmUocil8fChyPSExKSwhIWRlKHQpJiYodD1nZSh0KSxyP051bWJlci5pc1NhZmVJbnRlZ2VyKHQpOiJudW1iZXIiPT10eXBlb2Yobj10KSYmbj09aGUobikpO3ZhciBufXZhciBqZT1pLmlzRmluaXRlLFNlPU1hdGgubWluO3ZhciB3ZT1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9ZmUodCksKHI9bnVsbD09cj8wOlNlKGhlKHIpLDI5MikpJiZqZSh0KSl7dmFyIG49KGZ0KHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShmdChlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxtZT13ZTtmdW5jdGlvbiBPZSh0LGU9e30pe2xldCByPWh0KGUsInVzZUNsYW1wU2FmZSIsbnVsbCk7dmUocil8fChyPSExKTtsZXQgbj1odChlLCJ1c2VMaW1pdFNhZmUiLG51bGwpO3ZlKG4pfHwobj0hMSk7bGV0IG89aHQoZSwicmV0dXJuV2l0aFN0YXRlQW5kTXNnIixudWxsKTt2ZShvKXx8KG89ITEpO2xldCBpPXQ9Pm8/e3N0YXRlOiJzdWNjZXNzIixtc2c6dH06dCx1PXQ9PntpZihvKXJldHVybntzdGF0ZToiZXJyb3IiLG1zZzp0fTt0aHJvdyBuZXcgRXJyb3IodCl9O2lmKCFkZSh0KSlyZXR1cm4gaSgwKTtsZXQgYT1udWxsO3RyeXt0PWdlKHQpLGE9bWUodCksciYmKGE+TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI/YT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUjphPE51bWJlci5NSU5fU0FGRV9JTlRFR0VSJiYoYT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpfWNhdGNoKHQpe3JldHVybiB1KHQudG9TdHJpbmcoKSl9cmV0dXJuIG4mJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihOdW1iZXIoYSkpP3UoYHZbJHt0fV0gaXMgbm90IGEgc2FmZSBpbnRlZ2VyYCk6KCIwIj09PVN0cmluZyhhKSYmKGE9MCksaShhKSl9ZnVuY3Rpb24gQWUodCxlPXt9KXtpZighX2UodCxlKSlyZXR1cm4hMTtyZXR1cm4gT2UodCk+PTB9Y29uc3QgTmU9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7YXN5bmMgZnVuY3Rpb24gRWUodCxlPXt9KXtpZighZnVuY3Rpb24odCl7bGV0IGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpO2lmKCJbb2JqZWN0IEJsb2JdIj09PWV8fCJbb2JqZWN0IEZpbGVdIj09PWUpcmV0dXJuITA7dHJ5e2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgQmxvYiYmdCBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuITB9Y2F0Y2godCl7fXJldHVybiExfSh0KSYmKHI9dCwiW29iamVjdCBGaWxlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocikpKXJldHVybiBjb25zb2xlLmxvZygiaW5wIix0KSxQcm9taXNlLnJlamVjdCgiaW5wIGlzIG5vdCBhIEJsb2Igb3IgRmlsZSIpO3ZhciByO2xldCBuPWh0KGUsImNodW5rU2l6ZSIpO2RlKG4pfHwobj02NzEwODg2NCksbj1nZShuKTtsZXR7Y3JlYXRlNjQ6b309YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOmksZGlnZXN0MzI6dSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8saSl7bCh0KTtjb25zdCB1PW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldCh1KSxyKDAsZSksdS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldCh1KSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSx1LnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KHUpLGkobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gdih0KXtyZXR1cm4gdCZ5fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx2KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8saSx1LGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHYobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsdil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTmUpKS5pbnN0YW5jZSl9KCksaT1vKCksdT0wO2Zvcig7dTx0LnNpemU7KXtsZXQgZT10LnNsaWNlKHUsdStuKSxyPWF3YWl0IGUuYXJyYXlCdWZmZXIoKTtpLnVwZGF0ZShuZXcgVWludDhBcnJheShyKSksdSs9bn1yZXR1cm4gaS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKX1tb2R1bGUuZXhwb3J0cz1hc3luYyhyLG4sbyk9PntpZighKGJlKGk9bikmJmkubGVuZ3RoPD0xMjgmJi9eW0EtWmEtejAtOV0rJC8udGVzdChpKSkpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlSGFzaCJ9fXZhciBpO2lmKCFBcnJheS5pc0FycmF5KHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNsaWNlSGFzaHMifX1pZigwPT09dGUocikpe3JldHVybntlcnJvcjoibm8gZmlsZVNsaWNlSGFzaHMifX1sZXQgdT1gJHtufV9gLGE9ZS5yZWFkZGlyU3luYyhvKSxjPW5ldyBTZXQ7Zm9yKGxldCB0IG9mIGEpe2lmKCF0LnN0YXJ0c1dpdGgodSkpY29udGludWU7bGV0IGU9dC5zbGljZSh1Lmxlbmd0aCk7QWUoZSkmJlN0cmluZyhPZShlKSk9PT1lJiZjLmFkZChPZShlKSl9bGV0IGY9W10scz1uZXcgU2V0O2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgdT1yW2ldLGE9aHQodSwiaSIpO2lmKCFBZShhKSljb250aW51ZTtpZihhPU9lKGEpLCFjLmhhcyhhKXx8cy5oYXMoYSkpY29udGludWU7cy5hZGQoYSk7bGV0IGw9dC5yZXNvbHZlKG8sYCR7bn1fJHthfWApLHA9IiI7dHJ5e3A9YXdhaXQgRWUobmV3IEJsb2IoW2UucmVhZEZpbGVTeW5jKGwpXSkpfWNhdGNoKHQpe2NvbnRpbnVlfWh0KHUsImgiKT09PXAmJmYucHVzaChhKX1yZXR1cm57c2xrczpmfX07CgogICAgfSkuY2FsbChtZFVzZXIuZXhwb3J0cywgbWRVc2VyLCBtZFVzZXIuZXhwb3J0cykKCiAgICAvL+mgkOioreWMr+WHujogcm9sbHVw5LulX19lc01vZHVsZeaomeekuumgkOioreiIh+WFt+WQjeS4puWtmOiAhSwg5Y+W5YW2ZGVmYXVsdDsg5ZCm5YmHbW9kdWxlLmV4cG9ydHPljbPpoJDoqK3ljK/lh7oo5Y+q5pyJ5YW35ZCN5Yyv5Ye66ICF54K65ZG95ZCN56m66ZaT54mp5Lu2KQogICAgcmV0dXJuIChtZFVzZXIuZXhwb3J0cyAmJiBtZFVzZXIuZXhwb3J0cy5fX2VzTW9kdWxlICYmICdkZWZhdWx0JyBpbiBtZFVzZXIuZXhwb3J0cykgPyBtZFVzZXIuZXhwb3J0cy5kZWZhdWx0IDogbWRVc2VyLmV4cG9ydHMKCn0pKCkpCgo=",Buffer.from(s,"base64").toString("utf8"));var s;function i(){let n=new r,s=n.emit.bind(n),i={},u=!1,o="worker is dead",l=!1;function a(e){for(let t in i){let r=i[t];delete i[t],r.reject(e)}}function c(e){a(e),s("error",e)}function d(e){u||(u=!0,c(e))}let D=function(t){try{return new e.Worker(t,{eval:!0})}catch(e){o=e,d(e)}}(t);function M(){D?(l=!0,u||(u=!0,o="worker has been terminated"),D.terminate(),D=void 0,a("worker has been terminated")):c("worker has been terminated")}function w(e){return function(){let t=function(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}();if(u)return t.reject(o),t;let r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,t=[],r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=r.length;for(let s=0;s<e;s++)t[s]=r[0|Math.random()*n];return t.join("")}(),n={mode:"call",id:r,fun:e,input:[...arguments]};try{D.postMessage(n)}catch(e){return t.reject(e),t}return i[r]=t,t}}D||u||(o="invalid worker",d(o)),D&&(D.on("message",function(e){let t=e,r=t&&t.mode;if("emit"===r||"return"===r||"messageerror"===r){if("emit"===r&&s(t.evName,t.msg),"return"===r){let e=i[t.id];e&&(delete i[t.id],"success"===t.state?e.resolve(t.msg):e.reject(t.msg))}"messageerror"===r&&c(t.msg)}}),D.on("error",d),D.on("exit",e=>{l||d("worker exit, code["+e+"]")}),D.on("messageerror",e=>{c(e)}),function(){let e={mode:"init",type:"function",input:[...arguments]};try{D.postMessage(e)}catch(e){throw M(),e}}([...arguments]));for(let e of["main"])n[e]=w(e);return n.terminate=M,n}n=async function(){let e=[...arguments],t=i();return await t.main(...e).finally(()=>{t.terminate()})}}(),n}(t)}({get exports(){return r},set exports(e){r=e}}),r)}(qs);var ei=nn(qs.exports);function ti(e,t){try{return{ok:!0,value:t()}}catch(t){let r=fn(t);return{ok:!1,stage:e,cause:er(r)?r:"unknown error"}}}function ri(e,t){try{return i.validateHeaderValue(e,t),!0}catch(e){return!1}}function ni(e,t,r,n={}){let i=!0===ye(n,"forHead",!1);if(null==e)return{error:"invalid streamRead",reason:"streamRead is null or undefined"};let u=ti("identify streamRead",()=>e instanceof s.Readable?{isReadable:!0,objectMode:!0===e.readableObjectMode,done:!0===e.destroyed||!0===e.readableEnded}:{isReadable:!1});if(!u.ok)return{error:"invalid streamRead",reason:`${u.stage} failed: ${u.cause}`};if(u.value.isReadable){if(u.value.objectMode)return{error:"invalid streamRead",reason:"streamRead is in object mode"};if(u.value.done)return{error:"invalid streamRead",reason:"streamRead is already destroyed or ended (each download event must provide a new stream)"};if(i)return{source:e};let n=ti("setup pipeline",()=>{let n=0,i=!1,u=new s.Transform({transform(e,r,s){if(n+=e.length,n>t)return i=!0,void s(new Error(`streamRead sent more than fileSize[${t}] bytes`));s(null,e)},flush(e){if(n!==t)return i=!0,void e(new Error(`streamRead ended at ${n} bytes but fileSize is ${t}`));e()}});return s.pipeline(e,u,e=>{e&&i&&r(fn(e))}),u});return n.ok?{source:n.value}:{error:"invalid streamRead",reason:`${n.stage} failed: ${n.cause}`}}let o=ti("materialize streamRead",()=>{if(Buffer.isBuffer(e))return{buf:e};if(e instanceof Uint8Array)return{buf:Buffer.from(e)};if(qt(e))return{buf:Buffer.from(e,"utf8")};if("number"==typeof e||Dr(e)||"object"==typeof e&&!1===function(e){try{return Gr(e.pipe)}catch(e){return null}}(e)){let t=null;try{t=JSON.stringify(e)}catch(e){return{unserializable:fn(e)}}return"string"!=typeof t?{unserializable:""}:{buf:Buffer.from(t,"utf8")}}return{unsupported:!0}});if(!o.ok)return{error:"invalid streamRead",reason:`${o.stage} failed: ${o.cause}`};if(dn(o.value,"unserializable")){let e=o.value.unserializable;return{error:"invalid streamRead",reason:er(e)?`streamRead can not be serialized: ${e}`:"streamRead can not be serialized"}}if(!0===o.value.unsupported)return{error:"invalid streamRead",reason:"streamRead must be a readable stream, buffer, string, number, boolean or plain object"};let l=o.value.buf;return l.length!==t?{error:"fileSize mismatch",reason:`streamRead has ${l.length} bytes but fileSize is ${t}`}:{source:l}}let si=e=>"function"==typeof e.toWellFormed?e.toWellFormed():e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"�");function ii(e,t){let r=ti(`check field[${e}]`,()=>{if("fileSize"===e)return function(e){return Fr(e,{useLimitSafe:!0})}(t)?{ok:!0,value:fr(t)}:{ok:!1};if("filename"===e||"fileType"===e){if(!er(t))return{ok:!1};let r=Ln(t);return er(r)?"fileType"===e?ri("Content-Type",r)?{ok:!0,value:r}:{ok:!1}:{ok:!0,value:si(r)}:{ok:!1}}throw new Error(`unknown field[${e}]`)});return r.ok?{ok:r.value.ok,value:r.value.value,cause:""}:{ok:!1,value:void 0,cause:r.cause}}function ui(e){try{e&&Gr(e.pipe)&&Gr(e.destroy)&&e.destroy()}catch(e){}}function oi(e){let t=typeof e;return void 0===e||"function"===t||"symbol"===t?null:e}function li(e,t,r={}){let n=new s.Readable;n._read=()=>{},n.push(t),n.push(null);let i=ye(r,"returnType",""),u=ye(r,"returnMsg",""),o=e.response(n).header("Cache-Control","no-cache, no-store, must-revalidate").header("Content-Type","application/octet-stream").header("Content-Length",n.readableLength);return er(i)&&o.header("Return-Type",i),er(u)&&ri("Return-Msg",u)&&o.header("Return-Msg",u),o}function ai(e,t){return 0===e.listenerCount(t)?`no listener for event[${t}]`:""}function ci(i={}){let u={useLimitSafe:!0},o=!!ye(i,"serverHapi"),l=[],a=ye(i,"port");(!Lr(a,u)||fr(a)>65535)&&(a=8080),a=fr(a);let c=ye(i,"useInert");null==c?c=!0:Dr(c)||(o||l.push("invalid useInert: must be a boolean, static files are not served"),c=!1);let d=ye(i,"pathStaticFiles");null==d?d="dist":er(d)||(c&&!o&&l.push("invalid pathStaticFiles: must be a non-empty string, static files are not served"),c=!1,d="dist");let D=ye(i,"pathUploadTemp");er(D)||(D="./uploadTemp");let M="";if(!Rr(D)){let e=On(D);dn(e,"error")&&(M=fn(e.error))}let w=ye(i,"apiName");er(w)||(w="api");let y=ye(i,"tokenType");er(y)||(y="Bearer");let g=ye(i,"sizeSlice");Lr(g,u)||(g=1048576),g=fr(g);let I=ye(i,"sizeMsg");Lr(I,u)||(I=104857600),I=fr(I);let m=ye(i,"verifyConn");if(null==m)m=()=>!0;else{let e=!1;try{e=Gr(m)}catch(e){}e||(l.push("invalid verifyConn: must be a function (sync or async), all API requests will be denied"),m=()=>!1)}let C="invalid corsOrigins: must be an array of origin strings ('*' must be the only element if present), or false to disable; CORS is disabled",p=ye(i,"corsOrigins"),f=null!=p;f?o?l.push("corsOrigins has no effect with serverHapi: the cross-origin policy is decided by the external server"):!1===p||""===p?p=null:er(p)?p=[p]:hr(p)?(p=p.filter(e=>""!==e),0===p.length&&(p=null)):(l.push(C),p=null):p=["*"];let L=ye(i,"delayForSlice","");(!Fr(L,u)||fr(L)>2147483647)&&(L=100),L=fr(L);let h=null;if(o)h=i.serverHapi;else{let e=e=>{let t=!1;return null!==e&&(t={origin:e,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]}),{port:a,routes:{timeout:{server:!1,socket:!1},cors:t}}};try{h=r.server(e(p))}catch(t){if(!f||null===p)throw t;console.log("invalid corsOrigins",t),l.push(C),p=null,h=r.server(e(p))}}let b=ln(),N={tag:"w-converhp"},A=(e,...t)=>an(b,e,t,{...N,funSettle:()=>{let r=t[t.length-1];Wr(r)&&r.reject(`listener of event[${e}] error`)},funEmit:E}),x=(e,...t)=>Mn(b,e,t,{...N,funEmit:E});function E(e,...t){if("error"===e&&_t(t[0])&&"listener"===t[0].fun){let e=ye(t[0],"name",""),r=ye(t[0],"msg");return console.log(`listener of event[${e}] error`,r),b.emit("error",`listener of event[${e}] error: ${fn(r)}`)}return b.emit(e,...t)}er(M)&&x("error",`create pathUploadTemp[${D}] error: ${M}`);for(let e of l)x("error",e);let T=(e,t,r)=>{let n=Hr(),s=Hr();return s.then(t=>{void 0===t&&(t=null);let s=typeof t;if("function"===s||"symbol"===s)return n.reject("output can not be serialized"),void A("error",`event[${e}] output can not be serialized: output is a ${s}`);n.resolve(Gr(r)?r(t):t)}).catch(e=>{n.reject(e)}),function(e,t,r,n,s,i){let u=ai(e,r);er(u)?(s.reject(u),i(u)):t(r,...n,s)}(b,A,e,t,s,e=>{A("error",e)}),n};async function S(e){return T("upload",[e])}async function Z(e){return T("download",[e])}let v=`${Ln(y)} `,Y=(e,t)=>{let r=ye(e,"headers");r=_t(r)?r:"";let n=ye(e,"query");n=_t(n)?n:"";let s="",i="";return"query"===t.authFrom?(i=ye(n,"token",""),i=er(i)?i:"",er(i)&&(s=`${y} ${i}`)):(s=ye(r,"authorization",""),s=er(s)?s:"",i=s.startsWith(v)?s.slice(v.length):""),{headers:r,query:n,authorization:s,token:i}},X=(e,t)=>{let r=(r,n,s)=>function(e,t,r={}){er(t)||(console.log("msg",t),console.log("msg is not an effective string, set msg=''"),t="");let n=ye(r,"retryable",!0),s={error:t};!1===n&&(s.retryable=!1);let i=li(e,Vn(s),{returnType:"error",returnMsg:t});return!1===n&&i.header("Return-Retryable","false"),i}(e,n,s).code(t.statusOf[r]);return{permission:()=>r("permission","permission denied"),param:e=>r("param",e,{retryable:!1}),app:e=>r("app",e),output:e=>r("output",e),packet:e=>r("packet",e),internal:e=>r("internal",e)}},j=async(e,t,r,n)=>!0!==await async function(e){let t=!1;try{t=m(e),Wr(t)&&(t=await t)}catch(r){t=!1,console.log(`verifyConn error for apiType[${ye(e,"apiType","")}]`,r),A("error",`verifyConn error for apiType[${ye(e,"apiType","")}]: ${fn(r)}`)}return!0===t}({apiType:r.apiType,authorization:t.authorization,query:t.query,headers:t.headers,req:e})?n.permission():(A("handler",{api:r.api,headers:t.headers,query:t.query}),null),z=(e,t)=>{let r=ai(b,e.event);if(!er(r))return null;let n=t.app(r);return A("error",r),n},G=(e,t,r,n)=>{let s=function(e,t){let r={};for(let n of t){let t=ti(`read field[${n}]`,()=>ye(e,n));if(!t.ok)return{ok:!1,field:n,cause:t.cause,fields:r};r[n]=t.value}return{ok:!0,fields:r}}(e,r.fields.map(e=>e.name));if(!s.ok)return ui(ye(s.fields,"streamRead")),A("error",`download fileId[${t}] output error: can not read field[${s.field}]: ${s.cause}`),{ok:!1,res:n.output("invalid streamRead")};let i={streamRead:s.fields.streamRead};for(let e of r.fields){if("streamRead"===e.name)continue;let r=ii(e.name,s.fields[e.name]);if(r.ok){i[e.name]=r.value;continue}if(!0===e.optional&&!er(r.cause)){i[e.name]="";continue}ui(i.streamRead);let u="fileSize"===e.name?`[${fn(s.fields.fileSize)}]`:"";return A("error",`download fileId[${t}] output error: invalid ${e.name}${u}${er(r.cause)?`: ${r.cause}`:""}`),{ok:!1,res:n.output(`invalid ${e.name}`)}}return{ok:!0,v:i}},W=async(e,t,r,n)=>{let s={},i="";await r.then(e=>{s.success=e,i="success"}).catch(e=>{s.error=e,i="error"});let u=function(e,t){let r={};for(let t of Object.keys(e))r[t]=oi(e[t]);let n=Vn(r,{returnWithStateAndMsg:!0});return"success"!==ye(n,"state")?(t(ye(n,"msg","unknown error")),null):n.msg}(s,e=>{A("error",`${n} output can not be serialized: ${e}`)});return null===u?t.internal("output can not be serialized"):li(e,u,{returnType:i,returnMsg:"need to parse"})},K=e=>(t,r,n)=>{if(413===ye(n,"output.statusCode"))throw n;return A("error",`invalid request packet for ${e.api}: ${fn(n)}`),X(r,e).packet("invalid request packet").takeover()},F={path:`/${w}/main`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.main,n=X(t,r),i=Y(e,r),u=await j(e,i,r,n);if(u)return u;let o=null;try{o=await(()=>{let t=Hr(),r=[],n=0,i=!1,u=new s.Writable({write(e,t,s){if(n+=e.length,n>I)return r=[],i=!0,void s();r.push(e),s()}});return u.on("finish",()=>{}),e.payload.pipe(u),e.payload.on("end",()=>{if(i)return void t.reject("payload too large");let e=Buffer.concat(r);r=[],t.resolve(e)}),e.payload.on("close",()=>{}),e.payload.on("error",e=>{console.log("apiMain req.payload err",e),A("error",`receive payload error: ${fn(e)}`),t.reject(`receive payload error: ${fn(e)}`)}),e.payload.destroyed&&(A("error","receive payload error: closed before receive"),t.reject("receive payload error: closed before receive")),t})()}catch(e){if("payload too large"===e)return t.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${I}`}).code(413);throw e}let l=Qn(new Uint8Array(o),{returnWithStateAndMsg:!0});if("success"!==ye(l,"state")||!_t(l.msg)){let e=fn(ye(l,"msg",""));return A("error",`invalid request packet for apiMain: ${er(e)?e:"not an effective object"}`),n.packet("invalid request packet")}let a=l.msg;return W(t,n,async function(e){return T("execute",[ye(e,"func",""),ye(e,"input",null)],t=>(e.output=t,delete e.input,e))}(a),`execute func[${fn(ye(a,"func",""))}]`)}},k={path:`/${w}/ulctr`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.ulctr)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.ulctr,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.mode","");if("check-total-hash"!==u&&"check-slices-hash"!==u&&"merge-slices-push"!==u&&"merge-slices-get"!==u)return n.param(`invalid mode[${fn(u)}] in payload`);let o=ye(e,"payload.fileHash","");if(!Jn(o))return n.param("invalid fileHash in payload");let l=ye(e,"payload.chunkTotal","");if("merge-slices-push"===u){if(!Lr(l))return n.param("invalid chunkTotal in payload");l=fr(l)}if("merge-slices-get"!==u){let e=z(r,n);if(e)return e}let a=ye(e,"payload.filename",""),c=function(e,t="unknown"){if(!er(e))return t;let r=e.replace(/\\/g,"/").split("/").filter(e=>""!==e&&"."!==e&&".."!==e).pop()||"";return r=r.replace(/[\x00-\x1f\x7f<>:"|?*]/g,"_"),r=r.replace(/[. ]+$/g,""),/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(r)&&(r=`_${r}`),""===r?t:r}(a,""),d=e=>_t(e)&&dn(e,"error")?`${u}: ${Ln(e.error)}`:"",M=async(e,t)=>{try{return await t()}catch(t){return A("error",`upload-controller mode[${u}] ${e} error: ${fn(t)}`),Promise.reject(`${u} failed`)}};return W(t,n,(async()=>{let t=null;if("check-total-hash"===u){let r=ye(e,"payload.fileSize","");t=await M("check total hash",()=>_s(r,g,o,D));let n=d(t);if(er(n))return Promise.reject(n);if(t.bAllHash){let e={from:"check-total-hash",filename:a,filenameSafe:c,path:t.path},r=await S(e);t={...t,msg:r}}delete t.path,t.sizeSlice=g}else if("check-slices-hash"===u){let r=ye(e,"payload.fileSliceHashs",[]);t=await M("check slices hash",()=>ei(r,o,D));let n=d(t);if(er(n))return Promise.reject(n)}else if("merge-slices-push"===u){t={queueId:await M("push merge task",()=>Ps(o,l,D))}}else if("merge-slices-get"===u){let r=ye(e,"payload.queueId",""),n=await Js(r,D,{funConsume:async e=>await S({from:"merge-slices-get",filename:a,filenameSafe:c,path:e}),funLog:e=>{A("error",e)}});t={state:n.state,msg:n.msg,queueId:r,filename:a},"error"===n.state&&er(n.reason)&&A("error",`${n.msg} for fileHash[${o}]: ${n.reason}`)}return t})(),`upload-controller mode[${u}]`)}},V={path:`/${w}/slc`,method:"POST",options:{payload:{maxBytes:g,maxParts:1e9,timeout:!1,output:"stream",parse:!1},timeout:{server:!1,socket:!1}},handler:async function(r,n){let s=_n.slc,i=X(n,s),u=Y(r,s),o=await j(r,u,s,i);if(o)return o;let l=ye(u.headers,"chunk-index",""),a=ye(u.headers,"chunk-total",""),c=ye(u.headers,"package-id","");if(!Fr(l))return i.param("invalid chunkIndex in headers");if(l=fr(l),!Fr(a))return i.param("invalid chunkTotal in headers");if(a=fr(a),!Jn(c))return i.param("invalid packageId in headers");let d=z(s,i);if(d)return d;let M=e.resolve(D,`${c}_${l}`),w=t.createWriteStream(M),y=()=>{let e=Hr(),t=0,n=!1,s=!1,i=!1,u=!1;w.on("error",t=>{s||n||i||(s=!0,r.payload.unpipe(w),r.payload.resume(),console.log(`apiUploadSlice streamWrite chunk[${l+1}/${a}] of packageId[${c}] err`,t),A("error",`write chunk[${l+1}/${a}] of packageId[${c}] error: ${fn(t)}`),e.reject(`write chunk[${l+1}/${a}] of packageId[${c}] error`))}),w.on("close",()=>{n||s||i?Pn(M):u&&!0===w.writableFinished&&setTimeout(()=>{e.resolve(`chunk[${l+1}/${a}] of packageId[${c}] done`)},L)}),r.payload.on("data",e=>{n||(t+=e.length,t>g&&(n=!0,r.payload.unpipe(w),r.payload.resume(),w.destroy()))}),r.payload.pipe(w),r.payload.on("end",()=>{u=!0,s||n&&e.reject("payload too large")});let o=t=>{i||u||s||(i=!0,w.destroy(),A("error",`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`),e.reject(`receive chunk[${l+1}/${a}] of packageId[${c}] error: ${t}`))};return r.payload.on("error",e=>{console.log(`apiUploadSlice req.payload chunk[${l+1}/${a}] of packageId[${c}] err`,e),o(fn(e))}),r.payload.on("close",()=>{o("closed before end")}),r.payload.destroyed&&o("closed before receive"),e},I={},m="",C="";try{let e=await y();I.success=e,m="success",C="need to parse"}catch(e){if("payload too large"===e)return n.response({statusCode:413,error:"Request Entity Too Large",message:`Payload content length greater than maximum allowed: ${g}`}).code(413);I.error=e,m="error",C="need to parse"}return li(n,Vn(I),{returnType:m,returnMsg:C})}},H={path:`/${w}/dwgfn`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dwgfn)},timeout:{server:!1,socket:!1}},handler:async function(e,t){let r=_n.dwgfn,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);return a.ok?(ui(a.v.streamRead),W(t,n,Promise.resolve({filename:a.v.filename}),`download fileId[${u}]`)):a.res}},U={path:`/${w}/dwgf`,method:"GET",options:{timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dwgf,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(s.query,"fileId","");if(u=er(u)?u:"",!er(u))return n.param("invalid fileId in query");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=a.v.fileSize,D=a.v.fileType,M=a.v.filename,w=ni(c,d,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});if(w.error)return ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error);let y=t.response(w.source).type(D).header("Content-Encoding","identity").header("Content-Length",d).header("Content-Disposition",er(M)?`attachment; filename*=UTF-8''${function(e){let t=Array.from(Ln(e)),r="";for(let e of t){let t="";try{t=encodeURIComponent(e)}catch(e){t="%EF%BF%BD"}r+=t}return r.replace(/['()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)}(M)}`:"attachment");return y}},B={path:`/${w}/dw`,method:"POST",options:{payload:{maxBytes:I,maxParts:1e9,timeout:!1,parse:!0,failAction:K(_n.dw)},timeout:{server:!1,socket:!1},response:{emptyStatusCode:200}},handler:async function(e,t){let r=_n.dw,n=X(t,r),s=Y(e,r),i=await j(e,s,r,n);if(i)return i;let u=ye(e,"payload.fileId","");if(!er(u))return n.param("invalid fileId in payload");let o={fileId:u,token:s.token},l={};if(await Z(o).then(e=>{l.success=e}).catch(e=>{l.error=e}),dn(l,"error"))return n.app("can not get file from fileId");let a=G(ye(l,"success"),u,r,n);if(!a.ok)return a.res;let c=a.v.streamRead,d=function(e,t={}){let r=ye(t,"returnWithStateAndMsg",null);Dr(r)||(r=!1);let n=e=>r?{state:"error",msg:e}:"";if(!er(e))return n("invalid str");let s="";try{let t=En.parse(e);s=Sn.stringify(t)}catch(e){return n(e.toString())}return r?{state:"success",msg:s}:s}(a.v.filename),D=a.v.fileSize,M=a.v.fileType,w=ni(c,D,e=>{A("error",`download fileId[${u}] stream error: ${e}`)},{forHead:"head"===Ln(ye(e,"method","")).toLowerCase()});return w.error?(ui(c),A("error",`download fileId[${u}] output error: ${w.reason}`),n.output(w.error)):t.response(w.source).type(M).header("Content-Encoding","identity").header("Content-Disposition",`attachment; filename="${d}"`).header("Content-Length",D)}};let Q=null;if(o)try{h.route([F,k,V,H,U,B])}catch(e){console.log("register routes error",e),x("error",`register routes error: ${fn(e)}`)}else Q=async function(){c&&await h.register(n);let e=[];if(c){let t={method:"GET",path:"/{file*}",handler:{directory:{path:`${d}/`}}};e=[...e,t]}e=[...e,F,k,V,H,U,B],h.route(e),await h.start(),console.log(`Server running at: ${h.info.uri}`)}().catch(e=>{console.log("start server error",e),x("error",`start server error: ${fn(e)}`)});return b.stop=async()=>{try{Wr(Q)&&await Q,await h.stop()}catch(e){console.log("stop server error",e),A("error",`stop server error: ${fn(e)}`)}},b}function di(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ssZ")}var Di=function(){return g.Date.now()},Mi=Math.max,wi=Math.min;function yi(e,t,r){var n,s,i,u,o,l,a=0,c=!1,d=!1,D=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function M(t){var r=n,i=s;return n=s=void 0,a=t,u=e.apply(i,r)}function w(e){var r=e-l;return void 0===l||r>=t||r<0||d&&e-a>=i}function y(){var e=Di();if(w(e))return g(e);o=setTimeout(y,function(e){var r=t-(e-l);return d?wi(r,i-(e-a)):r}(e))}function g(e){return o=void 0,D&&n?M(e):(n=s=void 0,u)}function I(){var e=Di(),r=w(e);if(n=arguments,s=this,l=e,r){if(void 0===o)return function(e){return a=e,o=setTimeout(y,t),c?M(e):u}(l);if(d)return clearTimeout(o),o=setTimeout(y,t),M(l)}return void 0===o&&(o=setTimeout(y,t)),u}return t=lr(t)||0,S(r)&&(c=!!r.leading,i=(d="maxWait"in r)?Mi(lr(r.maxWait)||0,t):i,D="trailing"in r?!!r.trailing:D),I.cancel=function(){void 0!==o&&clearTimeout(o),a=0,n=l=s=o=void 0},I.flush=function(){return void 0===o?u:g(Di())},I}var gi=function(){try{var e=U(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ii=gi;function mi(e,t,r){"__proto__"==t&&Ii?Ii(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}function Ci(e,t,r){(void 0!==r&&!P(e[t],r)||void 0===r&&!(t in e))&&mi(e,t,r)}var pi="object"==typeof exports&&exports&&!exports.nodeType&&exports,fi=pi&&"object"==typeof module&&module&&!module.nodeType&&module,Li=fi&&fi.exports===pi?g.Buffer:void 0,hi=Li?Li.allocUnsafe:void 0;function bi(e,t){if(t)return e.slice();var r=e.length,n=hi?hi(r):new e.constructor(r);return e.copy(n),n}function Ni(e){var t=new e.constructor(e.byteLength);return new fe(t).set(new fe(e)),t}function Ai(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}function xi(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}var Ei=Object.create,Ti=function(){function e(){}return function(t){if(!S(t))return{};if(Ei)return Ei(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();function Si(e){return"function"!=typeof e.constructor||nt(e)?{}:Ti(Tr(e))}function Zi(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var vi=Object.prototype.hasOwnProperty;function Yi(e,t,r){var n=e[t];vi.call(e,t)&&P(n,r)&&(void 0!==r||t in e)||mi(e,t,r)}function Xi(e,t,r,n){var s=!r;r||(r={});for(var i=-1,u=t.length;++i<u;){var o=t[i],l=n?n(r[o],e[o],o,r,e):void 0;void 0===l&&(l=e[o]),s?mi(r,o,l):Yi(r,o,l)}return r}var ji=Object.prototype.hasOwnProperty;function zi(e){if(!S(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=nt(e),r=[];for(var n in e)("constructor"!=n||!t&&ji.call(e,n))&&r.push(n);return r}function Gi(e){return lt(e)?tt(e,!0):zi(e)}function Wi(e,t,r,n,s,i,u){var o=Zi(e,r),l=Zi(t,r),a=u.get(l);if(a)Ci(e,r,a);else{var c,d=i?i(o,l,r+"",e,t,u):void 0,D=void 0===d;if(D){var w=M(l),y=!w&&Ve(l),g=!w&&!y&&qe(l);d=l,w||y||g?M(o)?d=o:N(c=o)&<(c)?d=xi(o):y?(D=!1,d=bi(l,!0)):g?(D=!1,d=Ai(l,!0)):d=[]:jr(l)||We(l)?(d=o,We(o)?d=function(e){return Xi(e,Gi(e))}(o):S(o)&&!Z(o)||(d=Si(l))):D=!1}D&&(u.set(l,d),s(d,l,n,i,u),u.delete(l)),Ci(e,r,d)}}function Ki(e,t,r,n,s){e!==t&&Ut(t,function(i,u){if(s||(s=new ge),S(i))Wi(e,t,u,r,Ki,n,s);else{var o=n?n(Zi(e,u),i,u+"",e,t,s):void 0;void 0===o&&(o=i),Ci(e,u,o)}},Gi)}var Fi=Math.max;var ki=Ii?function(e,t){return Ii(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:Kt,Vi=ki,Hi=Date.now;var Ui=function(e){var t=0,r=0;return function(){var n=Hi(),s=16-(n-r);if(r=n,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Vi),Bi=Ui;function Qi(e,t){return Bi(function(e,t,r){return t=Fi(void 0===t?e.length-1:t,0),function(){for(var n=arguments,s=-1,i=Fi(n.length-t,0),u=Array(i);++s<i;)u[s]=n[t+s];s=-1;for(var o=Array(t+1);++s<t;)o[s]=n[s];return o[t]=r(u),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,o)}}(e,t,Kt),e+"")}function Ri(e,t,r){if(!S(r))return!1;var n=typeof t;return!!("number"==n?lt(r)&&Ue(t,r.length):"string"==n&&t in r)&&P(r[t],e)}var Oi,Pi=(Oi=function(e,t,r){Ki(e,t,r)},Qi(function(e,t){var r=-1,n=t.length,s=n>1?t[n-1]:void 0,i=n>2?t[2]:void 0;for(s=Oi.length>3&&"function"==typeof s?(n--,s):void 0,i&&Ri(t[0],t[1],i)&&(s=n<3?void 0:s,n=1),e=Object(e);++r<n;){var u=t[r];u&&Oi(e,u,r,s)}return e}));let Ji="w-sync-webdata";function $i(e,r={}){let n={},s=!1,i=!1,u=null;if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit"))throw new Error("instWConverServer is not an EventEmitter");let o=ye(r,"fpTableTags","");er(o)||(o="./tableTags.json");let l=ye(r,"genTag");Gr(l)||(l=()=>di()+"|"+ps(6));let{emit:a,emitNow:c,clear:d}=function(e,t){let r=t=>Gr(e.listenerCount)?e.listenerCount(t):1,n={emit:(t,...r)=>e.emit(t,...r),listenerCount:r},s=(t,...n)=>{if("error"!==t)return e.emit(t,...n);let s=n[0];return $t(s)&&"listener"===s.fun&&(s={msg:`listener of event[${s.name}] error`,err:s.msg}),0===r("error")?(console.error(`[${Ji}]`,s),!1):e.emit("error",s)},i=new Set,u=(e,t,r)=>{let s=null,u=r.funEmit;s=Mn(n,e,t,{...r,tag:Ji,funEmit:(e,...t)=>(i.delete(s),u(e,...t))}),i.add(s)};return{emit:(e,...r)=>{t()||u(e,r,{funEmit:(e,...r)=>!t()&&s(e,...r)})},emitPm:(n,i,o={})=>{let l=i.pm;if(t())return;let a=!1,c=!1,d=l.resolve,D=l.reject;l.resolve=e=>{a=!0,d(e)},l.reject=e=>{a=!0,D(e)},u(n,[i],{funSettle:e=>{a||(a=!0,c=!0,D(e))},funEmit:(i,...u)=>i!==n?!!c||!t()&&s(i,...u):!t()&&(!Gr(o.beforeDispatch)||!1!==o.beforeDispatch())&&(0===r(i)?(a=!0,c=!0,D(new Error(`no listener for event[${i}]`)),!1):e.emit(i,...u))})},emitNow:(e,...t)=>an(n,e,t,{tag:Ji,funEmit:s}),clear:()=>{i.forEach(e=>{clearTimeout(e)}),i.clear()}}}(e,()=>s);function D(){let e={};try{if(t.existsSync(o)){let r=Kr(t.readFileSync(o,"utf8"));_t(r)&&(e=r)}}catch(e){a("error",{msg:"readTableTags catch",err:e})}return e}let M=()=>{let e=function(e,t=!1,r={}){let n=ye(r,"returnWithStateAndMsg",null);Dr(n)||(n=!1);let s=e=>n?{state:"error",msg:e}:"";if(br(e))return s("invalid v");let i="";try{i=t?JSON.stringify(e,null,2):JSON.stringify(e)}catch(e){return s(Zn(e))}return n?{state:"success",msg:i}:i}(n,!1,{returnWithStateAndMsg:!0});if("success"!==ye(e,"state"))return new Error(`can not serialize tableTags: ${ye(e,"msg")}`);try{t.writeFileSync(o,e.msg,"utf8")}catch(e){return e}return u=e.msg,i=!1,null};function w(){if(s)return;let e=M();e&&a("error",{msg:"writeTableTags catch",err:e})}let y=yi(()=>{w(),a("changeTableTags",n)},200);return e.readTableTags=D,e.writeTableTags=w,e.initTableTags=function(e={},t="useInputFirst"){if(!s)if(null===e&&(e={}),$t(e)){if("useInputOnly"===t)n=e;else if("useStorageOnly"===t)n=D();else if("useInputFirst"===t)n=Pi(D(),e);else{if("useStorageFirst"!==t)throw new Error(`invalid mode[${t}]`);n=Pi(e,D())}w()}else a("error",{msg:"invalid tableTags for initTableTags",err:e})},e.setTableTags=function(e={}){s||(null===e&&(e={}),$t(e)?(n=Pi(n,e),w()):a("error",{msg:"invalid tableTags for setTableTags",err:e}))},e.getTableTags=function(){return n},e.updateTableTag=function(e){s||(er(e)?(n[e]=l(),i=!0,y()):a("error",{msg:"invalid tableName",err:e}))},e.clearSync=function(){if(s)return;y.cancel();let e=null;if(i){let r=null;try{t.existsSync(o)&&(r=t.readFileSync(o,"utf8"))}catch(e){r=void 0}null!==r&&r!==u||(e=M())}s=!0,d(),e&&c("error",{msg:"writeTableTags catch",err:e})},e}var _i=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)Ae(t,ve(e)),e=Tr(e);return t}:Te;function qi(e){return xe(e,Gi,_i)}var eu=Object.prototype.hasOwnProperty;var tu=/\w*$/;var ru=I?I.prototype:void 0,nu=ru?ru.valueOf:void 0;function su(e,t,r){var n,s,i,u=e.constructor;switch(t){case"[object ArrayBuffer]":return Ni(e);case"[object Boolean]":case"[object Date]":return new u(+e);case"[object DataView]":return function(e,t){var r=t?Ni(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ai(e,r);case"[object Map]":case"[object Set]":return new u;case"[object Number]":case"[object String]":return new u(e);case"[object RegExp]":return(i=new(s=e).constructor(s.source,tu.exec(s))).lastIndex=s.lastIndex,i;case"[object Symbol]":return n=e,nu?Object(nu.call(n)):{}}}var iu=$e&&$e.isMap,uu=iu?Re(iu):function(e){return N(e)&&"[object Map]"==xt(e)};var ou=$e&&$e.isSet,lu=ou?Re(ou):function(e){return N(e)&&"[object Set]"==xt(e)},au="[object Arguments]",cu="[object Function]",du="[object Object]",Du={};function Mu(e,t,r,n,s,i){var u,o=1&t,l=2&t,a=4&t;if(r&&(u=s?r(e,n,s,i):r(e)),void 0!==u)return u;if(!S(e))return e;var c=M(e);if(c){if(u=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&eu.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!o)return xi(e,u)}else{var d=xt(e),D=d==cu||"[object GeneratorFunction]"==d;if(Ve(e))return bi(e,o);if(d==du||d==au||D&&!s){if(u=l||D?{}:Si(e),!o)return l?function(e,t){return Xi(e,_i(e),t)}(e,function(e,t){return e&&Xi(t,Gi(t),e)}(u,e)):function(e,t){return Xi(e,ve(e),t)}(e,function(e,t){return e&&Xi(t,at(t),e)}(u,e))}else{if(!Du[d])return s?e:{};u=su(e,d,o)}}i||(i=new ge);var w=i.get(e);if(w)return w;i.set(e,u),lu(e)?e.forEach(function(n){u.add(Mu(n,t,r,n,e,i))}):uu(e)&&e.forEach(function(n,s){u.set(s,Mu(n,t,r,s,e,i))});var y=c?void 0:(a?l?qi:ct:l?Gi:at)(e);return $r(y||e,function(n,s){y&&(n=e[s=n]),Yi(u,s,Mu(n,t,r,s,e,i))}),u}Du[au]=Du["[object Array]"]=Du["[object ArrayBuffer]"]=Du["[object DataView]"]=Du["[object Boolean]"]=Du["[object Date]"]=Du["[object Float32Array]"]=Du["[object Float64Array]"]=Du["[object Int8Array]"]=Du["[object Int16Array]"]=Du["[object Int32Array]"]=Du["[object Map]"]=Du["[object Number]"]=Du[du]=Du["[object RegExp]"]=Du["[object Set]"]=Du["[object String]"]=Du["[object Symbol]"]=Du["[object Uint8Array]"]=Du["[object Uint8ClampedArray]"]=Du["[object Uint16Array]"]=Du["[object Uint32Array]"]=!0,Du["[object Error]"]=Du[cu]=Du["[object WeakMap]"]=!1;function wu(e){return Mu(e,5)}function yu(e={}){let t=ln(),r=Object.create(null),n=null,s=new Set,i=new Set,u=!1,o=ye(e,"timeAlive");Lr(o)||(o=1e4),o=fr(o),o=Math.min(o,tn);let l=ye(e,"timeDetect");return Lr(l)||(l=50),l=fr(l),l=Math.min(l,tn),t.trigger=function(e,a){if(!u)if(er(e)){if(!dn(r,e)){let n=setTimeout(()=>{s.delete(n),dn(r,e)&&i.add(e),an(t,"message",[{eventName:"enter",key:e,data:a,now:ys(r)}],{tag:"alive"})},1);s.add(n)}r[e]={data:a,time:Date.now()},u||null===n&&(n=setInterval(()=>{_r(r,(e,n)=>{if(Date.now()-e.time>o){let e=wu(r[n]);if(delete r[n],i.delete(n),an(t,"message",[{eventName:"leave",key:n,data:e.data,now:ys(r)}],{tag:"alive"}),u)return!1}}),u||_t(r)||(clearInterval(n),n=null)},l))}else console.log("trigger need key")},t.get=function(){let e=[];return _r(r,(t,r)=>{e.push({key:r,data:t.data})}),e=wu(e),e},t.clear=function(){if(u)return[];u=!0,null!==n&&(clearInterval(n),n=null);for(let e of s)clearTimeout(e);s.clear();let e=[];return _r(r,(t,r)=>{i.has(r)&&e.push({key:r,data:t.data})}),e=wu(e),r=Object.create(null),i.clear(),e},t}function gu(e,t={}){let r=t.isCleared;Gr(r)||(r=()=>!1);let n=t.onDeliver;Gr(n)||(n=null);let s=e=>{console.error(`[w-serv-broadcast] ${e.msg}`,e.err)},i=t=>(i,...u)=>{let o=u[0];if("error"===i&&_t(o)&&"listener"===o.fun){let t={msg:`listener of event[${o.name}] error`,err:o.msg};return r()?(s(t),!1):e.emit("error",t)}return(!t||!r())&&("error"===i&&0===(t=>Gr(e.listenerCount)?e.listenerCount(t):1)("error")?(s(o),!1):(null!==n&&n(i,u),e.emit(i,...u)))},u=i(!0),o=i(!1),l=(t,...n)=>{r()||Mn(e,t,n,{tag:"w-serv-broadcast",funEmit:u})};return l.final=(t,...r)=>{Mn(e,t,r,{tag:"w-serv-broadcast",funEmit:o})},l}function Iu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let r=new Map,n=!1,s=new Map,i=gu(e,{isCleared:()=>n,onDeliver:(e,t)=>{"clientEnter"===e?s.set(t[0],t[1]):"clientLeave"===e&&s.delete(t[0])}}),u=yu();u.on("message",function({eventName:e,key:t,data:r,now:n}){"enter"===e?i("clientEnter",t,r):"leave"===e&&(s.has(t)&&s.set(t,r),i("clientLeave",t,r)),i("clientChange",n)});let o=function(e,t,s){if(!n&&"[sys:polling]"===e)try{let e=ye(t,"clientId");if(!er(e))return void s.reject("[sys:polling] invalid clientId");let n=r.get(e)||[];r.set(e,[]),u.trigger(e,t),s.resolve(n)}catch(e){i("error",{msg:"[sys:polling] error",err:e}),s.reject("[sys:polling] error")}},l=null;return e.getClients=u.get,e.getMessages=()=>Object.fromEntries(Array.from(r,([e,t])=>[e,wu(t)])),e.broadcast=e=>{if(n)return;let t={mode:"broadcast",data:wu(e)};r.forEach(e=>{e.push(t)})},e.clearBroadcast=()=>{if(n)return;n=!0,null!==l&&(clearInterval(l),l=null),e.off("execute",o);let t=new Map(Ot(u.get(),e=>[e.key,e.data]));u.clear();let a=s.size;for(let[e,r]of Array.from(s))a--,i.final("clientLeave",e,t.has(e)?t.get(e):r),i.final("clientChange",a);s.clear(),r=new Map},e.on("execute",o),l=setInterval(()=>{let e=new Set(Ot(u.get(),"key"));for(let t of Array.from(r.keys()))e.has(t)||r.delete(t)},1e3),e}let mu=(e,t)=>{let r={};return _r(e,e=>{let n=e,s=ye(t,e,"");er(s)&&(r[n]=s)}),r};function Cu(e){_r(e,({ev:e,name:t,h:r})=>{try{Gr(e.removeListener)?e.removeListener(t,r):Gr(e.off)&&e.off(t,r)}catch(e){}})}function pu(e,t){return 0!==ys(e)&&(!!_t(t)&&(_r(e,e=>{let r=t[e];if(!r)throw new Error(`invalid kpOrm[${e}]`);if(!Gr(r.on))throw new Error(`kpOrm[${e}] can not listen to change events`)}),!0))}function fu(e,t,r,n={}){if(!_t(e))throw new Error("invalid instWConverServer");if(!pu(t,r))return e;let s=ye(n,"genTag");Gr(s)||(s=()=>di()+"|"+ps(6));let i={};_r(t,e=>{i[e]=s()}),_r(i,e=>{if(!er(e))throw new Error("invalid opt.genTag")});let u=[];try{_r(t,t=>{let n=r[t],s=()=>{e.updateTableTag(t)};try{n.on("change",s)}catch(e){throw new Error(`kpOrm[${t}] can not listen to change events`)}u.push({ev:n,name:"change",h:s})});let n=r=>{e.broadcast({mode:"syncKpTable",data:mu(t,r)})};e.on("changeTableTags",n),u.push({ev:e,name:"changeTableTags",h:n})}catch(e){throw Cu(u),e}let o=e.clearSync;return e.clearSync=()=>{Cu(u),u=[],o()},e.initTableTags(i,"useInputOnly"),e}function Lu(e,t){return!!(null==e?0:e.length)&&bs(e,t,0)>-1}function hu(e,t,r){for(var n=-1,s=null==e?0:e.length;++n<s;)if(r(t,e[n]))return!0;return!1}var bu=wt&&1/he(new wt([,-0]))[1]==1/0?function(e){return new wt(e)}:function(){};function Nu(e){return e&&e.length?function(e,t,r){var n=-1,s=Lu,i=e.length,u=!0,o=[],l=o;if(r)u=!1,s=hu;else if(i>=200){var a=t?null:bu(e);if(a)return he(a);u=!1,s=Ce,l=new Ie}else l=t?[]:o;e:for(;++n<i;){var c=e[n],d=t?t(c):c;if(c=r||0!==c?c:0,u&&d==d){for(var D=l.length;D--;)if(l[D]===d)continue e;t&&l.push(d),o.push(c)}else s(l,d,r)||(l!==o&&l.push(d),o.push(c))}return o}(e):[]}function Au(e,t,r,n){for(var s=r-1,i=e.length;++s<i;)if(n(e[s],t))return s;return-1}var xu=Array.prototype.splice;function Eu(e,t){return e&&e.length&&t&&t.length?function(e,t,r,n){var s=n?Au:bs,i=-1,u=t.length,o=e;for(e===t&&(t=xi(t)),r&&(o=oe(e,Re(r)));++i<u;)for(var l=0,a=t[i],c=r?r(a):a;(l=s(o,c,l,n))>-1;)o!==e&&xu.call(o,l,1),xu.call(e,l,1);return e}(e,t):e}let Tu=["__proto__","constructor","prototype"];function Su(e){return M(t=e)?oe(t,Me):A(t)?[t]:xi(ue(de(t)));var t}function Zu(e){let t=Su(e);if(0===t.length)return!1;for(let e of t)if(""===e||Tu.includes(e))return!1;return!0}const vu=/^[\p{L}_][\p{L}\p{M}\p{N}_]*$/u,Yu=["prototype","length"];function Xu(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;let t=Object.getPrototypeOf(e);return(t===Object.prototype||null===t)&&(0===Object.getOwnPropertySymbols(e).length&&Object.getOwnPropertyNames(e).length===Object.keys(e).length)}function ju(e){return"string"==typeof e?e.length<=1024&&e.indexOf("\0")<0:"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)}function zu(e,t={}){try{return function(e,t){let r=e=>({ok:!1,reason:e});if(void 0===e)return!0===t.requireKey?r("emptyFind"):{ok:!0,find:e};if(!Xu(e))return r("notObject");let n=Object.keys(e);if(n.length>64)return r("tooManyKeys");if(!0===t.requireKey&&0===n.length)return r("emptyFind");let s={},i=0;for(let t of n){if(t.length>128||Yu.includes(t)||t in Object.prototype||!vu.test(t))return r("badKey");let n=e[t];if(ju(n))s[t]=n;else{if(!Xu(n))return r("badValue");{let e=Object.keys(n);if(1!==e.length||"$in"!==e[0])return r("badOperator");let u=n.$in;if(!Array.isArray(u)||Object.getOwnPropertySymbols(u).length>0)return r("badIn");let o=u.length;if(i+=o,i>1e3)return r("tooManyIn");if(Object.getOwnPropertyNames(u).length!==o+1)return r("badIn");let l=[];for(let e=0;e<o;e++){if(!Object.prototype.hasOwnProperty.call(u,e))return r("badIn");let t=u[e];if(!ju(t))return r("badIn");l.push(t)}s[t]=Object.freeze({$in:Object.freeze(l)})}}}return{ok:!0,find:Object.freeze(s)}}(e,t)}catch(e){return{ok:!1,reason:"notObject"}}}let Gu=e=>null!=e,Wu=["select","delAll"];function Ku(e={}){let t=ye(e,"getUserIdByToken",null);if(Gu(t)&&!Gr(t))throw new Error("invalid opt.getUserIdByToken");Gr(t)||(t=async()=>"");let r=ye(e,"useDbOrm",null);Dr(r)||(r=!1);let n=null;if(r&&(n=ye(e,"operOrm",null),!Gr(n)))throw new Error("invalid opt.operOrm when useDbOrm=true");let s=[];if(r){if(s=ye(e,"tableNames",null),!hr(s))throw new Error("invalid opt.tableNamesExec when useDbOrm=true");_r(s,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesExec[${t}] when useDbOrm=true`)}),s=[...s]}let i=[];if(r){if(i=ye(e,"methods",null),null===i)i=["select","insert","save","del"];else if(!hr(i))throw new Error("invalid opt.methodsExec when useDbOrm=true");_r(i,(e,t)=>{if(!er(e))throw new Error(`invalid opt.methodsExec[${t}] when useDbOrm=true`)}),i=[...i]}let u=null;if(r&&(u=ye(e,"authorizeExec",null),!Gr(u)))throw new Error("invalid opt.authorizeExec when useDbOrm=true");let o=ye(e,"kpFunExt",null);if(Gu(o)&&!$t(o))throw new Error("invalid opt.kpFunExt");$t(o)||(o={}),_r(o,(e,t)=>{if(!Gr(e))throw new Error(`invalid opt.kpFunExt[${t}]`)});let l=ye(e,"kpFunSys",null),a=[];r&&(_r(s,e=>{_r(i,t=>{a.push(`${e}.${t}`)})}),a=Nu(a)),_r(a,e=>{if(!Zu(e))throw new Error(`table operation[${e}] can not be bound by the client`)});let c=Nu(Ot(a,e=>Su(e)[0]));_r(o,(e,t)=>{if(t.startsWith("[sys:"))throw new Error(`kpFunExt[${t}] can not use the reserved prefix [sys:`);if(!Zu(t))throw new Error(`kpFunExt[${t}] can not be bound by the client`);let r=Su(t)[0];if(c.includes(r))throw new Error(`kpFunExt[${t}] conflicts with the table operations of table[${r}]`)});let d=function(e){let t=()=>({leaf:null,kids:new Map}),r=e=>{if(null!==e.leaf)return e.leaf;for(let t of e.kids.values()){let e=r(t);if(null!==e)return e}return null},n=t();for(let s of e){let e=n;for(let r of Su(s)){if(null!==e.leaf)return[e.leaf,s];e.kids.has(r)||e.kids.set(r,t()),e=e.kids.get(r)}if(null===e.leaf){if(e.kids.size>0)return[r(e),s];e.leaf=s}else if(e.leaf!==s)return[e.leaf,s]}return null}([...a,...at(o)]);if(null!==d){let e=e=>a.includes(e)?"table operation":"kpFunExt";throw new Error(`${e(d[1])}[${d[1]}] conflicts with ${e(d[0])}[${d[0]}] on the client binding path`)}return{getUserIdByToken:t,useDbOrm:r,operOrm:n,tableNames:s,methods:i,authorizeExec:u,kpFunExt:o,kpFunSys:l,pathNames:a}}function Fu(e,t={}){if(!_t(e))throw new Error("invalid instWConverServer");let{getUserIdByToken:r,useDbOrm:n,operOrm:s,tableNames:i,methods:u,authorizeExec:o,kpFunExt:l,kpFunSys:a}=Ku(t),c={};async function d(t,n,s){if(!er(t))return s.resolve({state:"error",msg:"invalid func"}),s;let i="";if(!dn(n,"__sysToken__"))return s.resolve({state:"error",msg:"invalid token"}),s;if(i=Ln(n.__sysToken__),!dn(n,"__sysInputArgs__"))return s.resolve({state:"error",msg:"invalid input"}),s;if(n=n.__sysInputArgs__,!Array.isArray(n))return s.resolve({state:"error",msg:"invalid input"}),s;let u="";try{u=await r(i)}catch(t){return s.resolve({state:"error",msg:t}),an(e,"error",[t]),s}if(er(u)||(u=""),"[sys:getFuncList]"===t){let e=at(c);e=function(e,t){if(!Er(e))return[];if(($t(t)||wr(t)||qt(t)||Dr(t))&&(t=[t]),!Er(t))return e;let r=wu(e);return Eu(r,t),r}(e,"[sys:getTableTags]");let t={state:"success",msg:e};return s.resolve(t),s}if(!Object.prototype.hasOwnProperty.call(c,t))return s.resolve({state:"error",msg:`invalid func[${t}]`}),s;let o=c[t];try{let e=await Ur(o)(u,...n);s.resolve(e)}catch(e){s.resolve({state:"error",msg:`call func[${t}] has an error: ${fn(e)}`})}return s}return n&&(c=function(e,t,r,n){let s={};return _r(e,e=>{_r(t,t=>{s[`${e}.${t}`]=async function(s,i){if(Wu.includes(t)){let e=zu(i);if(!e.ok)return Promise.reject(`invalid find[${e.reason}]`);i=e.find}return!0!==await n({userId:s,tableName:e,methodName:t,input:i})?Promise.reject("permission denied"):await r(s,e,t,i)}})}),s}(i,u,s,o)),_r(l,(e,t)=>{c[t]=e}),_t(a)&&_r(a,(e,t)=>{c[t]=e}),e.on("execute",function(t,r,n){d(t,r,n).catch(r=>{n.resolve({state:"error",msg:`execFun func[${t}] has an error: ${fn(r)}`}),an(e,"error",[r])})}),e}let ku=e=>null!=e;function Vu(e,t={}){if(_t(e)||(console.log("instWConverServer is not an effective object, and set instWConverServer to an EventEmitter"),e=ln()),!dn(e,"emit")||!Gr(e.on)||!Gr(e.off))throw new Error("instWConverServer is not an EventEmitter");let{fpTableTags:r,genTag:n,useDbOrm:s,kpOrm:i,tableNamesSync:u,optExec:o}=function(e={}){let t=ye(e,"fpTableTags",null);if(ku(t)&&!er(t))throw new Error("invalid opt.fpTableTags");er(t)||(t="./tableTags.json");let r=ye(e,"genTag",null);if(ku(r)&&!Gr(r))throw new Error("invalid opt.genTag");Gr(r)||(r=()=>di()+"|"+ps(6));let n=ye(e,"useDbOrm",null),s=Dr(n);s||(n=!1);let i=ye(e,"kpOrm",null),u=ye(e,"operOrm",null),o=ye(e,"tableNamesExec",null),l=ye(e,"methodsExec",null),a=ye(e,"authorizeExec",null),c=ye(e,"tableNamesSync",null),d=ye(e,"getUserIdByToken",null),D=ye(e,"kpFunExt",null);s||_r({operOrm:u,tableNamesExec:o,methodsExec:l,authorizeExec:a,kpOrm:i,tableNamesSync:c},(e,t)=>{if(null!==e)throw new Error(`invalid opt.useDbOrm when opt.${t} is given`)});if(n&&!$t(i))throw new Error("invalid opt.kpOrm when useDbOrm=true");if(n&&ku(c)){if(!hr(c))throw new Error("invalid opt.tableNamesSync when useDbOrm=true");_r(c,(e,t)=>{if(!er(e))throw new Error(`invalid opt.tableNamesSync[${t}] when useDbOrm=true`)}),c=[...c]}let M=Ku({getUserIdByToken:d,useDbOrm:n,operOrm:u,tableNames:o,methods:l,authorizeExec:a,kpFunExt:D}),w=!1;return n&&(w=pu(c,i)),w&&_r(c,e=>{if(!M.tableNames.includes(e)||!M.methods.includes("select"))throw new Error(`invalid opt.tableNamesSync when table operation[${e}.select] does not exist`)}),{fpTableTags:t,genTag:r,useDbOrm:n,kpOrm:i,tableNamesSync:c,optExec:{getUserIdByToken:M.getUserIdByToken,useDbOrm:M.useDbOrm,operOrm:M.operOrm,tableNames:M.tableNames,methods:M.methods,authorizeExec:M.authorizeExec,kpFunExt:M.kpFunExt}}}(t);e=new Iu(e=new $i(e,{fpTableTags:r,genTag:n}));let l={"[sys:getTableTags]":()=>{let t=e.getTableTags();return{mode:"syncKpTable",data:mu(u,t)}}};try{e=new Fu(e,{...o,kpFunSys:l}),s&&(e=new fu(e,u,i,{genTag:n}))}catch(t){throw e.clearBroadcast(),e.clearSync(),t}return e}function Hu(e={}){let t=ln(),s=ye(e,"port");(!Lr(s,{useLimitSafe:!0})||fr(s)>65535)&&(s=8080),s=fr(s);let i=(t,r,n)=>{let s=ye(e,t);if(null==s)return r;if(!n(s))throw new Error(`invalid opt.${t}`);return s},u=i("corsOrigins",["http://localhost"],e=>!1===e||qt(e)||hr(e));!1===u&&(u=[]),qt(u)&&(u=[u]),u=u.filter(e=>""!==e);let o=i("useInert",!0,Dr),l=i("pathStaticFiles","dist",er),a=ye(e,"apis");Er(a)||(a=[]);let c=ye(e,"fpTableTags",null);null==c&&(c=ye(e,"fnTableTags",null));let d=ye(e,"useShowLog");Dr(d)||(d=!0);let D=!0,M=[],w=e=>{D?M.push(e):0!==t.listenerCount("error")?an(t,"error",[e],{tag:"w-serv-hapi"}):console.error("[w-serv-hapi]",e)},y=!1;u.length>0&&(y={origin:u,credentials:!1,additionalExposedHeaders:["Return-Type","Return-Msg","Return-Retryable","Content-Disposition"]});let g=new r.Server({port:s,routes:{timeout:{server:!1,socket:!1},cors:y}}),I=new ci({serverHapi:g,apiName:ye(e,"apiName"),pathUploadTemp:ye(e,"pathUploadTemp"),tokenType:ye(e,"tokenType"),sizeSlice:ye(e,"sizeSlice"),sizeMsg:ye(e,"sizeMsg"),verifyConn:ye(e,"verifyConn"),delayForSlice:ye(e,"delayForSlice")});I.on("error",w),I.on("clientChange",function(e){d&&console.log(`Server[port:${s}]: now clients: ${e}`)});let m=()=>{for(let e of["clearBroadcast","clearSync"])if(Gr(I[e]))try{I[e]()}catch(e){w(e)}};I=new Vu(I,{...e,fpTableTags:c});let C=new Promise(e=>{setTimeout(()=>{D=!1,e();let t=M;M=[];for(let e of t)w(e)},1)}),p=!1,f=(async()=>{await C,o&&await g.register(n);let e=[];return o&&(e=[{method:"GET",path:"/{file*}",handler:{directory:{path:`${l}/`}}}]),e=[...e,...a],g.route(e),await g.start(),p=!0,d&&console.log(`Server running at: ${g.info.uri}`),g})();f.catch(e=>{m(),w(e)});let L=null;return t.ready=()=>f,t.stop=()=>(null!==L||(L=(async()=>{if(await f.catch(()=>{}),m(),p)try{await g.stop()}catch(e){w(e)}})()),L),t.getServer=async()=>g,t.getInstWConverServer=async()=>I,t}function Uu(e){try{e instanceof Promise&&Promise.prototype.then.call(e,void 0,()=>{})}catch(e){}}function Bu(e,t){let r=Hr(),n=!1;try{let t=function(e,t=!1){let r=[],n=!1;try{if(Array.isArray(e)){let t=e.length;r.length=t;for(let n=0;n<t;n++)n in e&&(r[n]=e[n])}else{if(t||!$t(e)&&!hr(e))return null;{n=!0;let t=Object.keys(e);for(let n=0;n<t.length;n++)r.push({k:t[n],v:e[t[n]]})}}}catch(e){throw r.forEach(e=>{Uu(n?e.v:e)}),e}return{items:r,useObj:n}}(e);if(null===t)return r.reject("rs is not an array or object"),r;e=t.items,n=t.useObj}catch(e){return r.reject(e),r}Gr(t)||(_r(e,e=>{Uu(n?e.v:e)}),t=function(e){return e});let s=Gr(t),i=-1,u=[];return e.reduce(function(e,r){return e.then(function(e){u.push(e),i+=1;let o=i,l=r;return n&&(o=r.k,l=r.v),s?t(l,o):l})},Promise.resolve()).then(function(e){var t,n,s,i;u.push(e),i=null==(t=u)?0:t.length,u=i?fs(t,(n=s||void 0===n?1:dr(n))<0?0:n,i):[],r.resolve(u)}).catch(function(e){r.reject(e)}),r}function Qu(e){let t="procOrm does not authorize users, authorize where procOrm is exposed to clients",r=[["useCheckUser",t],["getUserById",t],["useExcludeWhenNotAdmin","procOrm does not filter select results by user, use addFunPostProcessing if needed"]];for(let[t,n]of r){let r=ye(e,t);if(null!=r&&!1!==r)throw new Error(`opt.${t} has been removed, ${n}`)}}let Ru={backup:async function(e){if(!_t(e))throw console.log("woItems",e),new Error("invalid woItems");return await Bu(e,async(e,t)=>(console.log("backup...",t),{name:t,data:await e.select()}))},recover:async function(e,r,n,s=!1){if(!Pr(e))throw console.log("fp",e),new Error("fp is not exist");if(!_t(r))throw console.log("woItems",r),new Error("invalid woItems");Gr(n)||(n=null),Dr(s)||(s=!1);let i=t.readFileSync(e,"utf8");i=Ws(i);let u=Kr(i);if(!Er(u))throw new Error("invalid backup data, need a non-empty array");_r(u,(e,t)=>{let n=ye(e,"name");if(!er(n))throw new Error(`invalid backup data, rs[${t}].name is not a string`);if(!Object.prototype.hasOwnProperty.call(r,n))throw new Error(`invalid backup data, table[${n}] is not in woItems`)}),Gr(n)&&n(),await Bu(u,async e=>{console.log("recover...",e.name),s&&(console.log("needCreateStorage"),await r[e.name].createStorage());let t=null;return ys(e.data)>0&&(t=await r[e.name].insert(e.data)),t})}};var Ou=$e&&$e.isRegExp,Pu=Ou?Re(Ou):function(e){return N(e)&&"[object RegExp]"==b(e)},Ju=/\w*$/;function $u(e,t){var r=30,n="...";if(S(t)){var s="separator"in t?t.separator:s;r="length"in t?dr(t.length):r,n="omission"in t?ce(t.omission):n}var i=(e=de(e)).length;if(ts(e)){var u=Gs(e);i=u.length}if(r>=i)return e;var o=r-ws(n);if(o<1)return n;var l=u?Ls(u,0,o).join(""):e.slice(0,o);if(void 0===s)return l+n;if(u&&(o+=l.length-o),Pu(s)){if(e.slice(o).search(s)){var a,c=l;for(s.global||(s=RegExp(s.source,de(Ju.exec(s))+"g")),s.lastIndex=0;a=s.exec(c);)var d=a.index;l=l.slice(0,void 0===d?o:d)}}else if(e.indexOf(ce(s),o)!=o){var D=l.lastIndexOf(s);D>-1&&(l=l.slice(0,D))}return l+n}function _u(){if(!Gr(Is))throw new Error("invalid dayjs");return Is().format("YYYY-MM-DDTHH:mm:ss.SSSZ")}const qu=[];for(let e=0;e<256;++e)qu.push((e+256).toString(16).slice(1));const eo=new Uint8Array(16);function to(){return crypto.getRandomValues(eo)}const ro={};function no(e,t,r){let n;if(e)n=so(e.random??e.rng?.()??to(),e.msecs,e.seq,t,r);else{const e=Date.now(),s=to();!function(e,t,r){e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=io(r),e.msecs=t):(e.seq=e.seq+1|0,0===e.seq&&e.msecs++)}(ro,e,s),n=so(s,ro.msecs,ro.seq,t,r)}return t??function(e,t=0){return(qu[e[t+0]]+qu[e[t+1]]+qu[e[t+2]]+qu[e[t+3]]+"-"+qu[e[t+4]]+qu[e[t+5]]+"-"+qu[e[t+6]]+qu[e[t+7]]+"-"+qu[e[t+8]]+qu[e[t+9]]+"-"+qu[e[t+10]]+qu[e[t+11]]+qu[e[t+12]]+qu[e[t+13]]+qu[e[t+14]]+qu[e[t+15]]).toLowerCase()}(n)}function so(e,t,r,n,s=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(n){if(s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`)}else n=new Uint8Array(16),s=0;return t??=Date.now(),r??=io(e),n[s++]=t/1099511627776&255,n[s++]=t/4294967296&255,n[s++]=t/16777216&255,n[s++]=t/65536&255,n[s++]=t/256&255,n[s++]=255&t,n[s++]=112|r>>>28&15,n[s++]=r>>>20&255,n[s++]=128|r>>>14&63,n[s++]=r>>>6&255,n[s++]=r<<2&255|3&e[10],n[s++]=e[11],n[s++]=e[12],n[s++]=e[13],n[s++]=e[14],n[s++]=e[15],n}function io(e){return(127&e[6])<<24|e[7]<<16|e[8]<<8|e[9]}function uo(){return no()}var oo={exports:{}},lo={},ao={exports:{}},co={};function Do(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var Mo=/javascript\s*\:/gim;co.whiteList=Do(),co.getDefaultWhiteList=Do,co.onAttr=function(e,t,r){},co.onIgnoreAttr=function(e,t,r){},co.safeAttrValue=function(e,t){return Mo.test(t)?"":t};var wo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}};var yo=function(e,t){";"!==(e=wo.trimRight(e))[e.length-1]&&(e+=";");var r=e.length,n=!1,s=0,i=0,u="";function o(){if(!n){var r=wo.trim(e.slice(s,i)),o=r.indexOf(":");if(-1!==o){var l=wo.trim(r.slice(0,o)),a=wo.trim(r.slice(o+1));if(l){var c=t(s,u.length,l,a,r);c&&(u+=c+"; ")}}}s=i+1}for(;i<r;i++){var l=e[i];if("/"===l&&"*"===e[i+1]){var a=e.indexOf("*/",i+2);if(-1===a)break;s=(i=a+1)+1,n=!1}else"("===l?n=!0:")"===l?n=!1:";"===l?n||o():"\n"===l&&o()}return wo.trim(u)},go=co,Io=yo;function mo(e){return null==e}function Co(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).whiteList=e.whiteList||go.whiteList,e.onAttr=e.onAttr||go.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||go.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||go.safeAttrValue,this.options=e}Co.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,r=t.whiteList,n=t.onAttr,s=t.onIgnoreAttr,i=t.safeAttrValue;return Io(e,function(e,t,u,o,l){var a=r[u],c=!1;if(!0===a?c=a:"function"==typeof a?c=a(o):a instanceof RegExp&&(c=a.test(o)),!0!==c&&(c=!1),o=i(u,o)){var d,D={position:t,sourcePosition:e,source:l,isWhite:c};return c?mo(d=n(u,o,D))?u+":"+o:d:mo(d=s(u,o,D))?void 0:d}})};var po=Co;!function(e,t){var r=co,n=po;for(var s in(t=e.exports=function(e,t){return new n(t).process(e)}).FilterCSS=n,r)t[s]=r[s];"undefined"!=typeof window&&(window.filterCSS=e.exports)}(ao,ao.exports);var fo=ao.exports,Lo={indexOf:function(e,t){var r,n;if(Array.prototype.indexOf)return e.indexOf(t);for(r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1},forEach:function(e,t,r){var n,s;if(Array.prototype.forEach)return e.forEach(t,r);for(n=0,s=e.length;n<s;n++)t.call(r,e[n],n,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}},ho=fo.FilterCSS,bo=fo.getDefaultWhiteList,No=Lo;function Ao(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]}}var xo=new ho;function Eo(e){return e.replace(To,"<").replace(So,">")}var To=/</g,So=/>/g,Zo=/"/g,vo=/"/g,Yo=/&#([a-zA-Z0-9]*);?/gim,Xo=/:?/gim,jo=/&newline;?/gim,zo=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi,Go=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,Wo=/u\s*r\s*l\s*\(.*/gi;function Ko(e){return e.replace(Zo,""")}function Fo(e){return e.replace(vo,'"')}function ko(e){return e.replace(Yo,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function Vo(e){return e.replace(Xo,":").replace(jo," ")}function Ho(e){for(var t="",r=0,n=e.length;r<n;r++)t+=e.charCodeAt(r)<32?" ":e.charAt(r);return No.trim(t)}function Uo(e){return e=Ho(e=Vo(e=ko(e=Fo(e))))}function Bo(e){return e=Eo(e=Ko(e))}lo.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","crossorigin","loop","muted","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],figcaption:[],figure:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height","loading"],ins:["datetime"],kbd:[],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],summary:[],sup:[],strong:[],strike:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","crossorigin","loop","muted","playsinline","poster","preload","src","height","width"]},lo.getDefaultWhiteList=Ao,lo.onTag=function(e,t,r){},lo.onIgnoreTag=function(e,t,r){},lo.onTagAttr=function(e,t,r){},lo.onIgnoreTagAttr=function(e,t,r){},lo.safeAttrValue=function(e,t,r,n){if(r=Uo(r),"href"===t||"src"===t){if("#"===(r=No.trim(r)))return"#";if("http://"!==r.substr(0,7)&&"https://"!==r.substr(0,8)&&"mailto:"!==r.substr(0,7)&&"tel:"!==r.substr(0,4)&&"data:image/"!==r.substr(0,11)&&"ftp://"!==r.substr(0,6)&&"./"!==r.substr(0,2)&&"../"!==r.substr(0,3)&&"#"!==r[0]&&"/"!==r[0])return""}else if("background"===t){if(zo.lastIndex=0,zo.test(r))return""}else if("style"===t){if(Go.lastIndex=0,Go.test(r))return"";if(Wo.lastIndex=0,Wo.test(r)&&(zo.lastIndex=0,zo.test(r)))return"";!1!==n&&(r=(n=n||xo).process(r))}return r=Bo(r)},lo.escapeHtml=Eo,lo.escapeQuote=Ko,lo.unescapeQuote=Fo,lo.escapeHtmlEntities=ko,lo.escapeDangerHtml5Entities=Vo,lo.clearNonPrintableCharacter=Ho,lo.friendlyAttrValue=Uo,lo.escapeAttrValue=Bo,lo.onIgnoreTagStripAll=function(){return""},lo.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var r=!Array.isArray(e),n=[],s=!1;return{onIgnoreTag:function(i,u,o){if(function(t){return!!r||-1!==No.indexOf(e,t)}(i)){if(o.isClosing){var l="[/removed]",a=o.position+10;return n.push([!1!==s?s:o.position,a]),s=!1,l}return s||(s=o.position),"[removed]"}return t(i,u,o)},remove:function(e){var t="",r=0;return No.forEach(n,function(n){t+=e.slice(r,n[0]),r=n[1]}),t+=e.slice(r)}}},lo.stripCommentTag=function(e){for(var t="",r=0;r<e.length;){var n=e.indexOf("\x3c!--",r);if(-1===n){t+=e.slice(r);break}t+=e.slice(r,n);var s=e.indexOf("--\x3e",n);if(-1===s)break;r=s+3}return t},lo.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))})).join("")},lo.attributeWrapSign='"',lo.cssFilter=xo,lo.getDefaultCSSWhiteList=bo;var Qo={},Ro=Lo;function Oo(e){var t,r=Ro.spaceIndex(e);return t=-1===r?e.slice(1,-1):e.slice(1,r+1),"/"===(t=Ro.trim(t).toLowerCase()).slice(0,1)&&(t=t.slice(1)),"/"===t.slice(-1)&&(t=t.slice(0,-1)),t}function Po(e){return"</"===e.slice(0,2)}var Jo=/[^a-zA-Z0-9\\_:.-]/gim;function $o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"="===r?t:-1}}function _o(e,t){for(;t<e.length;t++){var r=e[t];if(" "!==r)return"'"===r||'"'===r?t:-1}}function qo(e,t){for(;t>0;t--){var r=e[t];if(" "!==r)return"="===r?t:-1}}function el(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}Qo.parseTag=function(e,t,r){var n="",s=0,i=!1,u=!1,o=0,l=e.length,a="",c="";e:for(o=0;o<l;o++){var d=e.charAt(o);if(!1===i){if("<"===d){i=o;continue}}else if(!1===u){if("<"===d){n+=r(e.slice(s,o)),i=o,s=o;continue}if(">"===d||o===l-1){n+=r(e.slice(s,i)),a=Oo(c=e.slice(i,o+1)),n+=t(i,n.length,a,c,Po(c)),s=o+1,i=!1;continue}if('"'===d||"'"===d)for(var D=1,M=e.charAt(o-D);""===M.trim()||"="===M;){if("="===M){u=d;continue e}M=e.charAt(o-++D)}}else if(d===u){u=!1;continue}}return s<l&&(n+=r(e.substr(s))),n},Qo.parseAttr=function(e,t){var r=0,n=0,s=[],i=!1,u=e.length;function o(e,r){if(!((e=(e=Ro.trim(e)).replace(Jo,"").toLowerCase()).length<1)){var n=t(e,r||"");n&&s.push(n)}}for(var l=0;l<u;l++){var a,c=e.charAt(l);if(!1!==i||"="!==c)if(!1===i||l!==n)if(/\s|\n|\t/.test(c)){if(e=e.replace(/\s|\n|\t/g," "),!1===i){if(-1===(a=$o(e,l))){o(Ro.trim(e.slice(r,l))),i=!1,r=l+1;continue}l=a-1;continue}if(-1===(a=qo(e,l-1))){o(i,el(Ro.trim(e.slice(r,l)))),i=!1,r=l+1;continue}}else;else{if(-1===(a=e.indexOf(c,l+1)))break;o(i,Ro.trim(e.slice(n+1,a))),i=!1,r=(l=a)+1}else i=e.slice(r,l),r=l+1,n='"'===e.charAt(r)||"'"===e.charAt(r)?r:_o(e,l+1)}return r<e.length&&(!1===i?o(e.slice(r)):o(i,el(Ro.trim(e.slice(r))))),Ro.trim(s.join(" "))};var tl=fo.FilterCSS,rl=lo,nl=Qo,sl=nl.parseTag,il=nl.parseAttr,ul=Lo;function ol(e){return null==e}function ll(e){(e=function(e){var t={};for(var r in e)t[r]=e[r];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=rl.onIgnoreTagStripAll),e.whiteList||e.allowList?e.whiteList=function(e){var t={};for(var r in e)Array.isArray(e[r])?t[r.toLowerCase()]=e[r].map(function(e){return e.toLowerCase()}):t[r.toLowerCase()]=e[r];return t}(e.whiteList||e.allowList):e.whiteList=rl.whiteList,this.attributeWrapSign=!0===e.singleQuotedAttributeValue?"'":rl.attributeWrapSign,e.onTag=e.onTag||rl.onTag,e.onTagAttr=e.onTagAttr||rl.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||rl.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||rl.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||rl.safeAttrValue,e.escapeHtml=e.escapeHtml||rl.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new tl(e.css))}ll.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this,r=t.options,n=r.whiteList,s=r.onTag,i=r.onIgnoreTag,u=r.onTagAttr,o=r.onIgnoreTagAttr,l=r.safeAttrValue,a=r.escapeHtml,c=t.attributeWrapSign,d=t.cssFilter;r.stripBlankChar&&(e=rl.stripBlankChar(e)),r.allowCommentTag||(e=rl.stripCommentTag(e));var D=!1;r.stripIgnoreTagBody&&(D=rl.StripTagBody(r.stripIgnoreTagBody,i),i=D.onIgnoreTag);var M=sl(e,function(e,t,r,D,M){var w={sourcePosition:e,position:t,isClosing:M,isWhite:Object.prototype.hasOwnProperty.call(n,r)},y=s(r,D,w);if(!ol(y))return y;if(w.isWhite){if(w.isClosing)return"</"+r+">";var g=function(e){var t=ul.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var r="/"===(e=ul.trim(e.slice(t+1,-1)))[e.length-1];return r&&(e=ul.trim(e.slice(0,-1))),{html:e,closing:r}}(D),I=n[r],m=il(g.html,function(e,t){var n=-1!==ul.indexOf(I,e),s=u(r,e,t,n);return ol(s)?n?(t=l(r,e,t,d))?e+"="+c+t+c:e:ol(s=o(r,e,t,n))?void 0:s:s});return D="<"+r,m&&(D+=" "+m),g.closing&&(D+=" /"),D+=">"}return ol(y=i(r,D,w))?a(D):y},a);return D&&(M=D.remove(M)),M};var al=ll;!function(e,t){var r=lo,n=Qo,s=al;function i(e,t){return new s(t).process(e)}(t=e.exports=i).filterXSS=i,t.FilterXSS=s,function(){for(var e in r)t[e]=r[e];for(var s in n)t[s]=n[s]}(),"undefined"!=typeof window&&(window.filterXSS=e.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=e.exports)}(oo,oo.exports);var cl=nn(oo.exports);function dl(){return"undefined"!=typeof self?self:"undefined"!=typeof window&&void 0!==window.document?window:"undefined"!=typeof global?global:null}let Dl=/<(?=[A-Za-z!/?]|$)/g;function Ml(e){return e.replace(Dl,"<")}let wl={getFilterXSS:function(e=cl){if(Gr(e))return e;let t=dl(),r=ye(t,"filterXSS",null);if(Gr(r))return r;let n=ye(t,"xss",null);if(Gr(n))return n;throw new Error("invalid filterXSS, g.filterXSS, use script for import")},getOpt:function(e){return{escapeHtml:Ml,onIgnoreTagAttr:function(t,r,n,s){if("style"===r)return r+'="'+e.escapeAttrValue(n)+'"'}}}};function yl(e){let t=null,r=null;let n=function e(n){if(Array.isArray(n)){for(let t=0;t<n.length;t++)n[t]=e(n[t]);return n}if($t(n)||hr(n)){for(let t of Object.keys(n))n[t]=e(n[t]);return n}return er(n)?(s=n,null===t&&(t=wl.getFilterXSS(),r=wl.getOpt(t)),t(s,r)):n;var s}(wu(e));return n}function gl(e,t){if(!hr(e))return[];hr(t)||(t=[t]);let r=[];return _r(e,(e,n)=>{0===ye(e,"ok")&&r.push({k:n,id:ye(t,[n,"id"]),err:ye(e,"err","")})}),r}function Il(e,t){var r,n,s;let i=`${e}: ${Jt(Ot((n=10,(r=t)&&r.length?fs(r,0,(n=s||void 0===n?1:dr(n))<0?0:n):[]),e=>er(e.ref)?e.ref:er(e.id)||wr(e.id)?`id[${$u(String(e.id),{length:100,omission:"…"})}]`:`data[${e.k}]`),", ")}`;return ys(t)>10&&(i+=`, ... (${ys(t)} in total)`),i}function ml(e,t){if(t.indexOf("id")<0)return!1;let r=ye(e,"settings",null);if(_t(r)&&!0!==ye(r,"id.pk"))return!1;let n=ye(r,"id.type","")||ye(e,"kpType.id","");return!(er(n)&&["STRING","TEXT","CHAR","UUID","CITEXT"].indexOf(n.split("(")[0].trim().toUpperCase())<0)}function Cl(e,t){return null!==e&&"object"==typeof e&&"string"==typeof t&&Object.prototype.hasOwnProperty.call(e,t)?void 0===e[t]?null:e[t]:null}function pl(e){return"number"==typeof e&&Number.isFinite(e)}function fl(e){return pl(e)?String(e):e}function Ll(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,t(e[r],r)]))}const hl=Object.freeze({proto:"unsupported key[__proto__]",accessor:"unsupported accessor property",unreadable:"unreadable value",deep:"too deep",hidden:"unsupported symbol key or non-enumerable property",irregular:"unsupported irregular object or array"}),bl="function"==typeof WeakRef?Function.prototype.call.bind(WeakRef.prototype.deref):null,Nl="function"==typeof FinalizationRegistry?Function.prototype.call.bind(FinalizationRegistry.prototype.unregister):null,Al={};function xl(e){for(let t=e;null!==t;t=Object.getPrototypeOf(t))if(o.types.isProxy(t)||Object.prototype.hasOwnProperty.call(t,Symbol.toStringTag))return!1;return!0}function El(e){return o.types.isMap(e)||o.types.isSet(e)||o.types.isWeakMap(e)||o.types.isWeakSet(e)||o.types.isPromise(e)||o.types.isAnyArrayBuffer(e)||o.types.isArrayBufferView(e)||o.types.isBoxedPrimitive(e)||o.types.isRegExp(e)||o.types.isNativeError(e)||o.types.isGeneratorObject(e)||o.types.isMapIterator(e)||o.types.isSetIterator(e)||o.types.isModuleNamespaceObject(e)}function Tl(e){if("object"!=typeof e||null===e||!xl(e)||!$t(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t===Object.prototype||function(e){if(null!==Object.getPrototypeOf(e))return!1;let t=Reflect.ownKeys(Object.prototype);if(Reflect.ownKeys(e).length!==t.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r))return!1;let r=Object.getOwnPropertyDescriptor(e,"constructor");if(void 0===r||"function"!=typeof r.value||o.types.isProxy(r.value))return!1;if(Function.prototype.toString.call(r.value)!==Function.prototype.toString.call(Object))return!1;let n=Object.getOwnPropertyDescriptor(r.value,"prototype");return void 0!==n&&n.value===e}(t)}function Sl(e){return"object"!=typeof e||null===e||!xl(e)||El(e)?null:Array.isArray(e)?"arr":$t(e)?"obj":null}function Zl(e){if(null!==bl)try{return bl(e),!0}catch(e){}if(null!==Nl)try{return Nl(e,Al),!0}catch(e){}return!1}function vl(e,...t){try{console.log(e,...t)}catch(t){try{console.log(e,"(unprintable)")}catch(e){}}}function Yl(e,t={n:0},r=0){if(t.n>=200)return"[...]";if(t.n++,"string"==typeof e)return $u(e,{length:200});if("function"==typeof e)return"[Function]";if("symbol"==typeof e)return"[Symbol]";if("object"!=typeof e||null===e)return e;if(o.types.isProxy(e))return"[Proxy]";if(o.types.isDate(e))return"[Date]";if(El(e))return"[Object]";if(r>=8)return"[...]";let n=e=>void 0===e?"[empty]":void 0!==e.get||void 0!==e.set?"[Getter/Setter]":Yl(e.value,t,r+1);if(Array.isArray(e)){let t=Math.min(e.length,50),r=[];for(let s=0;s<t;s++)r.push(n(Object.getOwnPropertyDescriptor(e,s)));return e.length>t&&r.push(`[${e.length-t} more]`),r}let s=Reflect.ownKeys(e),i={};for(let t of s.slice(0,50)){let r=Object.getOwnPropertyDescriptor(e,t),s="symbol"==typeof t?String(t):t;Object.defineProperty(i,r.enumerable?s:`${s} (non-enumerable)`,{value:n(r),enumerable:!0,writable:!0,configurable:!0})}return s.length>50&&Object.defineProperty(i,"[more]",{value:s.length-50,enumerable:!0,writable:!0,configurable:!0}),i}function Xl(e,t){let r;try{r=Yl(t)}catch(e){r="(unprintable)"}vl(e,r)}function jl(e,t=1/0,r=!1){try{let n=new Set,s=[e,1],i=0,u=[];for(;s.length>0;){let e,l=s.pop(),a=s.pop();if(n.has(a))continue;if(r){if("object"==typeof a&&null!==a){if(!xl(a)||El(a))return"irregular";if(o.types.isDate(a)){if(Reflect.ownKeys(a).length>0)return"irregular";continue}}e=Sl(a)}else e=Array.isArray(a)?"arr":$t(a)?"obj":null;if(null===e)continue;let c="arr"===e;if(l>t)return"deep";if(n.add(a),Object.prototype.hasOwnProperty.call(a,"__proto__"))return"proto";let d=c?null:Object.keys(a);if(r&&!c){if(!Tl(a))return"irregular";if(Reflect.ownKeys(a).length!==d.length)return"hidden";u.push(a)}let D=c?a.length:d.length;for(let e=0;e<D;e++){let t=Object.getOwnPropertyDescriptor(a,c?e:d[e]);if(void 0!==t){if(void 0!==t.get||void 0!==t.set)return"accessor";if(r&&c&&!t.enumerable)return"irregular";r&&(i+=c?0:d[e].length,"string"==typeof t.value&&(i+=t.value.length)),"object"==typeof t.value&&null!==t.value&&s.push(t.value,l+1)}else if(r)return"irregular"}if(r&&c&&Reflect.ownKeys(a).length!==D+1)return"irregular"}if(r&&"object"==typeof e&&null!==e)if(i<=4e6&&"function"==typeof structuredClone){if(function(e){if("function"!=typeof structuredClone)return!1;let t;try{t=structuredClone(e)}catch(e){return!0}let r=new Set,n=[t];for(;n.length>0;){let e=n.pop();if("object"!=typeof e||null===e||r.has(e))continue;r.add(e);let t=Object.getPrototypeOf(e);if(t!==Date.prototype){if(t!==Object.prototype&&t!==Array.prototype)return!0;for(let t of Object.keys(e))n.push(e[t])}}return!1}(e))return"irregular"}else for(let e=0;e<u.length;e++)if(Zl(u[e]))return"irregular";return null}catch(e){return"unreadable"}}function zl(e,t){try{if(void 0!==t&&"object"==typeof t&&null!==t&&o.types.isProxy(t))return`invalid find of ${e}, ${hl.irregular}`;if(void 0!==t&&!Tl(t))return`invalid find of ${e}, need an object`;let r=jl(t,64,!0);return null!==r?`invalid find of ${e}, ${hl[r]}`:null}catch(t){return`invalid find of ${e}, ${hl.unreadable}`}}function Gl(e,t){let r=new Map,n=(e,t)=>{r.has(e)||r.set(e,[]),r.get(e).push({k:t})};if(Array.isArray(t))for(let e=0;e<t.length;e++)try{let r=Object.getOwnPropertyDescriptor(t,e);if(void 0===r)continue;if(void 0!==r.get||void 0!==r.set){n("accessor",e);continue}let s=jl(r.value);null!==s&&n(s,e)}catch(t){n("unreadable",e)}else{let e=jl(t);null!==e&&n(e,0)}return Ot([...r],([t,r])=>Il(`${e}, ${hl[t]}`,r))}function Wl(e){let t=!hr(e),r=Ot(t?[e]:e,e=>$t(e)&&pl(e.id)?{...e,id:fl(e.id)}:e);return t?r[0]:r}function Kl(e){return"obj"!==Sl(e)?e:Ll(e,(e,t)=>{return"id"===t?"obj"!==Sl(r=e)?fl(r):Ll(r,(e,t)=>["$eq","$ne","$gt","$gte","$lt","$lte","$in","$nin"].indexOf(t)>=0?"arr"===Sl(e)?Ot(e,fl):fl(e):e):["$and","$or"].indexOf(t)>=0&&"arr"===Sl(e)?Ot(e,Kl):e;var r})}function Fl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{$t(e)||t.push({k:r})}),t}function kl(e){let t=fl(ye(e,"id"));return er(t)?t:null}function Vl(e){let t=[];return _r(hr(e)?e:[e],(e,r)=>{let n=ye(e,"id");er(n)&&yl(n)!==n&&t.push({k:r,id:n})}),t}function Hl(e,t){return Il(`${e}, id contains HTML markup`,Ot(t,e=>({k:e.k})))}function Ul(e,t,r,n,s="save"){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");let i=e[t].keys,u=!1;hr(n)||(u=!0,n=[n]);let o=_u();if(s.indexOf("insert")>=0&&(i.indexOf("userId")>=0&&_r(n,(e,t)=>{n[t].userId=r}),i.indexOf("timeCreate")>=0&&_r(n,(e,t)=>{n[t].timeCreate=o}),i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),(s.indexOf("insert")>=0||s.indexOf("save")>=0)&&(i.indexOf("userIdUpdate")>=0&&_r(n,(e,t)=>{n[t].userIdUpdate=r}),i.indexOf("timeUpdate")>=0&&_r(n,(e,t)=>{n[t].timeUpdate=o})),n=Ot(n,e=>Ll(e,e=>yl(e))),ml(e[t],i)){(u?_t(n[0]):Er(n))&&_r(n,e=>{er(e.id)||(e.id=uo())})}return n=u?n[0]:n}async function Bl(e,t,r,n,s,i){try{return await async function(e,t,r,n,s,i){let u,o=null;if(!_t(t))return Promise.reject("invalid woItems");let l=Cl(t,n);if(null===l)return Promise.reject(`can not find table[${"string"==typeof n?n:""}] in ORM`);let a=function(e,t){let r=Cl(e,t),n=ye(r,"keys",null);return!!hr(n)&&ml(r,n)}(e,n);if("select"===s){let e=zl("select",i);if(null!==e)return Xl(`${n}.select invalid find`,i),Promise.reject(e);if(u=await l.select(a?Kl(i):i).catch(e=>{console.log(`${n}.select catch`,e),o="failed to select data"}),er(o))return Promise.reject(o)}else if("insert"===s||"save"===s){let t=i,c="insert"===s?"failed to insert data":"failed to save data",d=Fl(i);if(ys(d)>0)return console.log(`${n}.${s} data is not an object`,d),Promise.reject(Il(`${c}, not an object`,d));let D=Gl(c,i);if(ys(D)>0)return console.log(`${n}.${s} data has unsupported key`,D),Promise.reject(Jt(D,"; "));a&&(i=Wl(i));let M=Vl(i);if(ys(M)>0)return console.log(`${n}.${s} id changed by clearXSS`,M),Promise.reject(Hl(c,M));try{i=Ul(e,n,r,i,s)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if("insert"===s?u=await l.insert(i).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}):"save"===s&&(u=await l.save(i).catch(e=>{console.log(`${n}.save catch`,e),o="failed to save data"})),er(o))return Promise.reject(o);if("save"===s){let e=gl(u,i);if(ys(e)>0)return console.log(`${n}.save fail`,e),Promise.reject(Il("failed to save data",gl(u,t)))}u=hr(i)?Ot(i,e=>({id:e.id})):{id:i.id}}else if("del"===s){if(a&&(i=Wl(i)),u=await l.del(i).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"}),!er(o)){let e=gl(u,i);ys(e)>0&&(console.log(`${n}.del fail`,e),o=Il("failed to delete data",e))}}else if("delAll"===s){let e=zl("delAll",i);if(null!==e)return Xl(`${n}.delAll invalid find`,i),Promise.reject(e);u=await l.delAll(a?Kl(i):i).catch(e=>{console.log(`${n}.delAll catch`,e),o="failed to delete data"})}else if("mix"===s){if(!_t(i))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");for(let e of["add","del","diff"]){let t=Object.getOwnPropertyDescriptor(i,e);if(void 0!==t&&(void 0!==t.get||void 0!==t.set))return Promise.reject(`invalid input of mix, ${hl.accessor}`)}i={add:i.add,del:i.del,diff:i.diff};for(let e of["add","del","diff"])if(void 0!==i[e]&&!hr(i[e]))return Promise.reject("invalid input of mix, need the result object of ltdtDiffByKey");let t=[];for(let[e,r]of[["add","failed to insert data"],["diff","failed to update data"]]){let s=Fl(ye(i,e,[]));ys(s)>0&&(console.log(`${n}.mix ${e} data is not an object`,s),t.push(Il(`${r}, not an object`,s)))}if(ys(t)>0)return Promise.reject(Jt(t,"; "));let s=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]])s.push(...Gl(t,ye(i,e,[])));if(ys(s)>0)return console.log(`${n}.mix data has unsupported key`,s),Promise.reject(Jt(s,"; "));if(a){i={...i};for(let e of["add","del","diff"])hr(i[e])&&(i[e]=Wl(i[e]))}let c=[];for(let[e,t]of[["add","failed to insert data"],["diff","failed to update data"]]){let r=Vl(ye(i,e,[]));ys(r)>0&&(console.log(`${n}.mix ${e} id changed by clearXSS`,r),c.push(Hl(t,r)))}if(ys(c)>0)return Promise.reject(Jt(c,"; "));let d,D=function(e){let t=[];for(let[r,n]of[["add","del"],["del","diff"]]){let s=new Map;_r(ye(e,r,[]),(e,t)=>{let r=kl(e);null!==r&&s.set(r,[...s.get(r)||[],t])});let i=[],u=[];if(_r(ye(e,n,[]),(e,t)=>{let r=kl(e);null!==r&&s.has(r)&&(i=[...i,...s.get(r)],u.push(t))}),ys(u)>0){let e=[...Ot([...new Set(i)].sort((e,t)=>e-t),e=>({ref:`${r}[${e}]`})),...Ot(u,e=>({ref:`${n}[${e}]`}))];t.push(Il(`invalid input of mix, same id in ${r} and ${n}`,e))}}return t}(i);if(ys(D)>0)return console.log(`${n}.mix same id across steps`,D),Promise.reject(Jt(D,"; "));u=[];let M=[],w=ye(i,"add",[]);if(ys(w)>0){try{w=Ul(e,n,r,w,"insert+save")}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}if(await l.insert(w).catch(e=>{console.log(`${n}.insert catch`,e),o="failed to insert data"}),er(o))return Promise.reject(o);d=Ot(w,e=>({id:e.id})),u=[...u,...d]}let y=ye(i,"del",[]);if(ys(y)>0){let e=await l.del(y).catch(e=>{console.log(`${n}.del catch`,e),o="failed to delete data"});if(er(o))return Promise.reject(o);let t=gl(e,y);ys(t)>0&&(console.log(`${n}.del fail`,t),M.push(Il("failed to delete data",t))),d=Ot(y,e=>({id:e.id})),u=[...u,...d]}let g=ye(i,"diff",[]);if(ys(g)>0){let t=g;try{g=Ul(e,n,r,g)}catch(e){return console.log(`${n}.adjustData catch`,e.toString()),o="failed to adjust data",Promise.reject(o)}let s=await l.save(g).catch(e=>{console.log(`${n}.save catch`,e),o="failed to update data"});if(er(o))return Promise.reject(o);let i=gl(s,g);ys(i)>0&&(console.log(`${n}.save fail`,i),M.push(Il("failed to update data",gl(s,t)))),d=Ot(g,e=>({id:e.id})),u=[...u,...d]}if(ys(M)>0)return Promise.reject(Jt(M,"; "))}else o=`invalid mode: ${s}`;if(er(o))return Promise.reject(o);return u}(e,t,r,n,s,i)}catch(e){return"string"==typeof e?Promise.reject(e):(vl(`${"string"==typeof n?n:""}.${"string"==typeof s?s:""} mapOrm catch`,e),Promise.reject("failed to process input"))}}function Ql(e,t){return async(r,n,s,i)=>Bl(e,t,r,n,s,i)}function Rl(e,t,r,n=!1){if(!Gr(t)){let s=`${r} needs a function, but got ${typeof t}`;throw n&&e.push(()=>Promise.reject(s)),new Error(s)}setTimeout(()=>{e.push(t)},1)}function Ol(e,t={}){if(Qu(t),!Gr(e))throw new Error("invalid mapOrm");let r={funChecks:[],funPreProcessing:[],funPostProcessing:[],mapOrm:e};return{addFunCheck:e=>{Rl(r.funChecks,e,"addFunCheck",!0)},addFunPreProcessing:e=>{Rl(r.funPreProcessing,e,"addFunPreProcessing")},addFunPostProcessing:e=>{Rl(r.funPostProcessing,e,"addFunPostProcessing")},procOrm:async(e,t,n,s)=>async function(e,t,r,n,s){await Bu(e.funChecks,e=>e({woName:r,userId:t,mode:n,input:s}));for(let i of[...e.funPreProcessing]){let e=await i({woName:r,userId:t,mode:n,input:s});if(!_t(e)||void 0===e.input)return Promise.reject("invalid return of pre-processing, need an object with input");s=e.input}let i=await e.mapOrm(t,r,n,s);for(let u of[...e.funPostProcessing])i=await u({woName:r,userId:t,mode:n,input:s,output:i});return i}(r,e,t,n,s)}}function Pl(e,t,r,n,s={}){Qu(s);let i=function(e,t,r,n){if(!_t(e))throw console.log("ds",e),new Error("invalid ds");if(!Gr(t))throw console.log("WOrm",t),new Error("invalid WOrm");if(!er(r))throw console.log("url",r),new Error("invalid url");if(!er(n))throw console.log("db",n),new Error("invalid db");let s={};return _r(at(e),e=>{let i=new t({url:r,db:n,cl:e});Object.defineProperty(s,e,{value:i,enumerable:!0,writable:!0,configurable:!0})}),s}(e,t,r,n),u=Ol(Ql(e,i),s);return{...Ru,woItems:i,closeAll:async()=>{await Bu(i,async e=>{e&&Gr(e.close)&&await e.close()})},...u}}function Jl(e,t){if(!$t(e))return{};if(!Er(t))return{};let r={};return _r(t,function(t){dn(e,t)&&(r[t]=ye(e,t))}),r}let $l="grups",_l={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},cpemis:{name:"權限清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ql=(e={})=>{let t=qr(e,at(_l));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ea="pemis",ta={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"名稱",type:"STRING"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},crules:{name:"管控對象清單",type:"TEXT"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ra=(e={})=>{let t=qr(e,at(ta));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},na="targets",sa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},description:{name:"說明",type:"TEXT"},from:{name:"來源",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"}},ia=(e={})=>{let t=qr(e,at(sa));return t.id=`${uo()}`,t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t},ua="users",oa={id:{pk:!0,name:"主鍵",type:"STRING"},order:{name:"順序",type:"INTEGER"},name:{name:"姓名",type:"STRING"},email:{name:"電子郵件",type:"STRING"},description:{name:"描述",type:"TEXT"},from:{name:"來源",type:"STRING"},cgrups:{name:"權限群組清單",type:"TEXT"},isAdmin:{name:"是否為系統管理員",type:"STRING"},userId:{name:"創建使用者主鍵",type:"STRING"},timeCreate:{name:"創建時間",type:"STRING"},userIdUpdate:{name:"最新變更使用者主鍵",type:"STRING"},timeUpdate:{name:"更新時間",type:"STRING"},isActive:{name:"是否有效",type:"STRING"}},la=(e={})=>{let t=qr(e,at(oa));return t.id=`${uo()}`,t.isAdmin="n",t.userIdUpdate=t.userId,t.timeCreate=_u(),t.userIdUpdate=t.userId,t.timeUpdate=t.timeCreate,t.isActive="y",t};function aa(e,t={}){let r=ye(t,"useCreateStorage");Dr(r)||(r=!1);let{keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,parser:o,funNew:l,funTest:a,ext:c}=e;if(!er(n))throw new Error(`invalid keyTable[${n}]`);if(er(s)||(s=n),er(i)||(i=n),!_t(u))throw new Error("invalid settings");_t(c)||(c=null),_t(o)||(o=null),Gr(l)||(l=null);let d=null;Gr(a)&&(d=async e=>{if(!_t(e))throw new Error("invalid wo");if(!dn(e,n))throw console.log(e),new Error(`keyTable[${n}] is not in wo`);let t=[];try{t=a(),Wr(t)&&(t=await t)}catch(e){throw console.log(`keyTable[${n}] funTest catch`,e),new Error(e)}if(0===ys(t))return;r&&await e[n].createStorage();let s=gl(await e[n].save(t),t);if(ys(s)>0)throw new Error(`failed to write test data into table[${n}]: ${JSON.stringify(s)}`);return t});let D={},M={};return _r(at(u),e=>{let t=ye(u,`${e}.name`,"");er(t)&&(D[e]=t);let r=ye(u,`${e}.type`,"");er(r)&&(M[e]=r)}),{...e,keyTable:n,tableNameCht:s,tableNameEng:i,settings:u,keys:at(u),kpType:M,kpHead:D,parser:o,funNew:l,funTest:a,funTestAndSave:d,ext:c}}let ca={grups:{keyTable:$l,tableNameCht:"權限群組設定",tableNameEng:"Permission groups",settings:_l,funNew:ql,funTest:()=>{let e=[["權限群組M1","\n {\n '權限P1': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M2","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "],["權限群組M3","\n {\n '權限P2': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P3': {\n 'mode': 'AND',\n 'isActive': 'y',\n },\n }\n "],["權限群組M4","\n {\n '權限P3': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n '權限P4': {\n 'mode': 'OR',\n 'isActive': 'y',\n },\n }\n "]];return e=Ot(e,([e,t],r)=>{let n=ql({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,cpemis:t});return n.id=`id-for-${e}`,n=Jl(n,at(_l)),n}),console.log(`已產生: ${$l} 測試資料`,e),e}},pemis:{keyTable:ea,tableNameCht:"權限設定",tableNameEng:"Permissions",settings:ta,funNew:ra,funTest:()=>{let e=[["權限P1","{ \"專案A/頁A/區塊A\": 'y', \"專案A/頁B/區塊A\": 'n', \"專案A/頁C\": 'n' }"],["權限P2","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'y', \"專案B/頁A/區塊B\": 'y' }"],["權限P3","{ \"專案A/頁C\": 'y', \"專案B/頁A/區塊A\": 'n', \"專案B/頁A/區塊B\": 'y', \"專案B/頁A/區塊C\": 'y' }"],["權限P4","{ \"專案B/頁B/區塊A/待辦事項清單\": 'y', \"專案B/頁B/區塊B/顯示後台按鈕\": 'n' }"]];return e=Ot(e,([e,t],r)=>{let n=ra({userId:"id-for-admin",order:r,name:e,description:`${e}的說明`,crules:t});return n.id=`id-for-${e}`,n=Jl(n,at(ta)),n}),console.log(`已產生: ${ea} 測試資料`,e),e}},targets:{keyTable:na,tableNameCht:"管控對象",tableNameEng:"Targets",settings:sa,funNew:ia,funTest:()=>{let e=["專案A/頁A/區塊A","專案A/頁A/區塊A/執行按鈕","專案A/頁A/區塊A/分析按鈕","專案A/頁B/區塊A","專案A/頁B/區塊A/執行按鈕","專案A/頁B/區塊A/分析按鈕","專案A/頁B/區塊B/展開按鈕","專案A/頁B/區塊B/下載按鈕","專案A/頁C","專案B/頁A/區塊A","專案B/頁A/區塊A/顯示綜合報表","專案B/頁A/區塊A/顯示當前數據","專案B/頁A/區塊B","專案B/頁A/區塊B/下載報表按鈕","專案B/頁A/區塊B/下載數據按鈕","專案B/頁A/區塊C","專案B/頁B/區塊A","專案B/頁B/區塊A/待辦事項清單","專案B/頁B/區塊A/相關資源清單","專案B/頁B/區塊B","專案B/頁B/區塊B/顯示後台按鈕","專案B/頁B/區塊B/轉跳主站按鈕"];return e=Ot(e,(e,t)=>{let r=ia({userId:"id-for-admin",order:t,description:`${e}的說明`});return r.id=e,r=Jl(r,at(sa)),r}),console.log(`已產生: ${na} 測試資料`,e),e}},users:{keyTable:ua,tableNameCht:"使用者",tableNameEng:"Users",settings:oa,funNew:la,funTest:()=>{let e=[["peter","teamA","\n { \n '權限群組M1': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["mary","teamA","\n { \n '權限群組M2': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["john","teamA","\n { \n '權限群組M3': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","n"],["admin","","\n { \n '權限群組M4': {\n 'mode': 'OR',\n 'isActive': 'y',\n }\n }\n ","y"]];return e=Ot(e,([e,t,r,n],s)=>{let i=la({userId:"id-for-admin",order:s,name:e,email:`${e}@example.com`,from:t,cgrups:r,isAdmin:n});return i.id=`id-for-${e}`,i.isAdmin=n,i=Jl(i,at(oa)),i}),console.log(`已產生: ${ua} 測試資料`,e),e}}},da={};for(let e in ca)da[e]=aa(ca[e],{useCreateStorage:!1});var Da={exports:{}};!function(e){e.exports=function(){function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(e){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)}),r=e(function(e){var t=e.exports={version:"2.6.5"};"number"==typeof __e&&(__e=t)});r.version;var n=function(e){return"object"==typeof e?null!==e:"function"==typeof e},s=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e},i=function(e){try{return!!e()}catch(e){return!0}},u=!i(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),o=t.document,l=n(o)&&n(o.createElement),a=function(e){return l?o.createElement(e):{}},c=!u&&!i(function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}),d=function(e,t){if(!n(e))return e;var r,s;if(t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;if("function"==typeof(r=e.valueOf)&&!n(s=r.call(e)))return s;if(!t&&"function"==typeof(r=e.toString)&&!n(s=r.call(e)))return s;throw TypeError("Can't convert object to primitive value")},D=Object.defineProperty,M={f:u?Object.defineProperty:function(e,t,r){if(s(e),t=d(t,!0),s(r),c)try{return D(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},w=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},y=u?function(e,t,r){return M.f(e,t,w(1,r))}:function(e,t,r){return e[t]=r,e},g={}.hasOwnProperty,I=function(e,t){return g.call(e,t)},m=0,C=Math.random(),p=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++m+C).toString(36))},f=e(function(e){var n="__core-js_shared__",s=t[n]||(t[n]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})}),L=f("native-function-to-string",Function.toString),h=e(function(e){var n=p("src"),s="toString",i=(""+L).split(s);r.inspectSource=function(e){return L.call(e)},(e.exports=function(e,r,s,u){var o="function"==typeof s;o&&(I(s,"name")||y(s,"name",r)),e[r]!==s&&(o&&(I(s,n)||y(s,n,e[r]?""+e[r]:i.join(String(r)))),e===t?e[r]=s:u?e[r]?e[r]=s:y(e,r,s):(delete e[r],y(e,r,s)))})(Function.prototype,s,function(){return"function"==typeof this&&this[n]||L.call(this)})}),b=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e},N=function(e,t,r){if(b(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,s){return e.call(t,r,n,s)}}return function(){return e.apply(t,arguments)}},A="prototype",x=function(e,n,s){var i,u,o,l,a=e&x.F,c=e&x.G,d=e&x.S,D=e&x.P,M=e&x.B,w=c?t:d?t[n]||(t[n]={}):(t[n]||{})[A],g=c?r:r[n]||(r[n]={}),I=g[A]||(g[A]={});for(i in c&&(s=n),s)o=((u=!a&&w&&void 0!==w[i])?w:s)[i],l=M&&u?N(o,t):D&&"function"==typeof o?N(Function.call,o):o,w&&h(w,i,o,e&x.U),g[i]!=o&&y(g,i,l),D&&I[i]!=o&&(I[i]=o)};t.core=r,x.F=1,x.G=2,x.S=4,x.P=8,x.B=16,x.W=32,x.U=64,x.R=128;var E,T=x,S=Math.ceil,Z=Math.floor,v=function(e){return isNaN(e=+e)?0:(e>0?Z:S)(e)},Y=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},X=(E=!1,function(e,t){var r,n,s=String(Y(e)),i=v(t),u=s.length;return i<0||i>=u?E?"":void 0:(r=s.charCodeAt(i))<55296||r>56319||i+1===u||(n=s.charCodeAt(i+1))<56320||n>57343?E?s.charAt(i):r:E?s.slice(i,i+2):n-56320+(r-55296<<10)+65536});T(T.P,"String",{codePointAt:function(e){return X(this,e)}}),r.String.codePointAt;var j=Math.max,z=Math.min,G=function(e,t){return(e=v(e))<0?j(e+t,0):z(e,t)},W=String.fromCharCode,K=String.fromCodePoint;T(T.S+T.F*(!!K&&1!=K.length),"String",{fromCodePoint:function(e){for(var t,r=arguments,n=[],s=arguments.length,i=0;s>i;){if(t=+r[i++],G(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?W(t):W(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}}),r.String.fromCodePoint;var F,k,V,H,U,B,Q,R,O,P,J,$,_,q,ee={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},te={isSpaceSeparator:function(e){return"string"==typeof e&&ee.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||ee.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||ee.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}},re=function(e,t){F=String(e),k="start",V=[],H=0,U=1,B=0,Q=void 0,R=void 0,O=void 0;do{Q=se(),Me[k]()}while("eof"!==Q.type);return"function"==typeof t?ne({"":O},"",t):O};function ne(e,t,r){var n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(var s=0;s<n.length;s++){var i=String(s),u=ne(n,i,r);void 0===u?delete n[i]:Object.defineProperty(n,i,{value:u,writable:!0,enumerable:!0,configurable:!0})}else for(var o in n){var l=ne(n,o,r);void 0===l?delete n[o]:Object.defineProperty(n,o,{value:l,writable:!0,enumerable:!0,configurable:!0})}return r.call(e,t,n)}function se(){for(P="default",J="",$=!1,_=1;;){q=ie();var e=oe[P]();if(e)return e}}function ie(){if(F[H])return String.fromCodePoint(F.codePointAt(H))}function ue(){var e=ie();return"\n"===e?(U++,B=0):e?B+=e.length:B++,e&&(H+=e.length),e}var oe={default:function(){switch(q){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void ue();case"/":return ue(),void(P="comment");case void 0:return ue(),le("eof")}if(!te.isSpaceSeparator(q))return oe[k]();ue()},comment:function(){switch(q){case"*":return ue(),void(P="multiLineComment");case"/":return ue(),void(P="singleLineComment")}throw ge(ue())},multiLineComment:function(){switch(q){case"*":return ue(),void(P="multiLineCommentAsterisk");case void 0:throw ge(ue())}ue()},multiLineCommentAsterisk:function(){switch(q){case"*":return void ue();case"/":return ue(),void(P="default");case void 0:throw ge(ue())}ue(),P="multiLineComment"},singleLineComment:function(){switch(q){case"\n":case"\r":case"\u2028":case"\u2029":return ue(),void(P="default");case void 0:return ue(),le("eof")}ue()},value:function(){switch(q){case"{":case"[":return le("punctuator",ue());case"n":return ue(),ae("ull"),le("null",null);case"t":return ue(),ae("rue"),le("boolean",!0);case"f":return ue(),ae("alse"),le("boolean",!1);case"-":case"+":return"-"===ue()&&(_=-1),void(P="sign");case".":return J=ue(),void(P="decimalPointLeading");case"0":return J=ue(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=ue(),void(P="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",1/0);case"N":return ue(),ae("aN"),le("numeric",NaN);case'"':case"'":return $='"'===ue(),J="",void(P="string")}throw ge(ue())},identifierNameStartEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":break;default:if(!te.isIdStartChar(e))throw me()}J+=e,P="identifierName"},identifierName:function(){switch(q){case"$":case"_":case"":case"":return void(J+=ue());case"\\":return ue(),void(P="identifierNameEscape")}if(!te.isIdContinueChar(q))return le("identifier",J);J+=ue()},identifierNameEscape:function(){if("u"!==q)throw ge(ue());ue();var e=De();switch(e){case"$":case"_":case"":case"":break;default:if(!te.isIdContinueChar(e))throw me()}J+=e,P="identifierName"},sign:function(){switch(q){case".":return J=ue(),void(P="decimalPointLeading");case"0":return J=ue(),void(P="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return J=ue(),void(P="decimalInteger");case"I":return ue(),ae("nfinity"),le("numeric",_*(1/0));case"N":return ue(),ae("aN"),le("numeric",NaN)}throw ge(ue())},zero:function(){switch(q){case".":return J+=ue(),void(P="decimalPoint");case"e":case"E":return J+=ue(),void(P="decimalExponent");case"x":case"X":return J+=ue(),void(P="hexadecimal")}return le("numeric",0*_)},decimalInteger:function(){switch(q){case".":return J+=ue(),void(P="decimalPoint");case"e":case"E":return J+=ue(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},decimalPointLeading:function(){if(te.isDigit(q))return J+=ue(),void(P="decimalFraction");throw ge(ue())},decimalPoint:function(){switch(q){case"e":case"E":return J+=ue(),void(P="decimalExponent")}return te.isDigit(q)?(J+=ue(),void(P="decimalFraction")):le("numeric",_*Number(J))},decimalFraction:function(){switch(q){case"e":case"E":return J+=ue(),void(P="decimalExponent")}if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},decimalExponent:function(){switch(q){case"+":case"-":return J+=ue(),void(P="decimalExponentSign")}if(te.isDigit(q))return J+=ue(),void(P="decimalExponentInteger");throw ge(ue())},decimalExponentSign:function(){if(te.isDigit(q))return J+=ue(),void(P="decimalExponentInteger");throw ge(ue())},decimalExponentInteger:function(){if(!te.isDigit(q))return le("numeric",_*Number(J));J+=ue()},hexadecimal:function(){if(te.isHexDigit(q))return J+=ue(),void(P="hexadecimalInteger");throw ge(ue())},hexadecimalInteger:function(){if(!te.isHexDigit(q))return le("numeric",_*Number(J));J+=ue()},string:function(){switch(q){case"\\":return ue(),void(J+=ce());case'"':return $?(ue(),le("string",J)):void(J+=ue());case"'":return $?void(J+=ue()):(ue(),le("string",J));case"\n":case"\r":throw ge(ue());case"\u2028":case"\u2029":Ce(q);break;case void 0:throw ge(ue())}J+=ue()},start:function(){switch(q){case"{":case"[":return le("punctuator",ue())}P="value"},beforePropertyName:function(){switch(q){case"$":case"_":return J=ue(),void(P="identifierName");case"\\":return ue(),void(P="identifierNameStartEscape");case"}":return le("punctuator",ue());case'"':case"'":return $='"'===ue(),void(P="string")}if(te.isIdStartChar(q))return J+=ue(),void(P="identifierName");throw ge(ue())},afterPropertyName:function(){if(":"===q)return le("punctuator",ue());throw ge(ue())},beforePropertyValue:function(){P="value"},afterPropertyValue:function(){switch(q){case",":case"}":return le("punctuator",ue())}throw ge(ue())},beforeArrayValue:function(){if("]"===q)return le("punctuator",ue());P="value"},afterArrayValue:function(){switch(q){case",":case"]":return le("punctuator",ue())}throw ge(ue())},end:function(){throw ge(ue())}};function le(e,t){return{type:e,value:t,line:U,column:B}}function ae(e){for(var t=0,r=e;t<r.length;t+=1){var n=r[t];if(ie()!==n)throw ge(ue());ue()}}function ce(){switch(ie()){case"b":return ue(),"\b";case"f":return ue(),"\f";case"n":return ue(),"\n";case"r":return ue(),"\r";case"t":return ue(),"\t";case"v":return ue(),"\v";case"0":if(ue(),te.isDigit(ie()))throw ge(ue());return"\0";case"x":return ue(),de();case"u":return ue(),De();case"\n":case"\u2028":case"\u2029":return ue(),"";case"\r":return ue(),"\n"===ie()&&ue(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw ge(ue())}return ue()}function de(){var e="",t=ie();if(!te.isHexDigit(t))throw ge(ue());if(e+=ue(),t=ie(),!te.isHexDigit(t))throw ge(ue());return e+=ue(),String.fromCodePoint(parseInt(e,16))}function De(){for(var e="",t=4;t-- >0;){var r=ie();if(!te.isHexDigit(r))throw ge(ue());e+=ue()}return String.fromCodePoint(parseInt(e,16))}var Me={start:function(){if("eof"===Q.type)throw Ie();we()},beforePropertyName:function(){switch(Q.type){case"identifier":case"string":return R=Q.value,void(k="afterPropertyName");case"punctuator":return void ye();case"eof":throw Ie()}},afterPropertyName:function(){if("eof"===Q.type)throw Ie();k="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Q.type)throw Ie();we()},beforeArrayValue:function(){if("eof"===Q.type)throw Ie();"punctuator"!==Q.type||"]"!==Q.value?we():ye()},afterPropertyValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforePropertyName");case"}":ye()}},afterArrayValue:function(){if("eof"===Q.type)throw Ie();switch(Q.value){case",":return void(k="beforeArrayValue");case"]":ye()}},end:function(){}};function we(){var e;switch(Q.type){case"punctuator":switch(Q.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Q.value}if(void 0===O)O=e;else{var t=V[V.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,R,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)V.push(e),k=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{var r=V[V.length-1];k=null==r?"end":Array.isArray(r)?"afterArrayValue":"afterPropertyValue"}}function ye(){V.pop();var e=V[V.length-1];k=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function ge(e){return fe(void 0===e?"JSON5: invalid end of input at "+U+":"+B:"JSON5: invalid character '"+pe(e)+"' at "+U+":"+B)}function Ie(){return fe("JSON5: invalid end of input at "+U+":"+B)}function me(){return fe("JSON5: invalid identifier character at "+U+":"+(B-=5))}function Ce(e){console.warn("JSON5: '"+pe(e)+"' in strings is not valid ECMAScript; consider escaping")}function pe(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){var r=e.charCodeAt(0).toString(16);return"\\x"+("00"+r).substring(r.length)}return e}function fe(e){var t=new SyntaxError(e);return t.lineNumber=U,t.columnNumber=B,t}var Le=function(e,t,r){var n,s,i,u=[],o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(r=t.space,i=t.quote,t=t.replacer),"function"==typeof t)s=t;else if(Array.isArray(t)){n=[];for(var a=0,c=t;a<c.length;a+=1){var d=c[a],D=void 0;"string"==typeof d?D=d:("number"==typeof d||d instanceof String||d instanceof Number)&&(D=String(d)),void 0!==D&&n.indexOf(D)<0&&n.push(D)}}return r instanceof Number?r=Number(r):r instanceof String&&(r=String(r)),"number"==typeof r?r>0&&(r=Math.min(10,Math.floor(r)),l=" ".substr(0,r)):"string"==typeof r&&(l=r.substr(0,10)),M("",{"":e});function M(e,t){var r=t[e];switch(null!=r&&("function"==typeof r.toJSON5?r=r.toJSON5(e):"function"==typeof r.toJSON&&(r=r.toJSON(e))),s&&(r=s.call(t,e,r)),r instanceof Number?r=Number(r):r instanceof String?r=String(r):r instanceof Boolean&&(r=r.valueOf()),r){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof r?w(r):"number"==typeof r?String(r):"object"==typeof r?Array.isArray(r)?I(r):y(r):void 0}function w(e){for(var t={"'":.1,'"':.2},r={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},n="",s=0;s<e.length;s++){var u=e[s];switch(u){case"'":case'"':t[u]++,n+=u;continue;case"\0":if(te.isDigit(e[s+1])){n+="\\x00";continue}}if(r[u])n+=r[u];else if(u<" "){var o=u.charCodeAt(0).toString(16);n+="\\x"+("00"+o).substring(o.length)}else n+=u}var l=i||Object.keys(t).reduce(function(e,r){return t[e]<t[r]?e:r});return l+(n=n.replace(new RegExp(l,"g"),r[l]))+l}function y(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,s,i=[],a=0,c=n||Object.keys(e);a<c.length;a+=1){var d=c[a],D=M(d,e);if(void 0!==D){var w=g(d)+":";""!==l&&(w+=" "),w+=D,i.push(w)}}if(0===i.length)r="{}";else if(""===l)r="{"+(s=i.join(","))+"}";else{var y=",\n"+o;s=i.join(y),r="{\n"+o+s+",\n"+t+"}"}return u.pop(),o=t,r}function g(e){if(0===e.length)return w(e);var t=String.fromCodePoint(e.codePointAt(0));if(!te.isIdStartChar(t))return w(e);for(var r=t.length;r<e.length;r++)if(!te.isIdContinueChar(String.fromCodePoint(e.codePointAt(r))))return w(e);return e}function I(e){if(u.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");u.push(e);var t=o;o+=l;for(var r,n=[],s=0;s<e.length;s++){var i=M(String(s),e);n.push(void 0!==i?i:"null")}if(0===n.length)r="[]";else if(""===l)r="["+n.join(",")+"]";else{var a=",\n"+o,c=n.join(a);r="[\n"+o+c+",\n"+t+"]"}return u.pop(),o=t,r}},he={parse:re,stringify:Le},be=he,Ne=be;return Ne}()}(Da);var Ma=nn(Da.exports);function wa(e,t){var r=[];return Qt(e,function(e,n,s){t(e,n,s)&&r.push(e)}),r}function ya(e,t){return(M(e)?Ee:wa)(e,Vt(t))}var ga=I?I.isConcatSpreadable:void 0;function Ia(e){return M(e)||We(e)||!!(ga&&e&&e[ga])}function ma(e,t,r,n,s){var i=-1,u=e.length;for(r||(r=Ia),s||(s=[]);++i<u;){var o=e[i];t>0&&r(o)?t>1?ma(o,t-1,r,n,s):Ae(s,o):n||(s[s.length]=o)}return s}function Ca(e,t){if(e!==t){var r=void 0!==e,n=null===e,s=e==e,i=A(e),u=void 0!==t,o=null===t,l=t==t,a=A(t);if(!o&&!a&&!i&&e>t||i&&u&&l&&!o&&!a||n&&u&&l||!r&&l||!s)return 1;if(!n&&!i&&!a&&e<t||a&&r&&s&&!n&&!i||o&&r&&s||!u&&s||!l)return-1}return 0}function pa(e,t,r){t=t.length?oe(t,function(e){return M(e)?function(t){return we(t,1===e.length?e[0]:e)}:e}):[Kt];var n=-1;return t=oe(t,Re(Vt)),function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}(Rt(e,function(e,r,s){return{criteria:oe(t,function(t){return t(e)}),index:++n,value:e}}),function(e,t){return function(e,t,r){for(var n=-1,s=e.criteria,i=t.criteria,u=s.length,o=r.length;++n<u;){var l=Ca(s[n],i[n]);if(l)return n>=o?l:l*("desc"==r[n]?-1:1)}return e.index-t.index}(e,t,r)})}var fa=Qi(function(e,t){if(null==e)return[];var r=t.length;return r>1&&Ri(e,t[0],t[1])?t=[]:r>2&&Ri(t[0],t[1],t[2])&&(t=[t[0]]),pa(e,ma(t,1),[])});function La(e,t){if(Array.isArray(e))for(let r=0,n=e.length;r<n&&!1!==t(e[r],r,e);r++);else if(null!==e&&"object"==typeof e){let r=Object.keys(e);for(let n=0;n<r.length;n++){let s=r[n];if(!1===t(e[s],s,e))break}}return e}function ha(e,t,r){return null!==e&&"object"==typeof e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:r}function ba(e,t,r,n){let s=e=>{let t=Object.create(null);try{t=Ma.parse(e)}catch(t){console.log("c",e),console.log(t)}let r=[];try{r=function(e){let t=[],r=Array.isArray(e);return La(e,(e,n)=>{let s={name:n};_t(e)?(s={...s,...e},r||(s.name=n)):s={...s,isActive:e},t.push(s)}),t}(t)}catch(r){console.log("c",e),console.log("kp",t),console.log(r)}return r},i=(e,t,r)=>{let n=[];return _r(e,e=>{let s=ye(e,r,"");_r(t,t=>{let i=ye(t,r,"");if(s===i)return n.push({...e,data:t}),!1})}),n},u=e=>{let t=[];if(_r(e,e=>{let r=ye(e,"mode","");if("OR"!==r&&"AND"!==r)return!0;let n=ye(e,"rules",[]),s=Object.create(null);_r(n,e=>{s[e.name]=e.isActive}),t.push({mode:r,kpRule:s})}),0===ys(t))return[];let r=ya(t,{mode:"OR"}),n=ya(t,{mode:"AND"}),s=null;ys(r)>0?s=ye(r,"0.kpRule"):ys(n)>0&&(s=ye(n,"0.kpRule")),_r(r,e=>{let t=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.create(null);return _r([e,t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]||"y"===e?r[t]="y":r[t]="n"})}),r})(s,t)}),_r(n,(e,t)=>{let r=ye(e,"kpRule",{});s=((e,t)=>{let r=Object.assign(Object.create(null),e);return _r([t],e=>{La(e,(e,t)=>{dn(r,t)||(r[t]="n"),"y"===r[t]&&"y"===e?r[t]="y":r[t]="n"})}),r})(s,r)});let i=[];return La(s,(e,t)=>{i.push({name:t,isActive:e})}),i},o=ye(e,"cgrups",""),l=s(o);l=i(l,t,"name"),l=ya(l,{isActive:"y"}),l=Ot(l,e=>{let t=ye(e,"data.cpemis",""),n=s(t);return n=ya(n,{isActive:"y"}),n=i(n,r,"name"),e.data._pemis=n,e}),l=Ot(l,e=>{let t=ye(e,"data._pemis",[]);return t=Ot(t,e=>{let t=ye(e,"data.crules",""),r=s(t);return e.data._rules=r,e}),e.data._pemis=t,e});let a=[];{let e=[];_r(l,t=>{let r=t.mode,n=t.data._pemis,s=[];_r(n,e=>{let t=e.mode,r=e.data._rules;s.push({mode:t,rules:r})});let i={mode:r,rules:u(s)};e.push(i)}),a=u(e)}{let e=Object.create(null);_r(a,t=>{e[t.name]=t.isActive});let t=[];_r(n,r=>{t.push({name:r.id,isActive:ha(e,r.id,"n")})}),a=t}return{grups:l,rules:a}}function Na(e,t){return Yt(e,t)}function Aa(e,t){function r(e){return hr(e)?e:[e]}if(xr(e))return!1;if(0===(e=r(e)).length)return!1;if(xr(e))return!1;if(0===(t=r(t)).length)return!1;for(let r=0;r<e.length;r++)for(let n=0;n<t.length;n++)if(Na(e[r],t[n]))return!0;return!1}let xa={csIng:{eng:"Connecting...",cht:"連線中..."},csLogin:{eng:"Logged in",cht:"已登入"},csLogout:{eng:"Logged out",cht:"已登出"},csErrConn:{eng:"Unable to connect",cht:"無法連線"},csErrLogin:{eng:"Login denied",cht:"拒絕登入"},aggridLanguage:{eng:"en",cht:"zh-tw"},systemMessage:{eng:"System message",cht:"系統確認訊息"},ok:{eng:"OK",cht:"確認"},no:{eng:"No",cht:"取消"},yes:{eng:"Yes",cht:"確定"},empty:{eng:"Empty",cht:"無"},waitingData:{eng:"Waiting data...",cht:"等待數據中..."},saveChanges:{eng:"Save changes",cht:"儲存變更"},id:{eng:"Id",cht:"主鍵"},from:{eng:"From",cht:"來源"},save:{eng:"Save",cht:"儲存"},close:{eng:"Close",cht:"關閉"},delete:{eng:"Delete",cht:"刪除"},screenFull:{eng:"Max size",cht:"最大化尺寸"},screenNormal:{eng:"Normal size",cht:"預設尺寸"},checkAllYes:{eng:"Check all",cht:"全選使用"},checkAllNo:{eng:"Uncheck all",cht:"全不選使用"},checkAllInv:{eng:"Reverse all",cht:"全反選使用"},operEnable:{eng:"Enable",cht:"是否使用"},operPemiMode:{eng:"Operator",cht:"合併權限模式"},operGrupMode:{eng:"Operator",cht:"合併權限群組模式"},processing:{eng:"Processing...",cht:"處理中請稍後..."},anUnexpectedErrorOccurred:{eng:"An unexpected error occurred, please contact the administrator",cht:"發生非預期錯誤,請洽管理員"},cannotConnectServer:{eng:"Cannot connect to server",cht:"無法連線至伺服器"},saveRowFieldInvalid:{eng:"Invalid field value in saved data",cht:"儲存資料的欄位值無效"},saveRowFieldDuplicate:{eng:"Duplicate field value in saved data",cht:"儲存資料的欄位值重複"},authLossyBlocked:{eng:"Not saved: the authorization settings for {names} contain entries the editor cannot write without changing access (the same name set to both OR and AND, or an order that cannot be kept). Nothing was changed. Please correct the source data first.",cht:"未儲存:{names} 的授權設定含有編輯器無法在不改變授權下寫出的項目(同一名稱同時以 OR 與 AND 設定,或順序無法保留)。資料未變更,請先修正資料來源。"},saveInProgress:{eng:"The previous save is still in progress. Please do not submit again.",cht:"上一次儲存仍在處理中,請勿重複送出"},saveNewRowExists:{eng:"The newly added data has already been saved. Please reload the page before making changes.",cht:"新增之資料已儲存過,請重新整理頁面後再操作"},saveTabItemsSuccess:{eng:"Saved successfully",cht:"儲存成功"},htmlMarkupNotAllowed:{eng:'The input contains HTML markup that is not allowed (such as "<" followed by a letter). Please remove it and try again.',cht:"輸入內容含有不允許的 HTML 標記(如「<」後接英文字母),請移除後再試一次。"},saveWriteFail:{eng:"Not all changes were written, and some may have taken effect. Please reload the page and check before making changes.",cht:"資料寫入未全部完成,部分變更可能已生效,請重新整理頁面確認後再操作"},cannotGetUserId:{eng:"Cannot get the user id",cht:"無法取得使用者 Id"},cannotGetUserEmail:{eng:"Cannot get the email of user",cht:"無法取得使用者 Email"},cannotGetUserName:{eng:"Cannot get the name of user",cht:"無法取得使用者名稱"},cannotGetUserRole:{eng:"Cannot get the role of user",cht:"無法取得使用者角色"},cannotFindUserFromToken:{eng:"Cannot identify the user from token",cht:"無法由 token 識別使用者"},cannotGetUserProp:{eng:"Cannot get the property of user",cht:"無法取得使用者對應屬性"},cannotGetUserFromPerm:{eng:"Cannot find the user in permission system",cht:"無法於權限系統取得使用者"},userNoPermission:{eng:"User does not have permission",cht:"使用者權限不足"},invalidPayload:{eng:"Invalid payload in request",cht:"請求內容無效"},invalidFromInPayload:{eng:"Invalid from in payload",cht:"請求來源欄位無效"},invalidRowsInPayload:{eng:"Invalid rows in payload",cht:"請求資料列無效"},invalidFrom:{eng:"Invalid from",cht:"來源欄位無效"},invalidRows:{eng:"Invalid data format.",cht:"資料格式錯誤。"},cannotGetUserRules:{eng:"Cannot get rules of user",cht:"無法取得使用者權限規則"},tokenNoPermission:{eng:"Token does not have permission",cht:"權限不足"},userIdNoPermrules:{eng:"The user id does not have permission rules",cht:"此使用者沒有權限規則"},invalidKeyTable:{eng:"Invalid key table",cht:"資料表名稱無效"},cannotFindUserId:{eng:"Cannot find the user id",cht:"無法找到使用者 Id"},username:{eng:"Username",cht:"使用者姓名"},email:{eng:"Email",cht:"電子郵件"},name:{eng:"Name",cht:"名稱"},description:{eng:"Description",cht:"說明"},modeEdit:{eng:"Edit mode",cht:"編輯模式"},showTabCols:{eng:"Show columns",cht:"顯示欄位"},belongUsers:{eng:"Use users",cht:"管控所屬使用者"},belongGrups:{eng:"Use groups",cht:"管控所屬權限群組"},belongGrupsNames:{eng:"Use permission groups",cht:"所屬權限群組名稱"},belongPemisNames:{eng:"Use permissions",cht:"所屬權限名稱"},chipsShowAll:{eng:"Show all",cht:"展開全部"},chipsPopupTitle:{eng:"{title} ({n} in total)",cht:"{title}:共 {n} 項"},isAdmin:{eng:"Administrator",cht:"是否為系統管理員"},isActive:{eng:"Active",cht:"是否有效"},errInNames:{eng:"Name errors",cht:"名稱出現錯誤待修復"},errInIds:{eng:"ID errors",cht:"ID 出現錯誤待修復"},errInEmails:{eng:"Email errors",cht:"Email出現錯誤待修復"},menuTreeShow:{eng:"Show menu",cht:"顯示選單"},menuTreeHide:{eng:"Hide menu",cht:"隱藏選單"},menuUser:{eng:"User menu",cht:"使用者選單"},language:{eng:"Language",cht:"語系"},mmTargets:{eng:"Targets",cht:"管理對象"},mmTargetsMsg:{eng:"Targets generally refer to entities such as pages, data, etc., and can also include features or services.",cht:"對象泛指實體的頁面、數據等,亦可為的功能或服務。"},mmPemis:{eng:"Permissions",cht:"管理權限"},mmPemisMsg:{eng:"Permissions are primarily used to set rules for enabling or disabling various objects.",cht:"權限主要為用來設定各種對象之使用或禁用規則。"},mmGrups:{eng:"Permission groups",cht:"管理權限群組"},mmGrupsMsg:{eng:"Permission groups are primarily used to configure combinations of different permissions.",cht:"權限群組主要為用來設定組合各種權限。"},mmUsers:{eng:"Users",cht:"管理使用者"},mmUsersMsg:{eng:"Users are primarily for providing or extending user information and can be configured with combinations of various permission groups.",cht:"使用者主要為提供或擴充使用者資訊,並可設定組合各種權限群組。"},targetId:{eng:"Target",cht:"對象名稱"},targetIdEmpty:{eng:"Invalid name",cht:"尚未給予有效對象名稱"},targetIdDuplicate:{eng:"Duplicate target",cht:"對象名稱出現重複"},targetAddEmpty:{eng:"No target",cht:"尚未新增管理資料"},targetAdd:{eng:"Add target",cht:"新增對象"},targetAddNameNew:{eng:"New target",cht:"新對象"},targetAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},targetCopy:{eng:"Copy target",cht:"複製對象"},targetCopyNameNew:{eng:"copy",cht:"複製"},targetDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},targetEnable:{eng:"Enable",cht:"是否使用"},targetSaveTargetsFail:{eng:"Failed to save targets",cht:"儲存對象數據失敗"},targetSaveTargetsSuccess:{eng:"Save targets successfully",cht:"儲存對象數據成功"},pemiName:{eng:"Name of permission",cht:"權限名稱"},pemiNameEmpty:{eng:"Invalid name of permission",cht:"尚未給予有效權限名稱"},pemiNameDuplicate:{eng:"Duplicate name of permission",cht:"權限名稱出現重複"},pemiAddEmpty:{eng:"No permission",cht:"尚未新增權限資料"},pemiAdd:{eng:"Add permission",cht:"新增權限"},pemiAddNameNew:{eng:"New permission",cht:"新權限"},pemiAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},pemiCopy:{eng:"Copy permission",cht:"複製權限"},pemiCopyNameNew:{eng:"copy",cht:"複製"},pemiDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},pemiCrules:{eng:"Rules of permission",cht:"管控對象"},pemiEditBlngGrupsNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditBlngGrupsNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiEditCrules:{eng:"Edit rules of permission",cht:"編輯使用對象"},pemiEditCrulesForDisplay:{eng:"Rules of permission",cht:"展示使用對象"},pemiEditCrulesNoPemiId:{eng:"Can not find the id of permission",cht:"無法找到權限Id"},pemiEditCrulesNoPemiData:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiRnderCrulesNoRule:{eng:"No rule",cht:"無使用任何對象"},pemiRnderCrulesHasNRule:{eng:"Has {n} rule(s){nms}",cht:"使用共 {n} 項對象{nms}"},pemiSavePemisFail:{eng:"Failed to save permissions",cht:"儲存權限數據失敗"},pemiSavePemisSuccess:{eng:"Save permissions successfully",cht:"儲存權限數據成功"},pemiBlngEditGrups:{eng:"Edit permission groups",cht:"編輯所屬權限群組"},pemiBlngEditGrupsForDisplay:{eng:"Permission groups",cht:"展示所屬權限群組"},pemiBlngRnderNoGrup:{eng:"No permission groups",cht:"無所屬權限群組"},pemiBlngRnderGrups:{eng:"Has {n} permission group(s){nms}",cht:"共被 {n} 個權限群組{nms}使用"},pemiBlngPemiNow:{eng:"Now permission",cht:"目前權限"},pemiBlngEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},pemiBlngEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},pemiBlngDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},cruleEditNoTargetId:{eng:"Can not find the id of target",cht:"無法找到對象Id"},cruleEditNoTargetData:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cruleDeleteCheckTargets:{eng:"Delete target(s)",cht:"刪除勾選對象"},grupName:{eng:"Name of permission group",cht:"權限群組名稱"},grupNameEmpty:{eng:"Invalid name of permission group",cht:"尚未給予有效權限群組名稱"},grupNameDuplicate:{eng:"Duplicate name of permission group",cht:"權限群組名稱出現重複"},grupAddEmpty:{eng:"No permission group",cht:"尚未新增權限群組資料"},grupAdd:{eng:"Add permission group",cht:"新增權限群組"},grupAddNameNew:{eng:"New permission group",cht:"新權限群組"},grupAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},grupCopy:{eng:"Copy permission group",cht:"複製權限群組"},grupCopyNameNew:{eng:"copy",cht:"複製"},grupDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},grupCpemis:{eng:"Permissions",cht:"管控使用權限"},grupEditBlngNoGrupId:{eng:"Can not find the id of permission group",cht:"無法找到權限群組Id"},grupEditBlngNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupEditCpemis:{eng:"Edit list of permission group",cht:"編輯使用權限"},grupEditCpemisForDisplay:{eng:"List of permission group",cht:"展示使用權限"},grupRnderCpemisNoPermission:{eng:"No permission",cht:"無使用任何權限"},grupRnderCpemisHasNPermissions:{eng:"Has {n} permission(s){nms}",cht:"使用 {n} 項權限{nms}"},grupSaveGrupsEmpty:{eng:"No user",cht:"未有變更權限群組資料"},grupSaveGrupsFail:{eng:"Failed to save permission groups",cht:"儲存權限群組數據失敗"},grupSaveGrupsSuccess:{eng:"Save permission groups successfully",cht:"儲存權限群組數據成功"},grupBlngEditUsers:{eng:"Edit permission group of users",cht:"編輯所屬使用者"},grupBlngEditUsersForDisplay:{eng:"Permission group of users",cht:"展示所屬使用者"},grupBlngRnderNoUser:{eng:"No users",cht:"無所屬使用者"},grupBlngRnderUsers:{eng:"Has {n} user(s){nms}",cht:"共被 {n} 位使用者{nms}使用"},grupBlngGrupNow:{eng:"Now permission group",cht:"目前權限群組"},grupBlngEditNoGrupName:{eng:"Can not find the name of permission group",cht:"無法找到權限群組名稱"},grupBlngEditNoGrupData:{eng:"Can not find the data of permission group",cht:"無法找到權限群組資料"},grupBlngDeleteCheckGrups:{eng:"Delete permission group(s)",cht:"刪除勾選權限群組"},cpemiEditNoName:{eng:"Can not find the name of target",cht:"無法找到對象名稱"},cpemiEditNoTarget:{eng:"Can not find the data of target",cht:"無法找到對象資料"},cpemiDeleteCheckTargets:{eng:"Delete targets(s)",cht:"刪除勾選對象"},userName:{eng:"Name of user",cht:"使用者名稱"},userNameEmpty:{eng:"Invalid name of user",cht:"尚未給予有效使用者名稱"},userNameDuplicate:{eng:"Duplicate name of user",cht:"使用者名稱出現重複"},userEmailEmpty:{eng:"Empty email of user",cht:"尚未給予使用者Email"},userEmailError:{eng:"Invalid email of user",cht:"使用者Email格式錯誤"},userEmailDuplicate:{eng:"Duplicate email of user",cht:"使用者Email出現重複"},userAddEmpty:{eng:"No user",cht:"尚未新增使用者資料"},userAdd:{eng:"Add user",cht:"新增使用者"},userAddNameNew:{eng:"New user",cht:"新使用者"},userAddIdNew:{eng:"Waiting generation",cht:"待自動給予"},userCopy:{eng:"Copy user",cht:"複製使用者"},userCopyNameNew:{eng:"copy",cht:"複製"},userDeleteCheckUsers:{eng:"Delete user(s)",cht:"刪除勾選使用者"},userCgrups:{eng:"Permission groups",cht:"管控使用權限群組"},userEditCgrups:{eng:"Edit list of user",cht:"編輯使用權限群組"},userEditCgrupsForDisplay:{eng:"Permission groups of user",cht:"展示使用權限群組"},userEditCgrupsNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditCgrupsNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者資料"},userSaveUsersEmpty:{eng:"No user",cht:"未有變更使用者資料"},userSaveUsersFail:{eng:"Failed to save users",cht:"儲存使用者數據失敗"},userSaveUsersSuccess:{eng:"Save users successfully",cht:"儲存使用者數據成功"},userEditNoUserId:{eng:"Can not find the id of user",cht:"無法找到使用者Id"},userEditNoUserData:{eng:"Can not find the data of user",cht:"無法找到使用者數據"},userRnderCgrupsNoGroup:{eng:"No permission group",cht:"無使用任何權限群組"},userRnderCgrupsHasNGroups:{eng:"Has {n} permission group(s){nms}",cht:"使用 {n} 項權限群組{nms}"},cgrupEditNoName:{eng:"Can not find the name of permission",cht:"無法找到權限名稱"},cgrupEditNoPemi:{eng:"Can not find the data of permission",cht:"無法找到權限資料"},cgrupDeleteCheckPemis:{eng:"Delete permission(s)",cht:"刪除勾選權限"},show:{eng:"Show",cht:"顯示"},active:{eng:"Active",cht:"啟用"},userId:{eng:"ID of the created user",cht:"創建使用者主鍵"},timeCreate:{eng:"Created time",cht:"創建時間"},userIdUpdate:{eng:"ID of the updated user",cht:"最新變更使用者主鍵"},timeUpdate:{eng:"Updated time",cht:"更新時間"},invalidUrl:{eng:"Invalid url",cht:"網址無效"},invalidTokenTar:{eng:"Invalid target token",cht:"目標 token 無效"},invalidTokenSelf:{eng:"Invalid self token",cht:"自身 token 無效"},invalidUserIdTar:{eng:"Invalid target user id",cht:"目標使用者 Id 無效"},noTokenInUrl:{eng:"Missing token in url",cht:"網址缺少 token"},noTokenUserIdInUrl:{eng:"Missing token or userId in url",cht:"網址缺少 token 或 userId"},cannotGetUserByUrl:{eng:"Cannot get user by url",cht:"無法由網址取得使用者"},cannotGetUserDataByUrl:{eng:"Cannot get user data by url",cht:"無法由網址取得使用者資料"},noUserDataByUrl:{eng:"No user data by url",cht:"該網址無使用者資料"},noUserDataAfterConvert:{eng:"No user data after permission conversion",cht:"權限轉換後無使用者資料"},mmStaInfor:{eng:"Statistics",cht:"統計資訊"},staEventTitle:{eng:"Event Frequency",cht:"事件發生頻率"},staTimeHr:{eng:"Hourly",cht:"每小時"},staTimeDay:{eng:"Daily",cht:"每日"},staTotal:{eng:"Total",cht:"全部加總"},staNoData:{eng:"No event data",cht:"尚無事件資料"},getDataError:{eng:"Failed to load data",cht:"資料載入失敗"},staTableTitle:{eng:"Event Statistics",cht:"事件統計表"},staColEvent:{eng:"Event",cht:"事件"},staColLast1Day:{eng:"Last 1 Day",cht:"最近1日"},staColLast8Hour:{eng:"Last 8 Hours",cht:"最近8小時"},staColLast4Hour:{eng:"Last 4 Hours",cht:"最近4小時"},staColLast1Hour:{eng:"Last 1 Hour",cht:"最近1小時"}},Ea=(e={})=>{let t=ye(e,"kpLangExt");_t(t)||(t={});let r=ye(e,"webName");_t(r)||(r={});let n=ye(e,"webDescription");_t(n)||(n={});let s={};s={...s,...xa},_t(t)&&(s={...s,...t}),_t(r)&&(s={...s,webName:{...r}}),_t(n)&&(s={...s,webDescription:{...n}});let i={};return _r(["eng","cht"],e=>{let t={};_r(s,(r,n)=>{t[n]=r[e]}),i[e]=t}),i};function Ta(e,t={}){if(!Array.isArray(e))return{reason:"rowsInvalid",k:-1,field:""};let r=!0===ye(t,"idRequired",!1),n=ye(t,"rowsIdOnly",[]);Array.isArray(n)||(n=[]);let s=Object.create(null),i=(e,t)=>{let n=ye(e,"id"),i="number"==typeof n;if(!!(null==n||""===n||i&&!Number.isFinite(n)))return r?{reason:"idInvalid",k:t,field:"id"}:null;if(!er(n)&&!i)return{reason:"idInvalid",k:t,field:"id"};let u=String(n);return er(n)&&Buffer.byteLength(n,"utf8")>1978?{reason:"idTooLong",k:t,field:"id"}:!0===s[u]?{reason:"idDuplicate",k:t,field:"id"}:(s[u]=!0,null)},u=null;return La(e,(e,t)=>{if(u=i(e,t),null!==u)return!1}),null!==u?u:(La(n,e=>{if(u=i(e,-1),null!==u)return!1}),null!==u||La(e,(e,t)=>!(null!==e&&"object"==typeof e&&!Array.isArray(e))||(La(e,(e,r)=>{return null!=(n=e)&&"string"!=typeof n&&"number"!=typeof n&&"boolean"!=typeof n?(u={reason:"fieldNotScalar",k:t,field:r},!1):er(e)&&yl(e)!==e?(u={reason:"htmlMarkup",k:t,field:r},!1):void 0;var n}),null===u&&void 0)),u)}let Sa=e=>null!==e&&"object"==typeof e&&!Array.isArray(e)&&Object.keys(e).length>0;function Za(e,t,{srLog:r,kmx:n,lockSave:s}){let i=async(i,u,o,l,a={})=>{if(!Array.isArray(o)||!o.every(Sa))return r.error({event:"updateTabItems-validate-error",keyTable:i,msg:"saveRowFieldInvalid",reason:"rowsInvalid",row:-1,field:""}),Promise.reject("saveRowFieldInvalid");let c=ye(a,"pickKeysOnly",null),d=[];return Er(c)||_r(o,e=>{!0===ye(e,"_isNew")&&d.push(ye(e,"id",""))}),await s(`updateTabItems:${i}`,u,()=>n("updateTabItems:"+i,async()=>{if(Er(c)){let t=await e[i].select();o=function(e,t,r,n){let s=Object.create(null);Array.isArray(t)&&_r(t,e=>{let t=ye(e,r,"");er(t)&&(s[t]=e)});let i=fa(e,"order");return i=Ot(i,e=>{let t={...e},i=ye(e,r,""),u=ha(s,i,null);return null!==u&&_r(n,e=>{dn(u,e)&&(t[e]=u[e])}),t}),i}(t,o,l,c),r.info({event:"updateTabItems-pickKeysOnly",keyTable:i,userId:u,pickKeysOnly:c})}o=Ot(o=en(o,da[i].keys),(e,t)=>(e.order=t+1,e));let n=(e,t)=>{let n=null,s=Object.create(null);return _r(e,(e,u)=>{let o=ye(e,t,"");return er(o)?dn(s,o)?(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldDuplicate",row:u,value:o}),n="saveRowFieldDuplicate",!1):void(s[o]=!0):(r.error({event:"updateTabItems-ckKey-error",keyTable:i,key:t,msg:"saveRowFieldInvalid",row:u}),n="saveRowFieldInvalid",!1)}),n},s=null;if(Aa(i,["targets"])&&(s=n(o,"id"),null!==s))return Promise.reject(s);if(Aa(i,["pemis","grups"])&&(s=n(o,"name"),null!==s))return Promise.reject(s);if(Aa(i,["users"])&&(s=n(o,"email"),null!==s))return Promise.reject(s);o=Ot(o,e=>{let t=ye(e,"id");return"number"==typeof t&&Number.isFinite(t)?{...e,id:String(t)}:e});let a=await e[i].select();if(ys(d)>0){let e=Object.create(null);if(_r(a,t=>{e[ye(t,"id","")]=!0}),d.some(t=>!0===e[t]))return Promise.reject("saveNewRowExists")}let D=o,M=function(e,t,r,n={}){let s=ye(n,"withInfor");Dr(s)||(s=!0);let i={del:[],add:[],same:[],diff:[]};if(!er(r))return console.log("invalid key"),s&&(i.infor={}),i;hr(e)||(e=[e]),hr(t)||(t=[t]),e=ya(e,e=>dn(e,r)),t=ya(t,e=>dn(e,r));let u=new Map(t.map(e=>[e[r],e]));for(let t of e){let e=u.get(t[r]);e?(JSON.stringify(t)===JSON.stringify(e)?i.same.push(e):i.diff.push(e),u.delete(t[r])):i.del.push(t)}if(i.add=Array.from(u.values()),s){let e={};for(let t of i.del)e[t[r]]="del";for(let t of i.add)e[t[r]]="add";for(let t of i.diff)e[t[r]]="diff";for(let t of i.same)e[t[r]]="same";i.infor=e}return i}(a,D,l),w=Ta([...M.add,...M.diff],{rowsIdOnly:M.same});if(null!==w){let e="saveRowFieldInvalid";return"htmlMarkup"===w.reason?e="htmlMarkupNotAllowed":"idDuplicate"===w.reason&&(e="saveRowFieldDuplicate"),r.error({event:"updateTabItems-validate-error",keyTable:i,msg:e,reason:w.reason,row:w.k,field:w.field}),Promise.reject(e)}return ys(M.del)>0&&await t(u,i,"del",M.del),ys(M.add)>0&&await t(u,i,"insert",M.add),ys(M.diff)>0&&await t(u,i,"save",M.diff),D}))},u=(e,t,n)=>{let s=Ya(n),i="string"==typeof n?n:n&&n.message||String(n);return r.error({event:e,userId:t,msg:s,...i!==s?{raw:i}:{}}),s};return{updateTargets:async(e,t)=>{try{await i("targets",e,t,"id")}catch(t){throw u("updateTargets-error",e,t)}return r.info({event:"updateTargets-success",userId:e}),"saveTabItemsSuccess"},updatePemis:async(e,t)=>{try{await i("pemis",e,t,"name")}catch(t){throw u("updatePemis-error",e,t)}return r.info({event:"updatePemis-success",userId:e}),"saveTabItemsSuccess"},updateGrups:async(e,t)=>{try{await i("grups",e,t,"name")}catch(t){throw u("updateGrups-error",e,t)}return r.info({event:"updateGrups-success",userId:e}),"saveTabItemsSuccess"},updateUsers:async(e,t,n={})=>{try{await i("users",e,t,"id",n)}catch(t){throw u("updateUsers-error",e,t)}return r.info({event:"updateUsers-success",userId:e}),"saveTabItemsSuccess"}}}let va=null;function Ya(e,t="saveWriteFail"){return null===va&&(va=new Set(Object.keys(Ea({}).eng))),"string"==typeof e&&va.has(e)?e:t}let Xa="w-syslog/src/formatter.mjs";function ja(r={}){let n=r.fpSelf,s=r.cwd,i=[],u=e.dirname(e.dirname(n)),o=e.join(u,"src","formatter.mjs");if((r=>{try{return"w-syslog"===JSON.parse(t.readFileSync(e.join(r,"package.json"),"utf8")).name}catch(e){return!1}})(u)&&t.existsSync(o))return{fp:o,by:"pkgRoot"};i.push(`package root of ${n}`);try{return{fp:c.createRequire(n).resolve(Xa),by:"resolveFromSelf"}}catch(e){i.push(`resolve from ${n}`)}try{return{fp:c.createRequire(e.join(s,"index.js")).resolve(Xa),by:"resolveFromCwd"}}catch(e){i.push(`resolve from ${s}`)}throw new Error(`w-syslog: can not resolve transport target ${Xa}, tried: ${i.join("; ")}. When bundling, keep w-syslog installed and list "pino" in external`)}let za="",Ga="wsyslogFormatterError",Wa=e=>{try{return t.statSync(e).isDirectory()}catch(e){return!1}};function Ka(r={}){let n=ln(),s=ye(r,"timeZone",null),i=ye(r,"fdLog");er(i)||(i="./_logs");let u=ye(r,"interval");"day"!==u&&"hr"!==u&&(u="day");let o=ye(r,"numKeep");if(Lr(o)||(o="day"===u?365:8760),o=fr(o),"function"!=typeof a.transport)throw new Error('w-syslog: pino.transport is not a function, pino seems to be bundled as its browser build; list "pino" in external when bundling');if(er(s))try{Intl.DateTimeFormat("en-US",{timeZone:s})}catch(e){throw new Error(`w-syslog: invalid timeZone[${s}]`)}let c=e.resolve(i);if(On(c),!Wa(c))throw new Error(`w-syslog: can not create fdLog[${i}]`);let d=(""===za&&(za=ja({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href),cwd:process.cwd()}).fp),za),M=a.transport({targets:[{level:"info",target:l.pathToFileURL(d).href,options:{interval:u,fdLog:c,timeZone:s}}]});M.unref();let w=!1,y=e=>{try{n.emit("writeError",e)}catch(e){}},g=e=>{w=!0,console.error("w-syslog transport error:",e),y(e)},I=e=>{let t=new Error(ye(e,"message","w-syslog formatter error"));t.code=ye(e,"code"),t.syscall=ye(e,"syscall"),t.path=ye(e,"path"),y(t)};M.on("error",g),M.on(Ga,I);let m=()=>{M.off("error",g),M.off(Ga,I)},C=a(M),p=()=>{try{if(!Wa(c))return;let r="hr"===u?/^\d{4}-\d{2}-\d{2}T\d{2}\.log$/:/^\d{4}-\d{2}-\d{2}\.log$/,s=t.readdirSync(c).filter(e=>r.test(e));s.sort();let l=s.length-o;if(l<=0)return;let a=s.slice(0,l);for(let r of a){let s=e.join(i,r);try{t.unlinkSync(e.join(c,r)),n.emit("delete",{fp:s,fn:r})}catch(e){}}}catch(e){console.error("WSyslog cleanLogs error:",e)}},f=setImmediate(()=>{f=null,p()}),L=setInterval(p,36e5);L.unref();let h=null,b=e=>{let t=C[e].bind(C);return(...r)=>{try{n.emit(e,{args:r})}catch(e){}w||t(...r)}};return n.fatal=b("fatal"),n.error=b("error"),n.warn=b("warn"),n.info=b("info"),n.debug=b("debug"),n.trace=b("trace"),n.cleanLogs=p,n.clear=(e={})=>{if(null!==h)return h;null!==f&&(clearImmediate(f),f=null),clearInterval(L);let t=ye(e,"timeLimit");Lr(t)||(t=6e4),h=Hr();let r=!1,n=()=>{r||(r=!0,M.closed?setImmediate(m):M.once("close",()=>{setImmediate(m)}),h.resolve())},s=setTimeout(()=>{console.error("w-syslog clear: timeout, worker terminated, some logs may be lost");try{M.worker.terminate()}catch(e){}n()},t);try{if(M.closed||M.destroyed)return clearTimeout(s),n(),h;M.once("close",()=>{clearTimeout(s),n()}),M.end()}catch(e){clearTimeout(s),n()}return h},n}function Fa(){let e=ln(),t=Object.create(null);function r(t,r){Mn(e,t,[r],{tag:"cache"})}function n(e,n={}){if(dn(t,e))return;let s=ye(n,"fun");Gr(s)||(s=async()=>{});let i=ye(n,"inputs");hr(i)||(i=[]);let u=ye(n,"timeExpired");Lr(u)||(u=5e3),u=fr(u);let o=ye(n,"timeFrom");"end"!==o&&(o="start");let l=ye(n,"useCacheWhenError");Dr(l)||(l=!1);let a=ye(n,"useCloneDeep");Dr(a)||(a=!0),t[e]={needExec:!0,fun:s,pm:null,gen:0,inputs:i,value:null,time:null,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a},r("message",{fun:"set",key:e,timeExpired:u,timeFrom:o,useCacheWhenError:l,useCloneDeep:a})}async function s(e,n={}){if(dn(t,e)){let s=t[e],i=ye(n,"useCloneDeep");if(Dr(i)||(i=s.useCloneDeep),s.pm)return r("message",{fun:"get",key:e,msg:"waiting"}),await s.pm,i?wu(s.value):s.value;let u=Date.now(),o=s.needExec,l=u-s.time;if(o?r("message",{fun:"get",key:e,msg:"execute first"}):s.timeExpired>0&&l>s.timeExpired&&(r("message",{fun:"get",key:e,msg:"execute by timeExpired",timeDiff:l}),o=!0),o){r("message",{fun:"get",key:e,msg:"fun start"}),s.needExec=!1;let t,n,i=s.gen,o=async()=>{try{let t;try{t=await s.fun(...s.inputs)}catch(n){if(r("error",{fun:"get",key:e,msg:n}),!s.useCacheWhenError)throw s.gen===i&&(s.needExec=!0),n;t=void 0}s.gen===i&&(s.value=t,s.time="end"===s.timeFrom?Date.now():u)}finally{s.pm=null,r("message",{fun:"get",key:e,msg:"fun end"})}},l=new Promise((e,r)=>{t=e,n=r});s.pm=l,o().then(t,n),await l}else r("message",{fun:"get",key:e,msg:"use cache"});return i?wu(s.value):s.value}return r("error",{fun:"get",key:e,msg:"invalid key"}),null}return e.set=n,e.getProxy=async function(e,t={}){return n(e,t),s(e,t)},e.get=s,e.update=function(e,n){dn(t,e)&&(r("message",{fun:"updateValue",key:e}),t[e].value=n,t[e].time=Date.now(),t[e].gen+=1)},e.clear=function(e){dn(t,e)&&(r("message",{fun:"clear",key:e}),t[e].needExec=!0)},e.remove=function(e){dn(t,e)&&(r("message",{fun:"remove",key:e}),delete t[e])},e}function ka(r,n=1){return function(e,t=1,r={}){let n=1,s=ye(r,"path"),i=ye(r,"fs");if(!Qr(e,{fs:i}))throw new Error(`fd[${e}] is not a folder`);return null!==t&&Lr(t)&&(t=fr(t))<1&&(t=1),function e(r){let u=[];return Qr(r,{fs:i})?(_r(i.readdirSync(r),function(o){let l=s.resolve(r,o),a=null;try{a=i.statSync(l)}catch(e){}a&&a.isDirectory()?(u.push({isFolder:!0,level:n,path:l,name:s.basename(l)}),n+=1,(n<=t||null===t)&&(u=u.concat(e(l))),n-=1):u.push({isFolder:!1,level:n,path:l,name:s.basename(l)})}),u):u}(e)}(r,n,{path:e,fs:t})}let Va=new Map,Ha=new Map;function Ua(e){let t=ye(e,"fdLog");return er(t)||(t="./logs"),t}function Ba(e,r,n){let s=ka(e);s=s.filter(e=>!ye(e,"isFolder",!1)),s=function(e,t,r){let n=t.format(r);return ya(e,e=>{let t=ye(e,"name","").replace(/\.log$/,"");return!/^\d{4}-\d{2}-\d{2}/.test(t)||t>=n.slice(0,t.length)})}(s,r,n);let i=[];for(let e of s)try{let r=t.statSync(e.path);if(!r.isFile())continue;i.push({path:e.path,name:e.name,size:r.size,mtimeMs:r.mtimeMs})}catch(e){}return i}function Qa(e){let t=new Map;return r=>{let n=Math.floor(r/6e4),s=t.get(n);return void 0===s&&(s=Is(6e4*n).format(e),t.set(n,s)),s}}function Ra(e,r){return new Promise((n,s)=>{let i=null,u=t.createReadStream(e,{encoding:"utf8"}),o=d.createInterface({input:u,crlfDelay:1/0});o.on("line",r);let l=e=>{i=e,o.close()};u.on("error",l),o.on("error",l),u.on("close",()=>{i?s(i):n()})})}function Oa(e){let t=null;try{t=JSON.parse(e)}catch(e){return null}return null===t||"object"!=typeof t?null:t}async function Pa(e,t,r,n=null){Gr(n)||(n=Qa(r));let s={minTimeMs:null,ev:{}};return await Ra(e,e=>{let r=Oa(e);if(null===r)return;let i=r.event;if(!er(i))return;let u=function(e){return"number"==typeof e?e:er(e)?Is(e).valueOf():NaN}(r.time);if(Number.isNaN(u))return;if((null===s.minTimeMs||u<s.minTimeMs)&&(s.minTimeMs=u),!(u>t))return;let o=n(u),l=s.ev[o];void 0===l&&(l={count:0,kp:{}},s.ev[o]=l),l.count+=1,l.kp[i]=(l.kp[i]||0)+1}),s}async function Ja(e,t,r){let n=Qa(r),s=[];for(let i of e)try{let e=await Pa(i.path,t,r,n);s.push({name:i.name,ok:!0,agg:e})}catch(e){s.push({name:i.name,ok:!1,err:String(ye(e,"message",e))})}return s}function $a(e,t){for(let r in t.ev){let n=t.ev[r],s=e[r];void 0===s&&(s={count:0,kp:{}},e[r]=s),s.count+=n.count;for(let e in n.kp)s.kp[e]=(s.kp[e]||0)+n.kp[e]}return e}async function _a(t,r={}){let n=!1!==ye(r,"useCache"),s=ye(r,"scanFiles");Gr(s)||(s=Ja);let i=ye(r,"srLog",null),u=Ba(t.fdLog,t.tStart,t.fmt),o=function(e){let t=Va.get(e);return t||(t=new Map,Va.set(e,t)),t}((l=t.fdLog,a=t.fmt,`${e.resolve(l)}|${a}`));var l,a;let c=[],d={};for(let e of u){let r=n?o.get(e.name):void 0;void 0!==r&&r.size===e.size&&r.mtimeMs===e.mtimeMs&&(null===r.minTimeMs||r.minTimeMs>r.scanTStartMs&&r.minTimeMs>t.tStartMs)?d[e.name]=r.agg:c.push(e)}if(n){let e=new Set(u.map(e=>e.name));for(let t of o.keys())e.has(t)||o.delete(t)}let D=[];if(c.length>0){let e=await s(c.map(e=>({path:e.path,name:e.name})),t.tStartMs,t.fmt),r={};for(let t of e)r[t.name]=t;for(let e of c){let s=r[e.name];if(s&&s.ok)d[e.name]=s.agg,n&&o.set(e.name,{size:e.size,mtimeMs:e.mtimeMs,minTimeMs:s.agg.minTimeMs,scanTStartMs:t.tStartMs,agg:s.agg});else{let t=ye(s,"err","no result");D.push({name:e.name,err:t}),n&&o.delete(e.name),i&&Gr(i.warn)&&i.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:t})}}}let M={};for(let e of u){let t=d[e.name];t&&$a(M,t)}let w=function(e,t){let r={};for(let e of t)r[e]={count:0};for(let t in e){let n=e[t];r[t]={count:n.count,...n.kp}}return Object.keys(r).sort().map(e=>({time:e,data:r[e]}))}(M,t.kpTime);return{rs:w,stat:{nFiles:u.length,nScanned:c.length,nCached:u.length-c.length,errors:D}}}function qa(t=7,r="hr",n={}){let s=function(e=7,t="hr",r={}){let n=Ua(r),s=function(e){return"day"===e?"day":"hr"}(t),i="day"===s?"YYYY-MM-DD":"YYYY-MM-DDTHH",u="day"===s?"day":"hour",o=ye(r,"timeNow"),l="number"==typeof o?Is(o):Is(),a=l.subtract(e,"day"),c=a.valueOf(),d=a.startOf(u),D=l.startOf(u),M=[];for(;!d.isAfter(D);)M.push(d.format(i)),d=d.add(1,u);return{fdLog:n,timeInterval:s,fmt:i,unit:u,tStart:a,tStartMs:c,kpTime:M,timeNow:l.valueOf()}}(t,r,n),i=JSON.stringify([e.resolve(s.fdLog),t,s.timeInterval,ye(n,"timeNow",null)]);if(Ha.has(i))return Ha.get(i);let u=_a(s,n).finally(()=>{Ha.delete(i)});return Ha.set(i,u),u}function ec(e,t){return null==e?t:"number"==typeof e?e:Is(e).valueOf()}async function tc(e,t){let r={},n=[];for(let s of e)try{await Ra(s.path,e=>{let n=Oa(e);if(null===n)return;let s=n.event;if(!er(s))return;let i=ec(n.time,t),u=(o=(t-i)/36e5)<0?Math.ceil(o)||0:Math.floor(o);var o;u<0||u>24||(r[s]||(r[s]={last1Day:0,last8Hour:0,last4Hour:0,last1Hour:0}),u<=24&&(r[s].last1Day+=1),u<=8&&(r[s].last8Hour+=1),u<=4&&(r[s].last4Hour+=1),u<=1&&(r[s].last1Hour+=1))})}catch(e){n.push({name:s.name,err:String(ye(e,"message",e))})}return{kp:r,errors:n}}function rc(r={}){let n=r.fpSelf,s=r.cwd||process.cwd(),i=r.pkgName||"w-web-perm",u=r.rel||"server/staLogs/staLogsCore.shellWorker.mjs",o=r.existsSync||t.existsSync,l=r.readFileSync||t.readFileSync,a=r.createRequire||c.createRequire;if("string"!=typeof n||""===n)throw new Error("invalid fpSelf");let d=[],D=function(t,r){let n=t;for(;;){if(r(e.join(n,"package.json")))return n;let t=e.dirname(n);if(t===n)return"";n=t}}(e.dirname(n),o);if(""===D)d.push(`(a) no package.json above ${e.dirname(n)}`);else{let t="";try{t=JSON.parse(l(e.join(D,"package.json"),"utf8")).name}catch(e){}let r=e.join(D,u);if(t!==i)d.push(`(a) ${e.join(D,"package.json")} name[${t}]`);else{if(o(r))return r;d.push(`(a) ${r}`)}}let M=`${i}/${u}`,w=[["b",n],["c",e.join(s,"noop.js")]];for(let[e,t]of w)try{let r=a(t).resolve(M);if(o(r))return r;d.push(`(${e}) ${r}`)}catch(r){d.push(`(${e}) resolve ${M} from ${t}`)}throw new Error(`cannot resolve ${u} of ${i} (the package must be installed with its server folder), tried: ${d.join("; ")}`)}let nc="";function sc(e,t=""){let r=Hr();if("string"!=typeof t||""===t)try{""===nc&&(nc=rc({fpSelf:l.fileURLToPath("undefined"==typeof document&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:"undefined"==typeof document?location.href:D&&"SCRIPT"===D.tagName.toUpperCase()&&D.src||new URL("w-web-perm.umd.js",document.baseURI).href)})),t=nc}catch(e){return r.reject(e),r}let n=new u.Worker(t),s=!1,i=(e,t)=>{s||(s=!0,e(t));try{n.terminate().catch(()=>{})}catch(e){}};return n.on("message",e=>{"done"===e.mode?i(r.resolve,e.payload):"error"===e.mode&&i(r.reject,e.payload)}),n.on("error",e=>{i(r.reject,e)}),n.on("exit",e=>{i(r.reject,new Error(`staLogs worker exited without result, code=${e}`))}),n.postMessage(e),r}async function ic(e,t,r){return 0===e.length?[]:sc({kind:"scan",files:e,tStartMs:t,fmt:r})}async function uc(e,t){return 0===e.length?{kp:{},errors:[]}:sc({kind:"table",files:e,nowMs:t})}function oc(e={}){return async function(e={}){let t=Ua(e),r=ye(e,"timeNow"),n="number"==typeof r?Is(r):Is(),s=n.valueOf(),i=ye(e,"scanTableFiles");Gr(i)||(i=tc);let u=ye(e,"srLog",null),o=Ba(t,n.subtract(25,"hour"),"YYYY-MM-DDTHH"),{kp:l,errors:a}=await i(o.map(e=>({path:e.path,name:e.name})),s);for(let e of a)u&&Gr(u.warn)&&u.warn({event:"fun-staLogs",key:"staLogsFileSkipped",name:e.name,err:e.err});let c=[];for(let e in l)c.push({event:e,...l[e]});return c.sort((e,t)=>t.last1Day-e.last1Day),{rs:c,stat:{nFiles:o.length,errors:a}}}({...e,scanTableFiles:uc})}async function lc(e=7,t="hr",r={}){let n=await function(e=7,t="hr",r={}){return qa(e,t,{...r,scanFiles:ic})}(e,t,r);return n.rs}let ac=["verifyConn","updateTargets-success","checkUser-error","api/getPerm-success","getWebInfor-success"],cc=["api/getPermUserInfor-success","api/getUserByToken-success","getStaEvent-success","getStaEventTable-success","getTokenUser-error","getWebInfor-success","updateGrups-success","updatePemis-success","updateTabItems-pickKeysOnly","updateTargets-success","updateUsers-success","verifyConn","verifyConn-error"];function dc(e="hr",t=!0){let r="day"===e?"YYYY-MM-DD":"YYYY-MM-DDTHH",n="hr"===e?"hour":"day",s="hr"===e?48:7,i=function(e){return"many"===e?cc:ac}(t),u=Is("2025-01-01T00:00:00"),o=[];for(let e=0;e<s;e++){let t=u.add(e,n),s={count:0};i.forEach((t,r)=>{let n=Math.round(20+15*Math.sin((e+3*r)/4));s[t]=n,s.count+=n}),o.push({time:t.format(r),data:s})}return o}function Dc(e={}){let t=ye(e,"fdLog","");er(t)||(t="./logs");let r=ye(e,"mock",!1),n=ye(e,"srLog",null),s=async(e=7,s="hr")=>{if(r)return dc(s,r);return await lc(e,s,{fdLog:t,srLog:n})},i=Fa(),u=async()=>{if(r)return function(e=!0){if("many"!==e)return[{event:"verifyConn",last1Day:240,last8Hour:90,last4Hour:50,last1Hour:15},{event:"updateTargets-success",last1Day:180,last8Hour:70,last4Hour:38,last1Hour:11},{event:"checkUser-error",last1Day:120,last8Hour:45,last4Hour:24,last1Hour:7},{event:"api/getPerm-success",last1Day:90,last8Hour:33,last4Hour:18,last1Hour:5},{event:"getWebInfor-success",last1Day:60,last8Hour:22,last4Hour:12,last1Hour:3}];return cc.map((e,t)=>{let r=400-20*t;return{event:e,last1Day:r,last8Hour:Math.round(.4*r),last4Hour:Math.round(.2*r),last1Hour:Math.round(.05*r)}})}(r);let e=await async function(e={}){return(await oc(e)).rs}({fdLog:t,srLog:n});return e},o=Fa(),l={getStaEvent:async(e,t=7,r="hr")=>{let n=`${t}:${r}`,u=await i.getProxy(n,{fun:s,inputs:[t,r],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEvent"));return Array.isArray(u)?u:Promise.reject("cannotGetStaEvent")},getStaEventTable:async e=>{let t=await o.getProxy("staEventTable",{fun:u,inputs:[],timeExpired:3e4,timeFrom:"end",useCacheWhenError:!1}).catch(()=>Promise.reject("cannotGetStaEventTable"));return Array.isArray(t)?t:Promise.reject("cannotGetStaEventTable")}};return l}function Mc(e){return Array.from(e,e=>{let t=e.charCodeAt(0);return t<32||127===t?"?":e}).join("")}function wc(e){if(hr(e))return e.map(wc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=e.length,r=Math.min(4,Math.floor(t/8));return 0===r?`(len=${t})`:`${Mc(e.slice(0,r))}...${Mc(e.slice(-r))}(len=${t})`}function yc(e){if(null===e||"object"!=typeof e||hr(e))return wc(e);let t={};for(let r of Object.keys(e))t[r]="token"===r.toLowerCase()?wc(e[r]):e[r];return t}function gc(e){if(hr(e))return e.map(gc);if(null==e||""===e)return"";if(!er(e))return`(${typeof e})`;let t=null;try{t=new URL(e)}catch(e){return"(invalid-url)"}return"http:"!==t.protocol&&"https:"!==t.protocol?t.protocol:`${t.origin}${t.pathname}`}let Ic=["invalidUrl","invalidTokenSelf","invalidTokenTar","invalidUserIdTar","noTokenKeyValueInUrl","noTokenKeyUserIdInUrl","noTokenInUrl","cannotGetUserByUrl","cannotGetUsersByUrl","cannotGetUserDataByUrl","cannotGetUsersDataByUrl","noUserDataByUrl","noUsersDataByUrl","noUserDataAfterConvert"],mc=/^[A-Za-z]{1,40}$/;function Cc(e,t={}){let r=ye(t,"failValue",null),n=ye(t,"onFail",null);return async(...t)=>{try{return await e(...t)}catch(e){if(Gr(n))try{n(function(e){let t=er(e)?e:ye(e,"message");if(er(t)&&Ic.includes(t))return{upstream:t};let r=null===e?"null":hr(e)?"array":typeof e,n=ye(e,"name");return{upstreamType:r,upstreamName:er(n)&&mc.test(n)?n:""}}(e))}catch(e){}return r}}}function pc({srLog:e}){return({userId:t,tableName:r,methodName:n})=>{let s="";return er(t)?"select"!==n&&(s="userNoPermission"):s="cannotFindUserId",""===s||(e.error({event:"authorizeExec",ok:!1,msg:s,userId:t,tableName:r,methodName:n}),!1)}}function fc(e,{srLog:t}){return async(r,n,s,i)=>{try{return await e(r,n,s,i)}catch(e){let i="string"==typeof e?e:e&&e.message||String(e);return t.error({event:"operOrm-error",msg:"anUnexpectedErrorOccurred",raw:i,userId:r,tableName:n,methodName:s}),Promise.reject("anUnexpectedErrorOccurred")}}}return function(r,n,s,i,u,o,l={}){let a=null;if(!Gr(r))throw console.log("invalid WOrm",r),new Error("invalid WOrm");if(!er(n))throw console.log("invalid url",n),new Error("invalid url");if(!er(s))throw console.log("invalid db",s),new Error("invalid db");if(!Gr(i))throw console.log("invalid getUserByToken",i),new Error("invalid getUserByToken");if(!Gr(u))throw console.log("invalid verifyClientUser",u),new Error("invalid verifyClientUser");if(!Gr(o))throw console.log("invalid verifyAppUser",o),new Error("invalid verifyAppUser");let c=ye(l,"serverPort");Lr(c)||(c=11006),c=fr(c);let d=ye(l,"webName",{}),D=ye(l,"webDescription",{}),M=ye(l,"webLogo",""),w=ye(l,"subfolder","");var y,g;er(w)&&("/"===Vr(w,1)&&(g=1,w=er(y=w)&&Fr(g)?0===(g=fr(g))?y:kr(y,y.length-g):""),"/"!==kr(w,1)&&(w=`/${w}`));let I=ye(l,"urlRedirect",""),m=ye(l,"showLanguage","n"),C=ye(l,"language","eng"),p=ye(l,"showModeEditTargets","n"),f=ye(l,"showModeEditPemis","n"),L=ye(l,"showModeEditGrups","n"),h=ye(l,"showModeEditUsers","n"),b=ye(l,"modeEditTargets","n"),N=ye(l,"modeEditPemis","n"),A=ye(l,"modeEditGrups","n"),x=ye(l,"modeEditUsers","n"),E=ye(l,"widthTargetId",""),T=ye(l,"widthTargetDescription",""),S=ye(l,"widthPemisName",""),Z=ye(l,"widthPemisDescription",""),v=ye(l,"widthGrupsName",""),Y=ye(l,"widthGrupsDescription",""),X=ye(l,"widthUsersName",""),j=ye(l,"widthUsersEmail",""),z=ye(l,"widthUsersDescription",""),G=ye(l,"mappingBy","");"id"!==G&&"email"!==G&&"name"!==G&&(G="id");let W=ye(l,"kpLangExt",null),K=Ea({kpLangExt:W,webName:d,webDescription:D}),F=((e={})=>{let t=ye(e,"logFd","");er(t)||(t="./logs");let r=ye(e,"logInterval","");er(r)||(r="hr");let n=ye(e,"logNumKeep",null),s={fdLog:t,interval:r};if(null!=n&&""!==n){if(!Lr(n))throw new Error(`invalid logNumKeep[${n}], must be positive integer`);s.numKeep=fr(n)}return Ka(s)})(l);try{Qu(l)}catch(e){throw F.error({event:"WWebPerm-init-error",msg:e.message}),e}let k=e=>t=>{F.warn({event:`inject-${e}-fail`,...t})};i=Cc(i,{failValue:null,onFail:k("getUserByToken")}),u=Cc(u,{failValue:!1,onFail:k("verifyClientUser")}),o=Cc(o,{failValue:!1,onFail:k("verifyAppUser")});let V={};try{V=Pl(da,r,n,s)}catch(e){throw console.log(e),F.error({event:"WServOrm-init-error",msg:e&&e.message||"WServOrmInitFailed"}),e}let{woItems:H,procOrm:U}=V,B=new function(){let e=new Map,t=new Map;return async(r,n)=>{let s=(e.get(r)||Promise.resolve()).then(async()=>await n(),async()=>await n());e.set(r,s.catch(()=>{})),t.set(r,(t.get(r)||0)+1);try{return await s}finally{let n=t.get(r)-1;n<=0?(t.delete(r),e.delete(r)):t.set(r,n)}}},Q=function(e){return async(t,r,n,s={})=>{let i=ye(s,"errKey","");er(i)||(i="saveInProgress");let u=`${t}:${r}`;return await e.setWithFree([u],n).catch(e=>e===`setWithFree: key in use: ${u}`?Promise.reject(i):Promise.reject(e))}}(Dn()),R=Za(H,U,{srLog:F,kmx:B,lockSave:Q}),O=ye(l,"logFd","");er(O)||(O="./logs");let P=Dc({fdLog:O,mock:ye(l,"staEventMock",!1),srLog:F}),J=async e=>{let t=null;if(er(e)&&(t=i(e),Wr(t)&&(t=await t)),!_t(t))return console.log("token",wc(e)),F.error({event:"getTokenUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");await(async e=>{if(!er(ye(e,"id","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserId"}),Promise.reject("cannotGetUserId");if(!er(ye(e,"email","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserEmail"}),Promise.reject("cannotGetUserEmail");if(!er(ye(e,"name","")))return console.log("user",e),F.error({event:"checkUser-error",msg:"cannotGetUserName"}),Promise.reject("cannotGetUserName");let t=ye(e,"isAdmin","");return"y"===t||"n"===t||(console.log("user",e),console.log("user.isAdmin is not y or n",e.isAdmin),F.error({event:"checkUser-error",msg:"cannotGetUserRole"}),Promise.reject("cannotGetUserRole"))})(t);let r=ye(t,G,"");if(!er(r))return console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserProp",mappingBy:G}),Promise.reject("cannotGetUserProp");let n=await H.users.select({[G]:r,isActive:"y"});return n=ye(n,0,null),_t(n)?n:(console.log("userSelf",t),console.log("mappingBy",G),F.error({event:"getTokenUser-error",msg:"cannotGetUserFromPerm",mappingBy:G}),Promise.reject("cannotGetUserFromPerm"))},$=async(e,t="")=>{let r=await J(e),n=u(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyClientUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},_=async(e,t="")=>{let r=null;if(er(e)&&(r=i(e),Wr(r)&&(r=await r)),!_t(r))return console.log("token",wc(e)),F.error({event:"getAndVerifyAppUser-error",msg:"cannotFindUserFromToken"}),Promise.reject("cannotFindUserFromToken");let n=o(r,t);return Wr(n)&&(n=await n),n?r:(console.log("user",r),F.error({event:"getAndVerifyAppUser-error",msg:"userNoPermission",from:t}),Promise.reject("userNoPermission"))},q=async(e,t="")=>(await $(e,t),!0),ee=async(e,t,r)=>await B("syncAndReplaceTabs:"+r,async()=>{let n=ye(t,"from","");if(!er(n))return console.log("inp",t),F.error({event:"syncAndReplaceTabs-error",msg:"invalidFrom",keyTable:r}),Promise.reject("invalidFrom");let s=ye(t,"rows",[]);if(!Er(s))return console.log("inp",t),console.log("keyTable",r),F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",keyTable:r}),Promise.reject("invalidRows");let i=s.findIndex(e=>!Sa(e));if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowInvalid",keyTable:r,from:n,row:i}),Promise.reject("invalidRows");s=Ot(s,(e,t)=>(e.from=n,e)),s=en(s,da[r].keys);let u={from:!0,userId:!0,timeCreate:!0,userIdUpdate:!0,timeUpdate:!0},o=s.findIndex(e=>!Object.keys(e).some(t=>{return!0!==u[t]&&("string"==typeof(r=e[t])&&""!==r||"number"==typeof r&&Number.isFinite(r)||"boolean"==typeof r);var r}));if(o>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"rowBlank",keyTable:r,from:n,row:o}),Promise.reject("invalidRows");let l="targets"===r?"id":"grups"===r||"pemis"===r?"name":null;if(null!==l){let e=s.findIndex(e=>!er(ye(e,l)));if(e>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"id"===l?"idInvalid":"nameInvalid",keyTable:r,from:n,row:e,field:l}),Promise.reject("invalidRows")}let a=Ta(s);if(null!==a){let e="htmlMarkup"===a.reason?"htmlMarkupNotAllowed":"invalidRows";return F.error({event:"syncAndReplaceTabs-error",msg:e,reason:a.reason,keyTable:r,from:n,row:a.k,field:a.field}),Promise.reject(e)}let c=e=>{let t=ye(e,"id");return er(t)||"number"==typeof t&&Number.isFinite(t)?String(t):null},d=s.map(c).filter(e=>null!==e);if(d.length>0){let e=null;try{e=await H[r].select({id:{$in:d}})}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e,"anUnexpectedErrorOccurred");return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n,step:"select"}),Promise.reject(s)}let t=new Map;for(let r of e)t.set(String(r.id),r.from);let i=s.findIndex(e=>{let r=c(e);return null!==r&&t.has(r)&&t.get(r)!==n});if(i>=0)return F.error({event:"syncAndReplaceTabs-error",msg:"invalidRows",reason:"idOtherFrom",keyTable:r,from:n,row:i,field:"id"}),Promise.reject("invalidRows")}let D=null;try{await H[r].delAll({from:n}),D=await U(e,r,"insert",s)}catch(e){let t="string"==typeof e?e:e&&e.message||String(e),s=Ya(e);return F.error({event:"syncAndReplaceTabs-error",msg:s,raw:t,keyTable:r,from:n}),Promise.reject(s)}return D}),te=async e=>{let t=await(async(e,t)=>{let r=await H.users.select({[e]:t,isActive:"y"});return r=ye(r,0,null),_t(r)?r:null})("id",e);return _t(t)?t:null},re=async e=>{let t=await te(e),r=ba(t,await H.grups.select(),await H.pemis.select(),await H.targets.select());if(!_t(r))return console.log("userId",e),F.error({event:"getGenUserAndRulesByUserId-error",msg:"cannotGetUserRules",userId:e}),Promise.reject("cannotGetUserRules");let n=Ot(ye(r,"grups",[]),"name");return n=Jt(n,";"),{user:{...t,grupsNames:n},rules:ye(r,"rules",[])}},ne="dist",se="./node_modules/w-web-perm/dist";Rr(se)&&(ne=se);let ie="index.html";try{let r=e.resolve(ne,"index.tmp");if(Pr(r)||(r=e.resolve(ne,ie)),!Pr(r))throw console.log("fpEntryIn",r),new Error("invalid fpEntryIn");let n=e.resolve(ne,ie),s=t.readFileSync(r,"utf8");s=Jr(s,"/mperm/","{sfd}/"),s=Jr(s,"{sfd}",w),s=Jr(s,"{urlRedirect}",I),s=Jr(s,"{language}",C),t.writeFileSync(n,s,"utf8")}catch(e){console.log(e),console.log(`can not generate ${ie}`)}let ue=[{method:"GET",path:"/api/getUserByToken",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getUserByToken/check token: invalid token"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getUserByToken");return _t(r)?(F.info({event:"api/getUserByToken-success",userId:ye(r,"id","")}),r):(console.log("token",wc(t)),console.log("[API]getUserByToken/check user: invalid user"),F.error({event:"api/getUserByToken-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPerm",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]getPerm/check token: invalid token"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=await $(t,"getPerm");if(!_t(r))return console.log("token",wc(t)),console.log("[API]getPerm/check userSelf: invalid userSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=ye(r,"id","");if(!er(n))return console.log("token",wc(t)),console.log("userSelf",r),console.log("[API]getPerm/check userIdSelf: invalid userIdSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=await re(n);return _t(s)?(F.info({event:"api/getPerm-success",userId:n}),s):(console.log("token",wc(t)),console.log("userSelf",r),console.log("userIdSelf",n),console.log("[API]getPerm/check userWithRulesSelf: invalid userWithRulesSelf"),F.error({event:"api/getPerm-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"GET",path:"/api/getPermUserInfor",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("[API]getPermUserInfor/check tokenSelf: invalid tokenSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!_t(await _(t,"getPermUserInfor")))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userSelf: invalid userSelf"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.userId","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("tokenSelf",wc(t)),console.log("[API]getPermUserInfor/check userIdFind: invalid userIdFind"),F.error({event:"api/getPermUserInfor-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let n=await re(r);return _t(n)?(F.info({event:"api/getPermUserInfor-success",userId:r}),n):(console.log("userIdFind",r),console.log("[API]getPermUserInfor/check userWithRulesFind: invalid userWithRulesFind"),F.error({event:"api/getPermUserInfor-error",msg:"userIdNoPermrules"}),Promise.reject("userIdNoPermrules"))})();return zr(r.msg)&&(r.msg=r.msg.message),r}},{method:"POST",path:"/syncAndReplaceTabs",handler:async function(e,t){let r=await Ur(async function(){let t=ye(e,"query.token","");if(!er(t))return console.log("req.query",yc(ye(e,"query"))),console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check token: invalid token"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let r=ye(e,"query.keyTable","");if(!er(r))return console.log("req.query",yc(ye(e,"query"))),console.log("keyTable",r),console.log("[API]syncAndReplaceTabs/check keyTable: invalid keyTable"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");if(!["targets","pemis","grups","users"].includes(r))return console.log("[API]syncAndReplaceTabs/check keyTable: unexpected keyTable",r),F.error({event:"api/syncAndReplaceTabs-error",msg:"invalidKeyTable",keyTable:r}),Promise.reject("invalidKeyTable");let n=await _(t,"syncAndReplaceTabs");if(!_t(n))return console.log("token",wc(t)),console.log("[API]syncAndReplaceTabs/check user: invalid user"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let s=ye(n,"id","");if(!er(s))return console.log("token",wc(t)),console.log("user",n),console.log("[API]syncAndReplaceTabs/check userId: invalid userId"),F.error({event:"api/syncAndReplaceTabs-error",msg:"tokenNoPermission"}),Promise.reject("tokenNoPermission");let i=await(async e=>{let t=ye(e,"payload");if(er(t)&&(t=Kr(t)),!_t(t))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidPayload"}),Promise.reject("invalidPayload");let r=ye(t,"from","");if(!er(r))return console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidFromInPayload"}),Promise.reject("invalidFromInPayload");let n=ye(t,"rows",[]);return Er(n)?{from:r,rows:n}:(console.log("payload",t),F.error({event:"parsePayload-error",msg:"invalidRowsInPayload"}),Promise.reject("invalidRowsInPayload"))})(e),u=await ee(s,i,r);return F.info({event:"api/syncAndReplaceTabs-success",userId:s,keyTable:r}),u})();return zr(r.msg)&&(r.msg=r.msg.message),r}}],oe=at(da),le=oe,ae={port:c,pathStaticFiles:ne,apiName:"api",apis:ue,tokenType:"Bearer",verifyConn:async({apiType:e,authorization:t,query:r,headers:n,req:s})=>{let i=function(e,t){return er(e)&&Fr(t)?0===(t=fr(t))?e:Vr(e,e.length-t):""}(t,7);if(!er(i))return console.log("apiType",e),console.log("authorization",wc(t)),console.log("invalid token"),F.error({event:"verifyConn-error",ok:!1,apiType:e,msg:"tokenNoPermission"}),!1;let u=!1,o="";await q(i,e).then(()=>{u=!0}).catch(e=>{o="string"==typeof e?e:e&&e.message||"checkTokenFail"});let l=ye(n,"x-forwarded-for","").split(",")[0].trim();er(l)||(l=ye(s,"info.remoteAddress","")||ye(s,"socket.remoteAddress","")||ye(s,"connection.remoteAddress",""));let a=ye(n,"origin",""),c=gc(ye(n,"referer",""));return u?F.info({event:"verifyConn",ok:u,apiType:e,ip:l,origin:a,referer:c}):F.error({event:"verifyConn-error",ok:u,apiType:e,ip:l,origin:a,referer:c,msg:o}),u},getUserIdByToken:async e=>{let t=ye(await i(e),"id","");return er(t)?t:(console.log("token",wc(e)),console.log("userId",t),F.error({event:"getUserIdByToken-error",msg:"cannotFindUserId"}),Promise.reject("cannotFindUserId"))},corsOrigins:["*"],useDbOrm:!0,kpOrm:H,operOrm:fc(U,{srLog:F}),tableNamesExec:oe,methodsExec:["select"],authorizeExec:pc({srLog:F}),tableNamesSync:le,kpFunExt:{getWebInfor:e=>(F.info({event:"getWebInfor-success",userId:e}),{webLogo:M,showLanguage:m,language:C,kpLang:K,showModeEditTargets:p,showModeEditPemis:f,showModeEditGrups:L,showModeEditUsers:h,modeEditTargets:b,modeEditPemis:N,modeEditGrups:A,modeEditUsers:x,widthTargetId:E,widthTargetDescription:T,widthPemisName:S,widthPemisDescription:Z,widthGrupsName:v,widthGrupsDescription:Y,widthUsersName:X,widthUsersEmail:j,widthUsersDescription:z}),updateTargets:R.updateTargets,updatePemis:R.updatePemis,updateGrups:R.updateGrups,updateUsers:(e,t)=>{let r="for:grups"===x?{pickKeysOnly:["cgrups"]}:{};return R.updateUsers(e,t,r)},getStaEvent:async(e,t,r)=>{try{let n=await P.getStaEvent(e,t,r);return F.info({event:"getStaEvent-success",userId:e}),n}catch(t){throw F.error({event:"getStaEvent-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEvent"}),t}},getStaEventTable:async e=>{try{let t=await P.getStaEventTable(e);return F.info({event:"getStaEventTable-success",userId:e}),t}catch(t){throw F.error({event:"getStaEventTable-error",userId:e,msg:"string"==typeof t?t:t&&t.message||"cannotGetStaEventTable"}),t}}},fpTableTags:"tableTags-web-perm.json"};try{a=new Hu(ae)}catch(e){throw console.log(e),F.error({event:"WServHapiServer-init-error",msg:e&&e.message||"WServHapiServerInitFailed"}),e}return a}});
|
|
7
7
|
//# sourceMappingURL=w-web-perm.umd.js.map
|