w-converhp 2.0.8 → 2.0.11
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 +66 -1
- package/dist/w-converhp-client.umd.js +2 -2
- package/dist/w-converhp-client.umd.js.map +1 -1
- package/dist/w-converhp-server.umd.js +2 -2
- package/dist/w-converhp-server.umd.js.map +1 -1
- package/docs/WConverhpClient.html +3 -3
- package/docs/WConverhpClient.mjs.html +164 -6
- package/docs/WConverhpServer.html +3 -3
- package/docs/WConverhpServer.mjs.html +258 -71
- package/docs/index.html +1 -1
- package/package.json +3 -3
- package/sclc.mjs +4 -2
- package/scld.mjs +54 -0
- package/src/WConverhpClient.mjs +162 -4
- package/src/WConverhpServer.mjs +257 -70
- package/src/mergeFiles.mjs +16 -105
- package/src/mergeFiles.wk.umd.js +1 -1
- package/srv.mjs +39 -1
- package/test/1mb.7z +0 -0
- package/test/downloadLargeFile.test.mjs +166 -0
- package/test/executeWithFile.test.mjs +1 -1
- package/test/uploadLargeFile.test.mjs +5 -5
- package/web.html +28 -1
package/src/mergeFiles.wk.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(g,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],e):(g="undefined"!=typeof globalThis?globalThis:g||self).mergeFiles=e(g.worker_threads)}(this,(function(g){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var e={};!function(e,C){e.exports=function(g){var e={};!function(g){var e=Object.prototype.hasOwnProperty,C="~";function I(){}function t(g,e,C){this.fn=g,this.context=e,this.once=C||!1}function n(g,e,I,n,A){if("function"!=typeof I)throw new TypeError("The listener must be a function");var o=new t(I,n||g,A),c=C?C+e:e;return g._events[c]?g._events[c].fn?g._events[c]=[g._events[c],o]:g._events[c].push(o):(g._events[c]=o,g._eventsCount++),g}function A(g,e){0==--g._eventsCount?g._events=new I:delete g._events[e]}function o(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(C=!1)),o.prototype.eventNames=function(){var g,I,t=[];if(0===this._eventsCount)return t;for(I in g=this._events)e.call(g,I)&&t.push(C?I.slice(1):I);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(g)):t},o.prototype.listeners=function(g){var e=C?C+g:g,I=this._events[e];if(!I)return[];if(I.fn)return[I.fn];for(var t=0,n=I.length,A=new Array(n);t<n;t++)A[t]=I[t].fn;return A},o.prototype.listenerCount=function(g){var e=C?C+g:g,I=this._events[e];return I?I.fn?1:I.length:0},o.prototype.emit=function(g,e,I,t,n,A){var o=C?C+g:g;if(!this._events[o])return!1;var c,i,r=this._events[o],l=arguments.length;if(r.fn){switch(r.once&&this.removeListener(g,r.fn,void 0,!0),l){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,e),!0;case 3:return r.fn.call(r.context,e,I),!0;case 4:return r.fn.call(r.context,e,I,t),!0;case 5:return r.fn.call(r.context,e,I,t,n),!0;case 6:return r.fn.call(r.context,e,I,t,n,A),!0}for(i=1,c=new Array(l-1);i<l;i++)c[i-1]=arguments[i];r.fn.apply(r.context,c)}else{var s,u=r.length;for(i=0;i<u;i++)switch(r[i].once&&this.removeListener(g,r[i].fn,void 0,!0),l){case 1:r[i].fn.call(r[i].context);break;case 2:r[i].fn.call(r[i].context,e);break;case 3:r[i].fn.call(r[i].context,e,I);break;case 4:r[i].fn.call(r[i].context,e,I,t);break;default:if(!c)for(s=1,c=new Array(l-1);s<l;s++)c[s-1]=arguments[s];r[i].fn.apply(r[i].context,c)}}return!0},o.prototype.on=function(g,e,C){return n(this,g,e,C,!1)},o.prototype.once=function(g,e,C){return n(this,g,e,C,!0)},o.prototype.removeListener=function(g,e,I,t){var n=C?C+g:g;if(!this._events[n])return this;if(!e)return A(this,n),this;var o=this._events[n];if(o.fn)o.fn!==e||t&&!o.once||I&&o.context!==I||A(this,n);else{for(var c=0,i=[],r=o.length;c<r;c++)(o[c].fn!==e||t&&!o[c].once||I&&o[c].context!==I)&&i.push(o[c]);i.length?this._events[n]=1===i.length?i[0]:i:A(this,n)}return this},o.prototype.removeAllListeners=function(g){var e;return g?(e=C?C+g:g,this._events[e]&&A(this,e)):(this._events=new I,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=C,o.EventEmitter=o,g.exports=o}({get exports(){return e},set exports(g){e=g}});var C=e;let I;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let e=(t="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgZT1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHQoKXtsZXQgZSxyLHQ9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7ZT1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHQucmVzb2x2ZT1lLHQucmVqZWN0PXIsdH1mdW5jdGlvbiBuKGUpe3JldHVybiEhci5leGlzdHNTeW5jKGUpJiYoIXIubHN0YXRTeW5jKGUpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyhlKS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBpKGUpe2lmKCFyLmV4aXN0c1N5bmMoZSkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrZX07aWYoIW4oZSkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGlzIG5vdCBhIGZpbGU6ICIrZX07dHJ5e3IudW5saW5rU3luYyhlKX1jYXRjaChlKXtyZXR1cm57ZXJyb3I6ZX19cmV0dXJue3N1Y2Nlc3M6ImRvbmU6ICIrZX19bGV0IG1lcmdlRmlsZXM9YXN5bmMocyxvLGMsYSk9PntsZXQgdT0iIixsPXQoKTt0cnl7bGV0IGY9ZS5qb2luKHMsbyksbT1yLmNyZWF0ZVdyaXRlU3RyZWFtKGYpO2ZvcihsZXQgbD0wO2w8YztsKyspe2xldCBjPWwsZj1lLmpvaW4ocyxgJHtvfV8ke2N9YCk7aWYoIW4oZikpdGhyb3cgbmV3IEVycm9yKGBtaXNzaW5nIGNodW5rICR7bH0gb2YgZmlsZW5hbWVbJHthfV1gKTtsZXQgeT0oKT0+e2xldCBlPXQoKSxuPXIuY3JlYXRlUmVhZFN0cmVhbShmKTtyZXR1cm4gbi5vbigiZXJyb3IiLChyPT57dT1yLm1lc3NhZ2UsZS5yZWplY3Qocil9KSksbi5vbigiZW5kIiwoKCk9PntpKGYpLGUucmVzb2x2ZSgpfSkpLG4ucGlwZShtLHtlbmQ6ITF9KSxlfTthd2FpdCB5KCl9bS5lbmQoKSxtLm9uKCJlcnJvciIsKGU9Pnt1PWUubWVzc2FnZSxsLnJlamVjdCh1KX0pKSxtLm9uKCJmaW5pc2giLCgoKT0+e2xldCBlPXtmaWxlbmFtZTphLHBhdGg6Zn07bC5yZXNvbHZlKGUpfSkpfWNhdGNoKGUpe3U9ZS5tZXNzYWdlLGwucmVqZWN0KHUpfXJldHVybiBsfTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IG1lcmdlRmlsZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VGaWxlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(t,"base64").toString("utf8"));var t;function n(){let I=new C,t=function(e){try{return new g.Worker(e,{eval:!0})}catch(g){A(g)}}(e);if(!t)return A("invalid worker"),null;function n(){let g=function(){let g,e,C=new Promise((function(){g=arguments[0],e=arguments[1]}));return C.resolve=g,C.reject=e,C}(),e=function(){let g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],C="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=C.length;for(let t=0;t<g;t++)e[t]=C[0|Math.random()*I];return e.join("")}(),C={mode:"call",id:e,fun:"main",input:[...arguments]};return t.postMessage(C),I.once(e,(e=>{"success"===e.state?g.resolve(e.msg):g.reject(e.msg)})),g}function A(g){I.emit("error",g)}return t.on("message",(function(g){let e=g,C=e.mode;"emit"!==C&&"return"!==C||("emit"===C&&I.emit(e.evName,e.msg),"return"===C&&I.emit(e.id,e))})),t.on("error",A),t.on("exit",(g=>{1!==g&&A("exit code["+g+"] !== 1")})),function(){let g={mode:"init",type:"function",input:[...arguments]};t.postMessage(g)}([...arguments]),I.main=n,I.main=n,I.terminate=function(){t?(t.terminate(),t=void 0):A("worker has been terminated")},I}I=async function(){let g=[...arguments],e=n();return await e.main(...g).finally((()=>{e.terminate()}))}}();try{process.on("unhandledRejection",(g=>{console.log("outer:unhandledRejection",g)})),process.on("uncaughtException",(g=>{console.log("outer:uncaughtException",g)})),process.on("uncaughtExceptionMonitor",(g=>{console.log("outer:uncaughtExceptionMonitor",g)}))}catch(g){}return I}(g)}({get exports(){return e},set exports(g){e=g}});var C=e,I={};!function(g,e){g.exports=function(){const g="function"==typeof Buffer,e="function"==typeof TextDecoder?new TextDecoder:void 0,C=(g=>{let e={};return g.forEach(((g,C)=>e[g]=C)),e})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),I=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,t=String.fromCharCode.bind(String),n="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):g=>new Uint8Array(Array.prototype.slice.call(g,0)),A=g=>g.replace(/[^A-Za-z0-9\+\/]/g,""),o=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,c=g=>{switch(g.length){case 4:var e=((7&g.charCodeAt(0))<<18|(63&g.charCodeAt(1))<<12|(63&g.charCodeAt(2))<<6|63&g.charCodeAt(3))-65536;return t(55296+(e>>>10))+t(56320+(1023&e));case 3:return t((15&g.charCodeAt(0))<<12|(63&g.charCodeAt(1))<<6|63&g.charCodeAt(2));default:return t((31&g.charCodeAt(0))<<6|63&g.charCodeAt(1))}},i=g=>g.replace(o,c),r=g=>{if(g=g.replace(/\s+/g,""),!I.test(g))throw new TypeError("malformed base64.");g+="==".slice(2-(3&g.length));let e,n,A,o="";for(let I=0;I<g.length;)e=C[g.charAt(I++)]<<18|C[g.charAt(I++)]<<12|(n=C[g.charAt(I++)])<<6|(A=C[g.charAt(I++)]),o+=64===n?t(e>>16&255):64===A?t(e>>16&255,e>>8&255):t(e>>16&255,e>>8&255,255&e);return o},l="function"==typeof atob?g=>atob(A(g)):g?g=>Buffer.from(g,"base64").toString("binary"):r,s=g?g=>n(Buffer.from(g,"base64")):g=>n(l(g).split("").map((g=>g.charCodeAt(0)))),u=g?g=>Buffer.from(g,"base64").toString("utf8"):e?g=>e.decode(s(g)):g=>i(l(g)),a=g=>A(g.replace(/[-_]/g,(g=>"-"==g?"+":"/"))),d=g=>u(a(g)),p=d;var b={};!function(g){var e=Object.prototype.hasOwnProperty,C="~";function I(){}function t(g,e,C){this.fn=g,this.context=e,this.once=C||!1}function n(g,e,I,n,A){if("function"!=typeof I)throw new TypeError("The listener must be a function");var o=new t(I,n||g,A),c=C?C+e:e;return g._events[c]?g._events[c].fn?g._events[c]=[g._events[c],o]:g._events[c].push(o):(g._events[c]=o,g._eventsCount++),g}function A(g,e){0==--g._eventsCount?g._events=new I:delete g._events[e]}function o(){this._events=new I,this._eventsCount=0}Object.create&&(I.prototype=Object.create(null),(new I).__proto__||(C=!1)),o.prototype.eventNames=function(){var g,I,t=[];if(0===this._eventsCount)return t;for(I in g=this._events)e.call(g,I)&&t.push(C?I.slice(1):I);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(g)):t},o.prototype.listeners=function(g){var e=C?C+g:g,I=this._events[e];if(!I)return[];if(I.fn)return[I.fn];for(var t=0,n=I.length,A=new Array(n);t<n;t++)A[t]=I[t].fn;return A},o.prototype.listenerCount=function(g){var e=C?C+g:g,I=this._events[e];return I?I.fn?1:I.length:0},o.prototype.emit=function(g,e,I,t,n,A){var o=C?C+g:g;if(!this._events[o])return!1;var c,i,r=this._events[o],l=arguments.length;if(r.fn){switch(r.once&&this.removeListener(g,r.fn,void 0,!0),l){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,e),!0;case 3:return r.fn.call(r.context,e,I),!0;case 4:return r.fn.call(r.context,e,I,t),!0;case 5:return r.fn.call(r.context,e,I,t,n),!0;case 6:return r.fn.call(r.context,e,I,t,n,A),!0}for(i=1,c=new Array(l-1);i<l;i++)c[i-1]=arguments[i];r.fn.apply(r.context,c)}else{var s,u=r.length;for(i=0;i<u;i++)switch(r[i].once&&this.removeListener(g,r[i].fn,void 0,!0),l){case 1:r[i].fn.call(r[i].context);break;case 2:r[i].fn.call(r[i].context,e);break;case 3:r[i].fn.call(r[i].context,e,I);break;case 4:r[i].fn.call(r[i].context,e,I,t);break;default:if(!c)for(s=1,c=new Array(l-1);s<l;s++)c[s-1]=arguments[s];r[i].fn.apply(r[i].context,c)}}return!0},o.prototype.on=function(g,e,C){return n(this,g,e,C,!1)},o.prototype.once=function(g,e,C){return n(this,g,e,C,!0)},o.prototype.removeListener=function(g,e,I,t){var n=C?C+g:g;if(!this._events[n])return this;if(!e)return A(this,n),this;var o=this._events[n];if(o.fn)o.fn!==e||t&&!o.once||I&&o.context!==I||A(this,n);else{for(var c=0,i=[],r=o.length;c<r;c++)(o[c].fn!==e||t&&!o[c].once||I&&o[c].context!==I)&&i.push(o[c]);i.length?this._events[n]=1===i.length?i[0]:i:A(this,n)}return this},o.prototype.removeAllListeners=function(g){var e;return g?(e=C?C+g:g,this._events[e]&&A(this,e)):(this._events=new I,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=C,o.EventEmitter=o,g.exports=o}({get exports(){return b},set exports(g){b=g}});var m=b;let Z;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let g=p("CgoKInVzZSBzdHJpY3QiO3ZhciBlPXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gdCgpe2xldCBlLHIsdD1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXtlPWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gdC5yZXNvbHZlPWUsdC5yZWplY3Q9cix0fWZ1bmN0aW9uIG4oZSl7cmV0dXJuISFyLmV4aXN0c1N5bmMoZSkmJighci5sc3RhdFN5bmMoZSkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKGUpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGkoZSl7aWYoIXIuZXhpc3RzU3luYyhlKSlyZXR1cm57c3VjY2VzczoiZmlsZSBkb2VzIG5vdCBleGlzdDogIitlfTtpZighbihlKSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIitlfTt0cnl7ci51bmxpbmtTeW5jKGUpfWNhdGNoKGUpe3JldHVybntlcnJvcjplfX1yZXR1cm57c3VjY2VzczoiZG9uZTogIitlfX1sZXQgbWVyZ2VGaWxlcz1hc3luYyhzLG8sYyxhKT0+e2xldCB1PSIiLGw9dCgpO3RyeXtsZXQgZj1lLmpvaW4ocyxvKSxtPXIuY3JlYXRlV3JpdGVTdHJlYW0oZik7Zm9yKGxldCBsPTA7bDxjO2wrKyl7bGV0IGM9bCxmPWUuam9pbihzLGAke299XyR7Y31gKTtpZighbihmKSl0aHJvdyBuZXcgRXJyb3IoYG1pc3NpbmcgY2h1bmsgJHtsfSBvZiBmaWxlbmFtZVske2F9XWApO2xldCB5PSgpPT57bGV0IGU9dCgpLG49ci5jcmVhdGVSZWFkU3RyZWFtKGYpO3JldHVybiBuLm9uKCJlcnJvciIsKHI9Pnt1PXIubWVzc2FnZSxlLnJlamVjdChyKX0pKSxuLm9uKCJlbmQiLCgoKT0+e2koZiksZS5yZXNvbHZlKCl9KSksbi5waXBlKG0se2VuZDohMX0pLGV9O2F3YWl0IHkoKX1tLmVuZCgpLG0ub24oImVycm9yIiwoZT0+e3U9ZS5tZXNzYWdlLGwucmVqZWN0KHUpfSkpLG0ub24oImZpbmlzaCIsKCgpPT57bGV0IGU9e2ZpbGVuYW1lOmEscGF0aDpmfTtsLnJlc29sdmUoZSl9KSl9Y2F0Y2goZSl7dT1lLm1lc3NhZ2UsbC5yZWplY3QodSl9cmV0dXJuIGx9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VGaWxlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZUZpbGVzCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function e(){let e=new m,C=function(g){try{let e=new Blob([g]),C=window.URL||window.webkitURL;return new Worker(C.createObjectURL(e))}catch(g){t(g)}}(g);if(!C)return t("invalid worker"),null;function I(){let g=function(){let g,e,C=new Promise((function(){g=arguments[0],e=arguments[1]}));return C.resolve=g,C.reject=e,C}(),I=function(){let g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,e=[],C="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),I=C.length;for(let t=0;t<g;t++)e[t]=C[0|Math.random()*I];return e.join("")}(),t={mode:"call",id:I,fun:"main",input:[...arguments]};return C.postMessage(t),e.once(I,(e=>{"success"===e.state?g.resolve(e.msg):g.reject(e.msg)})),g}function t(g){e.emit("error",g)}return C.onmessage=function(g){!function(g){let C=g,I=C.mode;"emit"!==I&&"return"!==I||("emit"===I&&e.emit(C.evName,C.msg),"return"===I&&e.emit(C.id,C))}(g.data)},C.onerror=t,C.onmessageerror=function(g){t(g.data)},function(){let g={mode:"init",type:"function",input:[...arguments]};C.postMessage(g)}([...arguments]),e.main=I,e.main=I,e.terminate=function(){C?(C.terminate(),C=void 0):t("worker has been terminated")},e}Z=async function(){let g=[...arguments],C=e();return await C.main(...g).finally((()=>{C.terminate()}))}}();try{process.on("unhandledRejection",(g=>{console.log("outer:unhandledRejection",g)})),process.on("uncaughtException",(g=>{console.log("outer:uncaughtException",g)})),process.on("uncaughtExceptionMonitor",(g=>{console.log("outer:uncaughtExceptionMonitor",g)}))}catch(g){}return Z}()}({get exports(){return I},set exports(g){I=g}});var t=I;let n;return n="undefined"!=typeof window&&void 0!==window.document?t:C,n}));
|
|
1
|
+
!function(I,C){"object"==typeof exports&&"undefined"!=typeof module?module.exports=C(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],C):(I="undefined"!=typeof globalThis?globalThis:I||self).mergeFiles=C(I.worker_threads)}(this,(function(I){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var C={};!function(C,g){C.exports=function(I){var C={};!function(I){var C=Object.prototype.hasOwnProperty,g="~";function e(){}function t(I,C,g){this.fn=I,this.context=C,this.once=g||!1}function c(I,C,e,c,d){if("function"!=typeof e)throw new TypeError("The listener must be a function");var n=new t(e,c||I,d),i=g?g+C:C;return I._events[i]?I._events[i].fn?I._events[i]=[I._events[i],n]:I._events[i].push(n):(I._events[i]=n,I._eventsCount++),I}function d(I,C){0==--I._eventsCount?I._events=new e:delete I._events[C]}function n(){this._events=new e,this._eventsCount=0}Object.create&&(e.prototype=Object.create(null),(new e).__proto__||(g=!1)),n.prototype.eventNames=function(){var I,e,t=[];if(0===this._eventsCount)return t;for(e in I=this._events)C.call(I,e)&&t.push(g?e.slice(1):e);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(I)):t},n.prototype.listeners=function(I){var C=g?g+I:I,e=this._events[C];if(!e)return[];if(e.fn)return[e.fn];for(var t=0,c=e.length,d=new Array(c);t<c;t++)d[t]=e[t].fn;return d},n.prototype.listenerCount=function(I){var C=g?g+I:I,e=this._events[C];return e?e.fn?1:e.length:0},n.prototype.emit=function(I,C,e,t,c,d){var n=g?g+I:I;if(!this._events[n])return!1;var i,l,o=this._events[n],m=arguments.length;if(o.fn){switch(o.once&&this.removeListener(I,o.fn,void 0,!0),m){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,C),!0;case 3:return o.fn.call(o.context,C,e),!0;case 4:return o.fn.call(o.context,C,e,t),!0;case 5:return o.fn.call(o.context,C,e,t,c),!0;case 6:return o.fn.call(o.context,C,e,t,c,d),!0}for(l=1,i=new Array(m-1);l<m;l++)i[l-1]=arguments[l];o.fn.apply(o.context,i)}else{var A,b=o.length;for(l=0;l<b;l++)switch(o[l].once&&this.removeListener(I,o[l].fn,void 0,!0),m){case 1:o[l].fn.call(o[l].context);break;case 2:o[l].fn.call(o[l].context,C);break;case 3:o[l].fn.call(o[l].context,C,e);break;case 4:o[l].fn.call(o[l].context,C,e,t);break;default:if(!i)for(A=1,i=new Array(m-1);A<m;A++)i[A-1]=arguments[A];o[l].fn.apply(o[l].context,i)}}return!0},n.prototype.on=function(I,C,g){return c(this,I,C,g,!1)},n.prototype.once=function(I,C,g){return c(this,I,C,g,!0)},n.prototype.removeListener=function(I,C,e,t){var c=g?g+I:I;if(!this._events[c])return this;if(!C)return d(this,c),this;var n=this._events[c];if(n.fn)n.fn!==C||t&&!n.once||e&&n.context!==e||d(this,c);else{for(var i=0,l=[],o=n.length;i<o;i++)(n[i].fn!==C||t&&!n[i].once||e&&n[i].context!==e)&&l.push(n[i]);l.length?this._events[c]=1===l.length?l[0]:l:d(this,c)}return this},n.prototype.removeAllListeners=function(I){var C;return I?(C=g?g+I:I,this._events[C]&&d(this,C)):(this._events=new e,this._eventsCount=0),this},n.prototype.off=n.prototype.removeListener,n.prototype.addListener=n.prototype.on,n.prefixed=g,n.EventEmitter=n,I.exports=n}({get exports(){return C},set exports(I){C=I}});var g=C;let e;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let C=(t="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIikscj1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIGUoKXtsZXQgdCxyLGU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV19KSk7cmV0dXJuIGUucmVzb2x2ZT10LGUucmVqZWN0PXIsZX1mdW5jdGlvbiBuKHQpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gaSh0KXtpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2ZvcihsZXQgciBpbiB0KXJldHVybiExO3JldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG8odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBjKHQpe3JldHVybiEhZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgVW5kZWZpbmVkXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdWxsXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwoISFpKHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hKCFvKHQpfHwiIiE9PXQpfSh0KXx8KCEhZnVuY3Rpb24odCl7cmV0dXJuISFuKHQpJiYwPT09dC5sZW5ndGh9KHQpfHwhIXUodCkpKSkpfWZ1bmN0aW9uIGYodCl7cmV0dXJuISghbyh0KXx8IiI9PT10KX12YXIgbD0vXHMvO3ZhciBhPS9eXHMrLztmdW5jdGlvbiBzKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZsLnRlc3QodC5jaGFyQXQocikpOyk7cmV0dXJuIHJ9KHQpKzEpLnJlcGxhY2UoYSwiIik6dH1mdW5jdGlvbiBwKHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PXJ8fCJmdW5jdGlvbiI9PXIpfXZhciB5PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxiPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaD15fHxifHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHY9aC5TeW1ib2wsZz1PYmplY3QucHJvdG90eXBlLGo9Zy5oYXNPd25Qcm9wZXJ0eSxTPWcudG9TdHJpbmcsZD12P3YudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBtPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIE89IltvYmplY3QgTnVsbF0iLHg9IltvYmplY3QgVW5kZWZpbmVkXSIsUj12P3YudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIHcodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD94Ok86UiYmUiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIHI9ai5jYWxsKHQsZCksZT10W2RdO3RyeXt0W2RdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIGk9Uy5jYWxsKHQpO3JldHVybiBuJiYocj90W2RdPWU6ZGVsZXRlIHRbZF0pLGl9KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBtLmNhbGwodCl9KHQpfXZhciBOPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uICQodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmdyh0KT09Tn12YXIgQT1OYU4saz0vXlstK10weFswLTlhLWZdKyQvaSxGPS9eMGJbMDFdKyQvaSxJPS9eMG9bMC03XSskL2kscT1wYXJzZUludDtmdW5jdGlvbiBFKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZigkKHQpKXJldHVybiBBO2lmKHAodCkpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PXAocik/cisiIjpyfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PXModCk7dmFyIGU9Ri50ZXN0KHQpO3JldHVybiBlfHxJLnRlc3QodCk/cSh0LnNsaWNlKDIpLGU/Mjo4KTprLnRlc3QodCk/QTordH12YXIgTD0xLzAsTT0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gUCh0KXtyZXR1cm4gdD8odD1FKHQpKT09PUx8fHQ9PT0tTD8odDwwPy0xOjEpKk06dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIFQodCl7dmFyIHI9UCh0KSxlPXIlMTtyZXR1cm4gcj09cj9lP3ItZTpyOjB9ZnVuY3Rpb24gVSh0KXtsZXQgcj0hMTtpZihmKHQpKXI9IWlzTmFOKE51bWJlcih0KSk7ZWxzZSBpZihmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBOdW1iZXJdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCkpe2lmKHUodCkpcmV0dXJuITE7cj0hMH1yZXR1cm4gcn1mdW5jdGlvbiBEKHQpe2lmKCFVKHQpKXJldHVybiAwO3JldHVybiBQKHQpfWZ1bmN0aW9uIFcodCl7cmV0dXJuISFVKHQpJiYodD1EKHQpLCJudW1iZXIiPT10eXBlb2Yocj10KSYmcj09VChyKSk7dmFyIHJ9dmFyIF89QXJyYXkuaXNBcnJheSx6PTEvMCxCPXY/di5wcm90b3R5cGU6dm9pZCAwLEM9Qj9CLnRvU3RyaW5nOnZvaWQgMDtmdW5jdGlvbiBHKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihfKHQpKXJldHVybiBmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPUFycmF5KG4pOysrZTxuOylpW2VdPXIodFtlXSxlLHQpO3JldHVybiBpfSh0LEcpKyIiO2lmKCQodCkpcmV0dXJuIEM/Qy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS16PyItMCI6cn1mdW5jdGlvbiBIKHQpe3JldHVybiBudWxsPT10PyIiOkcodCl9dmFyIEo9aC5pc0Zpbml0ZSxLPU1hdGgubWluO3ZhciBRLFY9KFE9TWF0aFsicm91bmQiXSxmdW5jdGlvbih0LHIpe2lmKHQ9RSh0KSwocj1udWxsPT1yPzA6SyhUKHIpLDI5MikpJiZKKHQpKXt2YXIgZT0oSCh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoZT0oSChRKGVbMF0rImUiKygrZVsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrZVsxXS1yKSl9cmV0dXJuIFEodCl9KTtmdW5jdGlvbiBYKHQpe2lmKCFVKHQpKXJldHVybiAwO3Q9RCh0KTtsZXQgcj1WKHQpO3JldHVybiIwIj09PVN0cmluZyhyKT8wOnJ9ZnVuY3Rpb24gWSh0KXtpZighVyh0KSlyZXR1cm4hMTtyZXR1cm4gWCh0KT49MH1mdW5jdGlvbiBaKHQscil7aWYoIWYodCkpcmV0dXJuIiI7aWYoIVkocikpcmV0dXJuIiI7aWYoMD09PShyPVgocikpKXJldHVybiIiO2xldCBlPXQubGVuZ3RoLXI7cmV0dXJuIGU8MCYmKGU9MCksdC5zdWJzdHJpbmcoZSxlK3IpfWZ1bmN0aW9uIHR0KHQscil7cmV0dXJuIGYodCkmJlkocik/MD09PShyPVgocikpP3Q6ZnVuY3Rpb24odCxyKXtyZXR1cm4gZih0KSYmWShyKT8wPT09KHI9WChyKSk/IiI6dC5zdWJzdHJpbmcoMCxyKToiIn0odCx0Lmxlbmd0aC1yKToiIn1mdW5jdGlvbiBydCh0KXtpZighZih0KSlyZXR1cm57cGF0aDoiIixpc1Jvb3Q6ITF9O2Zvcig7dC5pbmRleE9mKCJcXFxcIik+PTA7KXQ9dC5yZXBsYWNlKCJcXFxcIiwiXFwiKTtmb3IoO3QuaW5kZXhPZigiLy8iKT49MDspdD10LnJlcGxhY2UoIi8vIiwiLyIpO2lmKCI6Ij09PVoodCwxKSlyZXR1cm57cGF0aDpgJHt0fVxcYCxpc1Jvb3Q6ITB9O2lmKCJcXCI9PT1aKHQsMSkpe2xldCByPXR0KHQsMSk7cmV0dXJuIjoiPT09WihyLDEpP3twYXRoOnQsaXNSb290OiEwfTp7cGF0aDpyLGlzUm9vdDohMX19aWYoIi8iPT09Wih0LDEpKXtsZXQgcj10dCh0LDEpO3JldHVybiAwPT09ci5sZW5ndGg/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1yZXR1cm57cGF0aDp0LGlzUm9vdDohMX19ZnVuY3Rpb24gZXQodCl7aWYoIWYodCkpcmV0dXJuIiI7bGV0IHI9cnQodCk7aWYoci5pc1Jvb3QpcmV0dXJuIHIucGF0aDtsZXQgZT1mdW5jdGlvbih0KXtpZighZih0KSlyZXR1cm4iIjtsZXQgcj1ydCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPXIucGF0aDt0cnl7ZT1lLnNwbGl0KCJcXCIpLnBvcCgpLnNwbGl0KCIvIikucG9wKCl9Y2F0Y2godCl7fXJldHVybiBlfSh0PXIucGF0aCk7aWYoIWYoZSkpcmV0dXJuIHQ7bGV0IG49cnQodD10dCh0LGUubGVuZ3RoKSk7cmV0dXJuIG4uaXNSb290LG4ucGF0aH1mdW5jdGlvbiBudCh0KXtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0ZpbGUoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIGl0KHQpe3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBvdCh0KXtpZighci5leGlzdHNTeW5jKHQpKXJldHVybntzdWNjZXNzOiJmaWxlIGRvZXMgbm90IGV4aXN0OiAiK3R9O2lmKCFpdCh0KSlyZXR1cm57ZXJyb3I6ImlucHV0IHBhdGggaXMgbm90IGEgZmlsZTogIit0fTt0cnl7ci51bmxpbmtTeW5jKHQpfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX1yZXR1cm57c3VjY2VzczoiZG9uZTogIit0fX1hc3luYyBmdW5jdGlvbiB1dCh0LGksbyl7bGV0IHU9IiI7aWYoIW4oZj1pKXx8MD09PWYubGVuZ3RofHwxPT09Zi5sZW5ndGgmJmMoZlswXSkpdGhyb3cgbmV3IEVycm9yKCJmcHNJbiBpbiBub3QgYW4gZWZmZWN0aXZlIGFycmF5Iik7dmFyIGY7bGV0IGw9ZXQobyk7bnQobCl8fGZ1bmN0aW9uKHQpe2lmKG50KHQpKXJldHVybntzdWNjZXNzOiJpbnB1dCBmb2xkZXIgaXMgYWxyZWFkeSBleGlzdHM6ICIrdH07aWYoci5leGlzdHNTeW5jKHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBhbHJlYWR5IGV4aXN0czogIit0fTt0cnl7ci5ta2RpclN5bmModCx7cmVjdXJzaXZlOiEwfSl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fX0obCk7bGV0IGE9ZSgpO3RyeXtsZXQgbj1yLmNyZWF0ZVdyaXRlU3RyZWFtKG8pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgbz1pW3RdO2lmKCFpdChvKSl0aHJvdyBuZXcgRXJyb3IoYGZwSW5bJHtvfV0gaXMgbm90IGEgZmlsZWApO2xldCBjPSgpPT57bGV0IHQ9ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKG8pO3JldHVybiBpLm9uKCJlcnJvciIsKHI9Pnt1PXIubWVzc2FnZSx0LnJlamVjdChyKX0pKSxpLm9uKCJlbmQiLCgoKT0+e290KG8pLHQucmVzb2x2ZSgpfSkpLGkucGlwZShuLHtlbmQ6ITF9KSx0fTthd2FpdCBjKCl9bi5lbmQoKSxuLm9uKCJlcnJvciIsKHQ9Pnt1PXQubWVzc2FnZSxhLnJlamVjdCh1KX0pKSxuLm9uKCJmaW5pc2giLCgoKT0+e2xldCByPXtmaWxlbmFtZTp0LHBhdGg6b307YS5yZXNvbHZlKHIpfSkpfWNhdGNoKHQpe3U9dC5tZXNzYWdlLGEucmVqZWN0KHUpfXJldHVybiBhfWxldCBtZXJnZUZpbGVzPWFzeW5jKHIsZSxuLGkpPT57bGV0IG89W107Zm9yKGxldCBpPTA7aTxuO2krKyl7bGV0IG49dC5qb2luKHIsYCR7ZX1fJHtpfWApO28ucHVzaChuKX1sZXQgdT10LmpvaW4ocixlKTtyZXR1cm4gYXdhaXQgdXQoaSxvLHUpfTsKCgpsZXQgaW5zdGFuY2UgPSBudWxsCmZ1bmN0aW9uIGluaXQoaW5wdXQpewoKICAgIC8vaW5pdAogICAgbGV0IHIKICAgIAogICAgICAgIHIgPSB7CiAgICAgICAgICAgIG1haW46IG1lcmdlRmlsZXMKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbWVyZ2VGaWxlcwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgcGFyZW50UG9ydC5vbignbWVzc2FnZScsIHJlY3ZNZXNzYWdlKQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==",Buffer.from(t,"base64").toString("utf8"));var t;function c(){let e=new g,t=function(C){try{return new I.Worker(C,{eval:!0})}catch(I){d(I)}}(C);if(!t)return d("invalid worker"),null;function c(){let I=function(){let I,C,g=new Promise((function(){I=arguments[0],C=arguments[1]}));return g.resolve=I,g.reject=C,g}(),C=function(){let I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,C=[],g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=g.length;for(let t=0;t<I;t++)C[t]=g[0|Math.random()*e];return C.join("")}(),g={mode:"call",id:C,fun:"main",input:[...arguments]};return t.postMessage(g),e.once(C,(C=>{"success"===C.state?I.resolve(C.msg):I.reject(C.msg)})),I}function d(I){e.emit("error",I)}return t.on("message",(function(I){let C=I,g=C.mode;"emit"!==g&&"return"!==g||("emit"===g&&e.emit(C.evName,C.msg),"return"===g&&e.emit(C.id,C))})),t.on("error",d),t.on("exit",(I=>{1!==I&&d("exit code["+I+"] !== 1")})),function(){let I={mode:"init",type:"function",input:[...arguments]};t.postMessage(I)}([...arguments]),e.main=c,e.main=c,e.terminate=function(){t?(t.terminate(),t=void 0):d("worker has been terminated")},e}e=async function(){let I=[...arguments],C=c();return await C.main(...I).finally((()=>{C.terminate()}))}}();try{process.on("unhandledRejection",(I=>{console.log("outer:unhandledRejection",I)})),process.on("uncaughtException",(I=>{console.log("outer:uncaughtException",I)})),process.on("uncaughtExceptionMonitor",(I=>{console.log("outer:uncaughtExceptionMonitor",I)}))}catch(I){}return e}(I)}({get exports(){return C},set exports(I){C=I}});var g=C,e={};!function(I,C){I.exports=function(){const I="function"==typeof Buffer,C="function"==typeof TextDecoder?new TextDecoder:void 0,g=(I=>{let C={};return I.forEach(((I,g)=>C[I]=g)),C})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),e=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,t=String.fromCharCode.bind(String),c="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):I=>new Uint8Array(Array.prototype.slice.call(I,0)),d=I=>I.replace(/[^A-Za-z0-9\+\/]/g,""),n=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,i=I=>{switch(I.length){case 4:var C=((7&I.charCodeAt(0))<<18|(63&I.charCodeAt(1))<<12|(63&I.charCodeAt(2))<<6|63&I.charCodeAt(3))-65536;return t(55296+(C>>>10))+t(56320+(1023&C));case 3:return t((15&I.charCodeAt(0))<<12|(63&I.charCodeAt(1))<<6|63&I.charCodeAt(2));default:return t((31&I.charCodeAt(0))<<6|63&I.charCodeAt(1))}},l=I=>I.replace(n,i),o=I=>{if(I=I.replace(/\s+/g,""),!e.test(I))throw new TypeError("malformed base64.");I+="==".slice(2-(3&I.length));let C,c,d,n="";for(let e=0;e<I.length;)C=g[I.charAt(e++)]<<18|g[I.charAt(e++)]<<12|(c=g[I.charAt(e++)])<<6|(d=g[I.charAt(e++)]),n+=64===c?t(C>>16&255):64===d?t(C>>16&255,C>>8&255):t(C>>16&255,C>>8&255,255&C);return n},m="function"==typeof atob?I=>atob(d(I)):I?I=>Buffer.from(I,"base64").toString("binary"):o,A=I?I=>c(Buffer.from(I,"base64")):I=>c(m(I).split("").map((I=>I.charCodeAt(0)))),b=I?I=>Buffer.from(I,"base64").toString("utf8"):C?I=>C.decode(A(I)):I=>l(m(I)),p=I=>d(I.replace(/[-_]/g,(I=>"-"==I?"+":"/"))),Z=I=>b(p(I)),u=Z;var X={};!function(I){var C=Object.prototype.hasOwnProperty,g="~";function e(){}function t(I,C,g){this.fn=I,this.context=C,this.once=g||!1}function c(I,C,e,c,d){if("function"!=typeof e)throw new TypeError("The listener must be a function");var n=new t(e,c||I,d),i=g?g+C:C;return I._events[i]?I._events[i].fn?I._events[i]=[I._events[i],n]:I._events[i].push(n):(I._events[i]=n,I._eventsCount++),I}function d(I,C){0==--I._eventsCount?I._events=new e:delete I._events[C]}function n(){this._events=new e,this._eventsCount=0}Object.create&&(e.prototype=Object.create(null),(new e).__proto__||(g=!1)),n.prototype.eventNames=function(){var I,e,t=[];if(0===this._eventsCount)return t;for(e in I=this._events)C.call(I,e)&&t.push(g?e.slice(1):e);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(I)):t},n.prototype.listeners=function(I){var C=g?g+I:I,e=this._events[C];if(!e)return[];if(e.fn)return[e.fn];for(var t=0,c=e.length,d=new Array(c);t<c;t++)d[t]=e[t].fn;return d},n.prototype.listenerCount=function(I){var C=g?g+I:I,e=this._events[C];return e?e.fn?1:e.length:0},n.prototype.emit=function(I,C,e,t,c,d){var n=g?g+I:I;if(!this._events[n])return!1;var i,l,o=this._events[n],m=arguments.length;if(o.fn){switch(o.once&&this.removeListener(I,o.fn,void 0,!0),m){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,C),!0;case 3:return o.fn.call(o.context,C,e),!0;case 4:return o.fn.call(o.context,C,e,t),!0;case 5:return o.fn.call(o.context,C,e,t,c),!0;case 6:return o.fn.call(o.context,C,e,t,c,d),!0}for(l=1,i=new Array(m-1);l<m;l++)i[l-1]=arguments[l];o.fn.apply(o.context,i)}else{var A,b=o.length;for(l=0;l<b;l++)switch(o[l].once&&this.removeListener(I,o[l].fn,void 0,!0),m){case 1:o[l].fn.call(o[l].context);break;case 2:o[l].fn.call(o[l].context,C);break;case 3:o[l].fn.call(o[l].context,C,e);break;case 4:o[l].fn.call(o[l].context,C,e,t);break;default:if(!i)for(A=1,i=new Array(m-1);A<m;A++)i[A-1]=arguments[A];o[l].fn.apply(o[l].context,i)}}return!0},n.prototype.on=function(I,C,g){return c(this,I,C,g,!1)},n.prototype.once=function(I,C,g){return c(this,I,C,g,!0)},n.prototype.removeListener=function(I,C,e,t){var c=g?g+I:I;if(!this._events[c])return this;if(!C)return d(this,c),this;var n=this._events[c];if(n.fn)n.fn!==C||t&&!n.once||e&&n.context!==e||d(this,c);else{for(var i=0,l=[],o=n.length;i<o;i++)(n[i].fn!==C||t&&!n[i].once||e&&n[i].context!==e)&&l.push(n[i]);l.length?this._events[c]=1===l.length?l[0]:l:d(this,c)}return this},n.prototype.removeAllListeners=function(I){var C;return I?(C=g?g+I:I,this._events[C]&&d(this,C)):(this._events=new e,this._eventsCount=0),this},n.prototype.off=n.prototype.removeListener,n.prototype.addListener=n.prototype.on,n.prefixed=g,n.EventEmitter=n,I.exports=n}({get exports(){return X},set exports(I){X=I}});var K=X;let y;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let I=u("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxyPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gZSgpe2xldCB0LHIsZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gZS5yZXNvbHZlPXQsZS5yZWplY3Q9cixlfWZ1bmN0aW9uIG4odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBpKHQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7Zm9yKGxldCByIGluIHQpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB0IT10fWZ1bmN0aW9uIGModCl7cmV0dXJuISFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBVbmRlZmluZWRdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bGxdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCghIWkodCl8fCghIWZ1bmN0aW9uKHQpe3JldHVybiEoIW8odCl8fCIiIT09dCl9KHQpfHwoISFmdW5jdGlvbih0KXtyZXR1cm4hIW4odCkmJjA9PT10Lmxlbmd0aH0odCl8fCEhdSh0KSkpKSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4hKCFvKHQpfHwiIj09PXQpfXZhciBsPS9ccy87dmFyIGE9L15ccysvO2Z1bmN0aW9uIHModCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJmwudGVzdCh0LmNoYXJBdChyKSk7KTtyZXR1cm4gcn0odCkrMSkucmVwbGFjZShhLCIiKTp0fWZ1bmN0aW9uIHAodCl7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09cnx8ImZ1bmN0aW9uIj09cil9dmFyIHk9Im9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsLGI9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixoPXl8fGJ8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksdj1oLlN5bWJvbCxnPU9iamVjdC5wcm90b3R5cGUsaj1nLmhhc093blByb3BlcnR5LFM9Zy50b1N0cmluZyxkPXY/di50b1N0cmluZ1RhZzp2b2lkIDA7dmFyIG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgTz0iW29iamVjdCBOdWxsXSIseD0iW29iamVjdCBVbmRlZmluZWRdIixSPXY/di50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10P3g6TzpSJiZSIGluIE9iamVjdCh0KT9mdW5jdGlvbih0KXt2YXIgcj1qLmNhbGwodCxkKSxlPXRbZF07dHJ5e3RbZF09dm9pZCAwO3ZhciBuPSEwfWNhdGNoKHQpe312YXIgaT1TLmNhbGwodCk7cmV0dXJuIG4mJihyP3RbZF09ZTpkZWxldGUgdFtkXSksaX0odCk6ZnVuY3Rpb24odCl7cmV0dXJuIG0uY2FsbCh0KX0odCl9dmFyIE49IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gJCh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9KHQpJiZ3KHQpPT1OfXZhciBBPU5hTixrPS9eWy0rXTB4WzAtOWEtZl0rJC9pLEY9L14wYlswMV0rJC9pLEk9L14wb1swLTddKyQvaSxxPXBhcnNlSW50O2Z1bmN0aW9uIEUodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKCQodCkpcmV0dXJuIEE7aWYocCh0KSl7dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9cChyKT9yKyIiOnJ9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9cyh0KTt2YXIgZT1GLnRlc3QodCk7cmV0dXJuIGV8fEkudGVzdCh0KT9xKHQuc2xpY2UoMiksZT8yOjgpOmsudGVzdCh0KT9BOit0fXZhciBMPTEvMCxNPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBQKHQpe3JldHVybiB0Pyh0PUUodCkpPT09THx8dD09PS1MPyh0PDA/LTE6MSkqTTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gVCh0KXt2YXIgcj1QKHQpLGU9ciUxO3JldHVybiByPT1yP2U/ci1lOnI6MH1mdW5jdGlvbiBVKHQpe2xldCByPSExO2lmKGYodCkpcj0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYodSh0KSlyZXR1cm4hMTtyPSEwfXJldHVybiByfWZ1bmN0aW9uIEQodCl7aWYoIVUodCkpcmV0dXJuIDA7cmV0dXJuIFAodCl9ZnVuY3Rpb24gVyh0KXtyZXR1cm4hIVUodCkmJih0PUQodCksIm51bWJlciI9PXR5cGVvZihyPXQpJiZyPT1UKHIpKTt2YXIgcn12YXIgXz1BcnJheS5pc0FycmF5LHo9MS8wLEI9dj92LnByb3RvdHlwZTp2b2lkIDAsQz1CP0IudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIEcodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKF8odCkpcmV0dXJuIGZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9QXJyYXkobik7KytlPG47KWlbZV09cih0W2VdLGUsdCk7cmV0dXJuIGl9KHQsRykrIiI7aWYoJCh0KSlyZXR1cm4gQz9DLmNhbGwodCk6IiI7dmFyIHI9dCsiIjtyZXR1cm4iMCI9PXImJjEvdD09LXo/Ii0wIjpyfWZ1bmN0aW9uIEgodCl7cmV0dXJuIG51bGw9PXQ/IiI6Ryh0KX12YXIgSj1oLmlzRmluaXRlLEs9TWF0aC5taW47dmFyIFEsVj0oUT1NYXRoWyJyb3VuZCJdLGZ1bmN0aW9uKHQscil7aWYodD1FKHQpLChyPW51bGw9PXI/MDpLKFQociksMjkyKSkmJkoodCkpe3ZhciBlPShIKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChlPShIKFEoZVswXSsiZSIrKCtlWzFdK3IpKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtlWzFdLXIpKX1yZXR1cm4gUSh0KX0pO2Z1bmN0aW9uIFgodCl7aWYoIVUodCkpcmV0dXJuIDA7dD1EKHQpO2xldCByPVYodCk7cmV0dXJuIjAiPT09U3RyaW5nKHIpPzA6cn1mdW5jdGlvbiBZKHQpe2lmKCFXKHQpKXJldHVybiExO3JldHVybiBYKHQpPj0wfWZ1bmN0aW9uIFoodCxyKXtpZighZih0KSlyZXR1cm4iIjtpZighWShyKSlyZXR1cm4iIjtpZigwPT09KHI9WChyKSkpcmV0dXJuIiI7bGV0IGU9dC5sZW5ndGgtcjtyZXR1cm4gZTwwJiYoZT0wKSx0LnN1YnN0cmluZyhlLGUrcil9ZnVuY3Rpb24gdHQodCxyKXtyZXR1cm4gZih0KSYmWShyKT8wPT09KHI9WChyKSk/dDpmdW5jdGlvbih0LHIpe3JldHVybiBmKHQpJiZZKHIpPzA9PT0ocj1YKHIpKT8iIjp0LnN1YnN0cmluZygwLHIpOiIifSh0LHQubGVuZ3RoLXIpOiIifWZ1bmN0aW9uIHJ0KHQpe2lmKCFmKHQpKXJldHVybntwYXRoOiIiLGlzUm9vdDohMX07Zm9yKDt0LmluZGV4T2YoIlxcXFwiKT49MDspdD10LnJlcGxhY2UoIlxcXFwiLCJcXCIpO2Zvcig7dC5pbmRleE9mKCIvLyIpPj0wOyl0PXQucmVwbGFjZSgiLy8iLCIvIik7aWYoIjoiPT09Wih0LDEpKXJldHVybntwYXRoOmAke3R9XFxgLGlzUm9vdDohMH07aWYoIlxcIj09PVoodCwxKSl7bGV0IHI9dHQodCwxKTtyZXR1cm4iOiI9PT1aKHIsMSk/e3BhdGg6dCxpc1Jvb3Q6ITB9OntwYXRoOnIsaXNSb290OiExfX1pZigiLyI9PT1aKHQsMSkpe2xldCByPXR0KHQsMSk7cmV0dXJuIDA9PT1yLmxlbmd0aD97cGF0aDp0LGlzUm9vdDohMH06e3BhdGg6cixpc1Jvb3Q6ITF9fXJldHVybntwYXRoOnQsaXNSb290OiExfX1mdW5jdGlvbiBldCh0KXtpZighZih0KSlyZXR1cm4iIjtsZXQgcj1ydCh0KTtpZihyLmlzUm9vdClyZXR1cm4gci5wYXRoO2xldCBlPWZ1bmN0aW9uKHQpe2lmKCFmKHQpKXJldHVybiIiO2xldCByPXJ0KHQpO2lmKHIuaXNSb290KXJldHVybiByLnBhdGg7bGV0IGU9ci5wYXRoO3RyeXtlPWUuc3BsaXQoIlxcIikucG9wKCkuc3BsaXQoIi8iKS5wb3AoKX1jYXRjaCh0KXt9cmV0dXJuIGV9KHQ9ci5wYXRoKTtpZighZihlKSlyZXR1cm4gdDtsZXQgbj1ydCh0PXR0KHQsZS5sZW5ndGgpKTtyZXR1cm4gbi5pc1Jvb3Qsbi5wYXRofWZ1bmN0aW9uIG50KHQpe3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYoIXIubHN0YXRTeW5jKHQpLmlzRmlsZSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gaXQodCl7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIG90KHQpe2lmKCFyLmV4aXN0c1N5bmModCkpcmV0dXJue3N1Y2Nlc3M6ImZpbGUgZG9lcyBub3QgZXhpc3Q6ICIrdH07aWYoIWl0KHQpKXJldHVybntlcnJvcjoiaW5wdXQgcGF0aCBpcyBub3QgYSBmaWxlOiAiK3R9O3RyeXtyLnVubGlua1N5bmModCl9Y2F0Y2godCl7cmV0dXJue2Vycm9yOnR9fXJldHVybntzdWNjZXNzOiJkb25lOiAiK3R9fWFzeW5jIGZ1bmN0aW9uIHV0KHQsaSxvKXtsZXQgdT0iIjtpZighbihmPWkpfHwwPT09Zi5sZW5ndGh8fDE9PT1mLmxlbmd0aCYmYyhmWzBdKSl0aHJvdyBuZXcgRXJyb3IoImZwc0luIGluIG5vdCBhbiBlZmZlY3RpdmUgYXJyYXkiKTt2YXIgZjtsZXQgbD1ldChvKTtudChsKXx8ZnVuY3Rpb24odCl7aWYobnQodCkpcmV0dXJue3N1Y2Nlc3M6ImlucHV0IGZvbGRlciBpcyBhbHJlYWR5IGV4aXN0czogIit0fTtpZihyLmV4aXN0c1N5bmModCkpcmV0dXJue2Vycm9yOiJpbnB1dCBwYXRoIGFscmVhZHkgZXhpc3RzOiAiK3R9O3RyeXtyLm1rZGlyU3luYyh0LHtyZWN1cnNpdmU6ITB9KX1jYXRjaCh0KXtyZXR1cm57ZXJyb3I6dH19fShsKTtsZXQgYT1lKCk7dHJ5e2xldCBuPXIuY3JlYXRlV3JpdGVTdHJlYW0obyk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2xldCBvPWlbdF07aWYoIWl0KG8pKXRocm93IG5ldyBFcnJvcihgZnBJblske299XSBpcyBub3QgYSBmaWxlYCk7bGV0IGM9KCk9PntsZXQgdD1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0obyk7cmV0dXJuIGkub24oImVycm9yIiwocj0+e3U9ci5tZXNzYWdlLHQucmVqZWN0KHIpfSkpLGkub24oImVuZCIsKCgpPT57b3QobyksdC5yZXNvbHZlKCl9KSksaS5waXBlKG4se2VuZDohMX0pLHR9O2F3YWl0IGMoKX1uLmVuZCgpLG4ub24oImVycm9yIiwodD0+e3U9dC5tZXNzYWdlLGEucmVqZWN0KHUpfSkpLG4ub24oImZpbmlzaCIsKCgpPT57bGV0IHI9e2ZpbGVuYW1lOnQscGF0aDpvfTthLnJlc29sdmUocil9KSl9Y2F0Y2godCl7dT10Lm1lc3NhZ2UsYS5yZWplY3QodSl9cmV0dXJuIGF9bGV0IG1lcmdlRmlsZXM9YXN5bmMocixlLG4saSk9PntsZXQgbz1bXTtmb3IobGV0IGk9MDtpPG47aSsrKXtsZXQgbj10LmpvaW4ocixgJHtlfV8ke2l9YCk7by5wdXNoKG4pfWxldCB1PXQuam9pbihyLGUpO3JldHVybiBhd2FpdCB1dChpLG8sdSl9OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogbWVyZ2VGaWxlcwogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtZXJnZUZpbGVzCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgCiAgICAgICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgICAgIG1vZGU6ICdlbWl0JywKICAgICAgICAgICAgICAgIGV2TmFtZTogJ2Vycm9yJywKICAgICAgICAgICAgICAgIG1zZzogZXJyLAogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICAgICAgfQogICAgICAgICAgICAKICAgIH0KCiAgICAvL2NoZWNrCiAgICBpZihtb2RlID09PSAnY2FsbCcpewogICAgICAgIGxldCBzdGF0ZSA9ICcnCiAgICAgICAgbGV0IG1zZyA9IG51bGwKCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy9mdW4KICAgICAgICAgICAgbGV0IGZ1biA9IGluc3RhbmNlW2RhdGEuZnVuXQoKICAgICAgICAgICAgLy9pbnB1dAogICAgICAgICAgICBsZXQgaW5wdXQgPSBkYXRhLmlucHV0CgogICAgICAgICAgICAvL2V4ZWMKICAgICAgICAgICAgYXdhaXQgZnVuKC4uLmlucHV0KQogICAgICAgICAgICAgICAgLnRoZW4oKHN1YykgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdzdWNjZXNzJwogICAgICAgICAgICAgICAgICAgIG1zZz1zdWMKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4gewogICAgICAgICAgICAgICAgICAgIHN0YXRlPSdlcnJvcicKICAgICAgICAgICAgICAgICAgICBtc2c9ZXJyCiAgICAgICAgICAgICAgICB9KQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAgICAgc3RhdGUgPSAnZXJyb3InCiAgICAgICAgICAgIG1zZyA9IGVycgogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgbGV0IHJlcyA9IHsKICAgICAgICAgICAgbW9kZTogJ3JldHVybicsCiAgICAgICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgICAgICBmdW46IGRhdGEuZnVuLAogICAgICAgICAgICBzdGF0ZSwKICAgICAgICAgICAgbXNnLAogICAgICAgIH0KICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgfQoKfQoKZnVuY3Rpb24gcmVjdk1lc3NhZ2UoZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciByZWN2OicsIGRhdGEpCgogICAgLy9kYXRhUmVjdgogICAgbGV0IGRhdGFSZWN2ID0gZGF0YQoKICAgIC8vcnVuCiAgICBydW4oZGF0YVJlY3YpCgp9CgoKICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHJlY3ZNZXNzYWdlKGUuZGF0YSkKICAgICAgICB9CiAgICAgICAgCgp0cnl7CiAgICBwcm9jZXNzLm9uKCd1bmhhbmRsZWRSZWplY3Rpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuaGFuZGxlZFJlamVjdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCBlcnIpCiAgICB9KQp9CmNhdGNoKGVycil7fQoK");function C(){let C=new K,g=function(I){try{let C=new Blob([I]),g=window.URL||window.webkitURL;return new Worker(g.createObjectURL(C))}catch(I){t(I)}}(I);if(!g)return t("invalid worker"),null;function e(){let I=function(){let I,C,g=new Promise((function(){I=arguments[0],C=arguments[1]}));return g.resolve=I,g.reject=C,g}(),e=function(){let I=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,C=[],g="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),e=g.length;for(let t=0;t<I;t++)C[t]=g[0|Math.random()*e];return C.join("")}(),t={mode:"call",id:e,fun:"main",input:[...arguments]};return g.postMessage(t),C.once(e,(C=>{"success"===C.state?I.resolve(C.msg):I.reject(C.msg)})),I}function t(I){C.emit("error",I)}return g.onmessage=function(I){!function(I){let g=I,e=g.mode;"emit"!==e&&"return"!==e||("emit"===e&&C.emit(g.evName,g.msg),"return"===e&&C.emit(g.id,g))}(I.data)},g.onerror=t,g.onmessageerror=function(I){t(I.data)},function(){let I={mode:"init",type:"function",input:[...arguments]};g.postMessage(I)}([...arguments]),C.main=e,C.main=e,C.terminate=function(){g?(g.terminate(),g=void 0):t("worker has been terminated")},C}y=async function(){let I=[...arguments],g=C();return await g.main(...I).finally((()=>{g.terminate()}))}}();try{process.on("unhandledRejection",(I=>{console.log("outer:unhandledRejection",I)})),process.on("uncaughtException",(I=>{console.log("outer:uncaughtException",I)})),process.on("uncaughtExceptionMonitor",(I=>{console.log("outer:uncaughtExceptionMonitor",I)}))}catch(I){}return y}()}({get exports(){return e},set exports(I){e=I}});var t=e;let c;return c="undefined"!=typeof window&&void 0!==window.document?t:g,c}));
|
package/srv.mjs
CHANGED
|
@@ -73,6 +73,44 @@ wo.on('upload', (input, pm) => {
|
|
|
73
73
|
pm.reject('upload error')
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
})
|
|
77
|
+
wo.on('download', (input, pm) => {
|
|
78
|
+
console.log(`Server[port:${opt.port}]: download`, input)
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
ms.push({ 'download': input })
|
|
82
|
+
|
|
83
|
+
//fp
|
|
84
|
+
let fp = `./test/1mb.7z`
|
|
85
|
+
|
|
86
|
+
//streamRead
|
|
87
|
+
let streamRead = fs.createReadStream(fp)
|
|
88
|
+
|
|
89
|
+
//fileName
|
|
90
|
+
let fileName = `1mb.7z`
|
|
91
|
+
|
|
92
|
+
//fileSize
|
|
93
|
+
let stats = fs.statSync(fp)
|
|
94
|
+
let fileSize = stats.size
|
|
95
|
+
|
|
96
|
+
//fileType
|
|
97
|
+
let fileType = 'application/x-7z-compressed'
|
|
98
|
+
|
|
99
|
+
//output
|
|
100
|
+
let output = {
|
|
101
|
+
streamRead,
|
|
102
|
+
fileName,
|
|
103
|
+
fileSize,
|
|
104
|
+
fileType,
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
pm.resolve(output)
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
console.log('download error', err)
|
|
111
|
+
pm.reject('download error')
|
|
112
|
+
}
|
|
113
|
+
|
|
76
114
|
})
|
|
77
115
|
wo.on('error', (err) => {
|
|
78
116
|
console.log(`Server[port:${opt.port}]: error`, err)
|
|
@@ -85,7 +123,7 @@ setTimeout(() => {
|
|
|
85
123
|
console.log('ms', ms)
|
|
86
124
|
// console.log('ms', JSON.stringify(ms))
|
|
87
125
|
wo.stop()
|
|
88
|
-
},
|
|
126
|
+
}, 1003000)
|
|
89
127
|
|
|
90
128
|
|
|
91
129
|
//node --experimental-modules srv.mjs
|
package/test/1mb.7z
CHANGED
|
Binary file
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import assert from 'assert'
|
|
2
|
+
import fs from 'fs'
|
|
3
|
+
// import _ from 'lodash-es'
|
|
4
|
+
import w from 'wsemi'
|
|
5
|
+
import WConverhpServer from '../src/WConverhpServer.mjs'
|
|
6
|
+
import WConverhpClient from '../src/WConverhpClient.mjs'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
describe('downloadLargeFile', function() {
|
|
10
|
+
|
|
11
|
+
let msAll = []
|
|
12
|
+
|
|
13
|
+
let runServer = () => {
|
|
14
|
+
|
|
15
|
+
let ms = []
|
|
16
|
+
|
|
17
|
+
let opt = {
|
|
18
|
+
port: 8083, //同時test故得要不同port
|
|
19
|
+
apiName: 'api',
|
|
20
|
+
pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
|
|
21
|
+
verifyConn: async ({ apiType, authorization, headers, query }) => {
|
|
22
|
+
// console.log('verifyConn', `apiType[${apiType}]`, `authorization[${authorization}]`)
|
|
23
|
+
let token = w.strdelleft(authorization, 7) //刪除Bearer
|
|
24
|
+
if (!w.isestr(token)) {
|
|
25
|
+
return false
|
|
26
|
+
}
|
|
27
|
+
// await w.delay(3000)
|
|
28
|
+
return true
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//new
|
|
33
|
+
let wo = new WConverhpServer(opt)
|
|
34
|
+
|
|
35
|
+
wo.on('download', (input, pm) => {
|
|
36
|
+
// console.log(`Server[port:${opt.port}]: download`, input)
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
ms.push({ 'download': input })
|
|
40
|
+
// console.log('ms', ms)
|
|
41
|
+
msAll.push({ server: ms })
|
|
42
|
+
|
|
43
|
+
//fp
|
|
44
|
+
let fp = `./test/1mb.7z`
|
|
45
|
+
|
|
46
|
+
//streamRead
|
|
47
|
+
let streamRead = fs.createReadStream(fp) //createReadStream得指定使用test內檔案
|
|
48
|
+
|
|
49
|
+
//fileName
|
|
50
|
+
let fileName = `1mb.7z`
|
|
51
|
+
|
|
52
|
+
//fileSize
|
|
53
|
+
let stats = fs.statSync(fp)
|
|
54
|
+
let fileSize = stats.size
|
|
55
|
+
|
|
56
|
+
//fileType
|
|
57
|
+
let fileType = 'application/x-7z-compressed'
|
|
58
|
+
|
|
59
|
+
//output
|
|
60
|
+
let output = {
|
|
61
|
+
streamRead,
|
|
62
|
+
fileName,
|
|
63
|
+
fileSize,
|
|
64
|
+
fileType,
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
pm.resolve(output)
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
// console.log('download error', err)
|
|
71
|
+
pm.reject('download error')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
})
|
|
75
|
+
wo.on('error', () => {
|
|
76
|
+
// console.log(`Server[port:${opt.port}]: error`, err)
|
|
77
|
+
})
|
|
78
|
+
wo.on('handler', (data) => {
|
|
79
|
+
// console.log(`Server[port:${opt.port}]: handler`, data)
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
wo.stop()
|
|
84
|
+
}, 2000)
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let runClient = () => {
|
|
89
|
+
|
|
90
|
+
let ms = []
|
|
91
|
+
|
|
92
|
+
let opt = {
|
|
93
|
+
FormData,
|
|
94
|
+
url: 'http://localhost:8083', //同時test故得要不同port
|
|
95
|
+
apiName: 'api',
|
|
96
|
+
getToken: () => {
|
|
97
|
+
return 'token-for-test'
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//new
|
|
102
|
+
let wo = new WConverhpClient(opt)
|
|
103
|
+
|
|
104
|
+
wo.on('error', () => {
|
|
105
|
+
// console.log(`error`, err)
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
function downloadLargeFile() {
|
|
109
|
+
let core = async() => {
|
|
110
|
+
|
|
111
|
+
await wo.download('id-for-file',
|
|
112
|
+
function ({ prog, p, m }) {
|
|
113
|
+
// console.log('client web: download: prog', prog, p, m)
|
|
114
|
+
if (m === 'download') {
|
|
115
|
+
// console.log('client web: download: prog', prog)
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
fdDownload: './',
|
|
120
|
+
})
|
|
121
|
+
.then(function(res) {
|
|
122
|
+
// console.log('client web: download: then', res)
|
|
123
|
+
|
|
124
|
+
//getFileName
|
|
125
|
+
res = w.getFileName(res)
|
|
126
|
+
ms.push({ 'download output': res })
|
|
127
|
+
|
|
128
|
+
fs.unlinkSync(res) //測試完刪除臨時檔
|
|
129
|
+
|
|
130
|
+
})
|
|
131
|
+
.catch(function () {
|
|
132
|
+
// console.log('client web: download: catch', err)
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
// console.log('ms', ms)
|
|
136
|
+
msAll.push({ client: ms })
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
core()
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
downloadLargeFile()
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
let run = () => {
|
|
147
|
+
let pm = w.genPm()
|
|
148
|
+
runServer()
|
|
149
|
+
runClient()
|
|
150
|
+
setTimeout(() => {
|
|
151
|
+
// console.log('msAll', msAll)
|
|
152
|
+
// fs.writeFileSync('./test_downloadLargeFile.json', JSON.stringify(msAll), 'utf8')
|
|
153
|
+
pm.resolve(msAll)
|
|
154
|
+
}, 4000)
|
|
155
|
+
return pm
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
let res = `[{"server":[{"download":{"fileId":"id-for-file"}}]},{"client":[{"download output":"1mb.7z"}]}]`
|
|
159
|
+
it(`should return ${res} when test`, async function() {
|
|
160
|
+
let r = await run()
|
|
161
|
+
r = JSON.stringify(r)
|
|
162
|
+
let rr = res
|
|
163
|
+
assert.strict.deepEqual(r, rr)
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
})
|
|
@@ -15,7 +15,7 @@ describe('executeWithFile', function() {
|
|
|
15
15
|
let ms = []
|
|
16
16
|
|
|
17
17
|
let opt = {
|
|
18
|
-
port: 8081,
|
|
18
|
+
port: 8081, //同時test故得要不同port
|
|
19
19
|
apiName: 'api',
|
|
20
20
|
pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
|
|
21
21
|
verifyConn: async ({ apiType, authorization, headers, query }) => {
|
|
@@ -15,7 +15,7 @@ describe('uploadLargeFile', function() {
|
|
|
15
15
|
let ms = []
|
|
16
16
|
|
|
17
17
|
let opt = {
|
|
18
|
-
port: 8082,
|
|
18
|
+
port: 8082, //同時test故得要不同port
|
|
19
19
|
apiName: 'api',
|
|
20
20
|
pathStaticFiles: '.', //要存取專案資料夾下web.html, 故不能給dist
|
|
21
21
|
verifyConn: async ({ apiType, authorization, headers, query }) => {
|
|
@@ -43,7 +43,7 @@ describe('uploadLargeFile', function() {
|
|
|
43
43
|
let ts = [t[0], t[1], t[2]]
|
|
44
44
|
ms.push({ 'receive and return': ts })
|
|
45
45
|
|
|
46
|
-
fs.unlinkSync(`./${input.path}`)
|
|
46
|
+
fs.unlinkSync(`./${input.path}`) //測試完刪除臨時檔
|
|
47
47
|
|
|
48
48
|
let output = input
|
|
49
49
|
pm.resolve(output)
|
|
@@ -93,14 +93,14 @@ describe('uploadLargeFile', function() {
|
|
|
93
93
|
let core = async() => {
|
|
94
94
|
|
|
95
95
|
//u8a
|
|
96
|
-
let u8a = new Uint8Array(fs.readFileSync('./test/1mb.7z'))
|
|
96
|
+
let u8a = new Uint8Array(fs.readFileSync('./test/1mb.7z')) //readFileSync得指定使用test內檔案
|
|
97
97
|
// console.log('u8a.length', u8a.length)
|
|
98
98
|
// console.log('uploadLargeFile u8a', u8a)
|
|
99
99
|
let t = u8a
|
|
100
100
|
let ts = [t[0], t[1], t[2]]
|
|
101
101
|
ms.push({ 'upload u8a.length': ts })
|
|
102
102
|
|
|
103
|
-
await wo.upload('1mb.7z', u8a,
|
|
103
|
+
await wo.upload('./1mb.7z', u8a,
|
|
104
104
|
function ({ prog, p, m }) {
|
|
105
105
|
// console.log('client web: upload: prog', prog, p, m)
|
|
106
106
|
if (m === 'upload') {
|
|
@@ -138,7 +138,7 @@ describe('uploadLargeFile', function() {
|
|
|
138
138
|
return pm
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
let res = `[{"client":[{"upload u8a.length":[55,122,188]},{"upload output":{"filename":"1mb.7z"}}]},{"server":[{"receive and return":[55,122,188]}]}]`
|
|
141
|
+
let res = `[{"client":[{"upload u8a.length":[55,122,188]},{"upload output":{"filename":"./1mb.7z"}}]},{"server":[{"receive and return":[55,122,188]}]}]`
|
|
142
142
|
it(`should return ${res} when test`, async function() {
|
|
143
143
|
let r = await run()
|
|
144
144
|
r = JSON.stringify(r)
|
package/web.html
CHANGED
|
@@ -149,6 +149,27 @@
|
|
|
149
149
|
core()
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
function downloadLargeFile(){
|
|
153
|
+
let core = async()=>{
|
|
154
|
+
|
|
155
|
+
await wo.download('id-for-file',
|
|
156
|
+
function ({ prog, p, m }) {
|
|
157
|
+
// console.log('client web: download: prog', prog, p, m)
|
|
158
|
+
if (m === 'download') {
|
|
159
|
+
console.log('client web: download: prog', prog)
|
|
160
|
+
}
|
|
161
|
+
})
|
|
162
|
+
.then(function(res) {
|
|
163
|
+
console.log('client web: download: then', res)
|
|
164
|
+
})
|
|
165
|
+
.catch(function (err) {
|
|
166
|
+
console.log('client web: download: catch', err)
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
}
|
|
170
|
+
core()
|
|
171
|
+
}
|
|
172
|
+
|
|
152
173
|
</script>
|
|
153
174
|
|
|
154
175
|
</head>
|
|
@@ -172,7 +193,13 @@
|
|
|
172
193
|
<button onclick="uploadLargeFile()">upload large file</button>
|
|
173
194
|
|
|
174
195
|
</div>
|
|
175
|
-
|
|
196
|
+
|
|
197
|
+
<div style="padding:10px;">
|
|
198
|
+
|
|
199
|
+
<button onclick="downloadLargeFile()">download large file</button>
|
|
200
|
+
|
|
201
|
+
</div>
|
|
202
|
+
|
|
176
203
|
</body>
|
|
177
204
|
|
|
178
205
|
</html>
|