@zip.js/zip.js 2.5.4 → 2.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/z-worker-fflate.js +1 -1
- package/dist/z-worker-pako.js +1 -1
- package/dist/z-worker.js +1 -1
- package/dist/zip-fs-full.js +343 -408
- package/dist/zip-fs-full.min.js +1 -1
- package/dist/zip-fs.js +343 -408
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-full.js +343 -408
- package/dist/zip-full.min.js +1 -1
- package/dist/zip-no-worker-deflate.min.js +1 -1
- package/dist/zip-no-worker-inflate.min.js +1 -1
- package/dist/zip-no-worker.min.js +1 -1
- package/dist/zip.js +343 -408
- package/dist/zip.min.js +1 -1
- package/index-fflate.js +1 -1
- package/index.js +3 -3
- package/lib/core/{engine.js → codec-interface.js} +52 -46
- package/lib/core/{codecs/codec-pool-worker.js → codec-pool-worker.js} +60 -29
- package/lib/core/{codecs/codec-pool.js → codec-pool.js} +28 -9
- package/lib/core/configuration.js +3 -0
- package/lib/core/io.js +13 -24
- package/lib/core/{codecs → streams}/aes-crypto-stream.js +35 -33
- package/lib/core/{codecs → streams}/codec-stream.js +7 -7
- package/lib/core/{codecs → streams/codecs}/crc32.js +0 -0
- package/lib/core/{codecs → streams/codecs}/deflate.js +0 -0
- package/lib/core/{codecs → streams/codecs}/inflate.js +0 -0
- package/lib/core/{codecs → streams/codecs}/sjcl.js +0 -0
- package/lib/core/{codecs → streams}/crc32-stream.js +3 -4
- package/lib/core/{codecs → streams}/zip-crypto-stream.js +24 -28
- package/lib/core/streams/zip-entry-stream.js +185 -0
- package/lib/core/z-worker-core.js +30 -15
- package/lib/core/zip-fs-core.js +1 -1
- package/lib/core/zip-reader.js +21 -18
- package/lib/core/zip-writer.js +30 -31
- package/lib/z-worker-fflate.js +4 -1
- package/lib/z-worker-inline.js +1 -1
- package/lib/z-worker.js +2 -2
- package/lib/zip-fflate-shim.js +4 -1
- package/lib/zip-fs.js +6 -2
- package/lib/zip-full-fflate.js +6 -3
- package/lib/zip-full.js +8 -5
- package/lib/zip-no-worker-deflate.js +7 -3
- package/lib/zip-no-worker-fflate-deflate.js +6 -2
- package/lib/zip-no-worker-fflate-inflate.js +6 -3
- package/lib/zip-no-worker-fflate.js +6 -3
- package/lib/zip-no-worker-inflate.js +7 -4
- package/lib/zip-no-worker.js +8 -5
- package/lib/zip.js +6 -3
- package/package.json +2 -8
- package/tests/all/test-parallel-writes-ordered.js +1 -1
- package/tests/all/test-readable-stream.js +2 -2
- package/tests/all/test-zip64-auto.js +1 -1
- package/lib/core/codecs/codec.js +0 -246
package/dist/zip.js
CHANGED
|
@@ -68,6 +68,9 @@
|
|
|
68
68
|
if (configuration.terminateWorkerTimeout !== undefined) {
|
|
69
69
|
config.terminateWorkerTimeout = configuration.terminateWorkerTimeout;
|
|
70
70
|
}
|
|
71
|
+
if (configuration.useCompressionStream !== undefined) {
|
|
72
|
+
config.useCompressionStream = configuration.useCompressionStream;
|
|
73
|
+
}
|
|
71
74
|
if (configuration.useWebWorkers !== undefined) {
|
|
72
75
|
config.useWebWorkers = configuration.useWebWorkers;
|
|
73
76
|
}
|
|
@@ -99,7 +102,7 @@
|
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
|
|
102
|
-
var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:a,crypto:l,postMessage:u,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:y}=globalThis,b=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;b[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^b[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){t&&t.length&&this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const g={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=g.o(n);return 32===r?t.concat(e):g.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+g.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=g.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=g.o(i);return r.push(g.p(e+s&31,e+s>32?n:r.pop(),1)),r}},v={m:{k(t){const e=g.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},g(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(g.p(8*(3&n),r)),e}}},S={v:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.v.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.I.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=v.A.g(t));const n=e._=g.concat(e._,t),i=e.C,s=e.C=i+g.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=g.concat(e,[g.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},I:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],a=i[3],l=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,a)+l+s[t]+r.B[n.floor(t/20)]|0;l=a,a=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0}};const z={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},_={importKey:t=>new _.R(v.m.g(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,a,l,u;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=g;for(e=v.m.g(e),u=1;(s||1)>d;u++){for(o=f=t.encrypt(p.concat(e,[u])),a=1;n>a;a++)for(f=t.encrypt(f),l=0;l<f.length;l++)o[l]^=f[l];for(a=0;(s||1)>d&&a<o.length;a++)h.setInt32(d,o[a]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.v,r=[[],[]],i=n.prototype.blockSize/32;e.j=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.j[0].update(r[0]),e.j[1].update(r[1]),e.H=new n(e.j[0])}reset(){const t=this;t.H=new t.T(t.j[0]),t.K=!1}update(t){this.K=!0,this.H.update(t)}digest(){const t=this,e=t.H.P(),n=new t.T(t.j[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.K)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},C={name:"PBKDF2"},I=e.assign({hash:{name:"HMAC"}},C),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},C),x=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==l,E=D&&void 0!==l.subtle,M=D&&"function"==typeof l.getRandomValues,R=D&&E&&"function"==typeof l.subtle.importKey,U=D&&E&&"function"==typeof l.subtle.deriveBits,T=v.m,j=class{constructor(t){const e=this;e.L=[[[],[],[],[],[]],[[],[],[],[],[]]],e.L[0][0][0]||e.W();const n=e.L[0][4],i=e.L[1],s=t.length;let o,f,c,a=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^a<<24,a=a<<1^283*(a>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}W(){const t=this.L[0],e=this.L[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,a;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let l=o=0;!n[l];l^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[l]=s,r[s]=l,a=i[c=i[f=i[l]]];let u=16843009*a^65537*c^257*f^16843008*l,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][l]=w=w<<24^w>>>8,e[n][s]=u=u<<24^u>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.L[e],f=o[0],c=o[1],a=o[2],l=o[3],u=o[4];let w,h,d,p=t[0]^n[0],y=t[e?3:1]^n[1],b=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[y>>16&255]^a[b>>8&255]^l[255&m]^n[k],h=f[y>>>24]^c[b>>16&255]^a[m>>8&255]^l[255&p]^n[k+1],d=f[b>>>24]^c[m>>16&255]^a[p>>8&255]^l[255&y]^n[k+2],m=f[m>>>24]^c[p>>16&255]^a[y>>8&255]^l[255&b]^n[k+3],k+=4,p=w,y=h,b=d;for(let t=0;4>t;t++)s[e?3&-t:t]=u[p>>>24]<<24^u[y>>16&255]<<16^u[b>>8&255]<<8^u[255&m]^n[k++],w=p,p=y,y=b,b=m,m=w;return s}},H=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=g.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return g.h(e,i)}},K=_.R;class L extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const s=this;if(s.password){const n=s.password;s.password=null;const i=G(e,0,V[s.Z]+2);await(async(t,e,n)=>{await O(t,n,G(e,0,V[t.Z]));const i=G(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new H(new j(s.keys.key),t.from(B)),s.tt=new K(s.keys.et),e=G(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(F(s,e,o,0,10,!0))}},async flush(t){const e=this;await e.ready;const n=e.pending,r=G(n,0,n.length-10),s=G(n,n.length-10);let o=new i(0);if(r.length){const t=N(T,r);e.tt.update(t);const n=e.$.update(t);o=J(T,n)}if(f.valid=!0,e.signed){const t=G(J(T,e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class W extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){if(e&&e.length){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),M?l.getRandomValues(r):z.getRandomValues(r));var r;return await O(t,e,n),q(n,t.keys.passwordVerification)})(r,e),r.$=new H(new j(r.keys.key),t.from(B)),r.tt=new K(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(F(r,e,o,s.length,0))}},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(N(T,e.pending));e.tt.update(t),n=J(T,t)}s.signature=J(T,e.tt.digest()).slice(0,10),t.enqueue(q(n,s.signature))}}),s=this}}function F(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=q(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=N(T,G(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(J(T,s),c+r)}return t.pending=G(e,c),n}async function O(t,n,r){const s=(t=>{if(void 0===a){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new a).encode(t)})(n),o=await((t,e,n,r,i)=>R?l.subtle.importKey("raw",e,n,!1,i):_.importKey(e))(0,s,I,0,x),f=await(async(t,e,n)=>U?await l.subtle.deriveBits(t,e,n):_.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:N(T,G(c,0,P[t.Z])),et:N(T,G(c,P[t.Z],2*P[t.Z])),passwordVerification:G(c,2*P[t.Z])}}function q(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function G(t,e,n){return t.subarray(e,n)}function J(t,e){return t.k(e)}function N(t,e){return t.g(e)}class Q extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){if(t&&t.length){const n=this;if(n.password){const e=Y(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(Y(n,t))}},flush(){i.valid=!0}}),i=this}}class X extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){if(t&&t.length){const n=this;let r,s;if(n.password){n.password=null;const e=l.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(Z(n,e),0),s=12}else r=new i(t.length),s=0;r.set(Z(n,t),s),e.enqueue(r)}},flush(){}})}}function Y(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,n[r]);return n}function Z(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,e[r]);return n}function $(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)tt(t,e.charCodeAt(n))}function tt(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=rt(t.keys[1]+nt(t.keys[0])),t.keys[1]=rt(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function et(t){const e=2|t.keys[2];return nt(n.imul(e,1^e)>>>8)}function nt(t){return 255&t}function rt(t){return 4294967295&t}class it extends w{constructor(t,e){super({start(){this.it=new t(e)},transform(t,e){(t=this.it.append(t))&&t.length&&e.enqueue(t)},flush(t){const e=this.it.flush();e&&e.length&&t.enqueue(e)}})}}class st{constructor(t,{signature:n,password:r,signed:i,compressed:s,zipCrypto:o,passwordVerification:f,encryptionStrength:c,st:a},{ot:l}){const u=this;function w(){u.stream=u.stream.pipeThrough(new it(t,{ot:l}))}u.start=async()=>{const t=!!r;if(e.assign(u,{signature:n,encrypted:t,signed:i,compressed:s,zipCrypto:o,stream:ft(u)}),t&&(o?u.stream=u.stream.pipeThrough(new Q(r,f)):(u.ft=new L(r,i,c),u.stream=u.stream.pipeThrough(u.ft))),s)if(void 0!==a&&!a||void 0===y)w();else try{u.stream=u.stream.pipeThrough(new y("deflate-raw"))}catch(t){w()}if((!t||o)&&i){const t=u.stream.tee();u.stream=t[0],u.ct=t[1].pipeThrough(new k)}u.lt=u.stream.getReader(),await u.read()},u.abort=()=>u.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:new i(e)}}),n){let e;if(t.encrypted&&!t.zipCrypto&&!t.ft.valid)throw new r("Invalid signature");if((!t.encrypted||t.zipCrypto)&&t.signed){e=await t.ct.getReader().read();const n=new c(e.value.buffer);if(t.signature!=n.getUint32(0,!1))throw new r("Invalid signature")}t.ut({value:{signature:e},done:n})}else await t.read()}}class ot{constructor(t,{encrypted:n,signed:r,compressed:i,level:s,zipCrypto:o,password:f,passwordVerification:c,encryptionStrength:a,st:l},{ot:u}){const w=this;function h(){w.stream=w.stream.pipeThrough(new it(t,{ot:u,level:s}))}w.start=async()=>{if(e.assign(this,{encrypted:n,signed:r,compressed:i,zipCrypto:o,stream:ft(w)}),(!n||o)&&r){const t=w.stream.tee();w.stream=t[0],w.ct=t[1].pipeThrough(new k({ot:u}))}if(i)if(void 0!==l&&!l||void 0===p)h();else try{w.stream=w.stream.pipeThrough(new p("deflate-raw"))}catch(t){h()}n&&(o?w.stream=w.stream.pipeThrough(new X(f,c)):(w.wt=new W(f,a),w.stream=w.stream.pipeThrough(w.wt))),w.lt=w.stream.getReader(),await w.read()},w.abort=()=>w.aborted=!0}async read(){const t=this,{value:e,done:n}=await t.lt.read();if(e&&e.length&&t.ut({value:{data:e}}),n){let e;t.encrypted&&!t.zipCrypto&&(e=t.wt.signature),t.encrypted&&!t.zipCrypto||!t.signed||(e=await t.ct.getReader().read(),e=new c(e.value.buffer).getUint32(0)),t.ut({value:{signature:e},done:n})}else await t.read()}}function ft(t){return new h({async pull(e){const{value:n,done:r}=await t.pull();n&&e.enqueue(n),(r||t.aborted)&&e.close()}})}const ct=new Map;let at,lt=0;function ut(t){if(t.data){const e=t.data.value.data;if(e&&e.length)try{t.data.value.data=e.buffer,u(t,[t.data.value.data])}catch(e){u(t)}else u(t)}else u(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate),at=((t,e,n)=>e.codecType.startsWith("deflate")?new ot(t,e,n):e.codecType.startsWith("inflate")?new st(t,e,n):void 0)(n,e,t.config),at.ut=t=>ut({type:"data",data:t}),at.onerror=t=>u({error:{message:t.message,stack:t.stack}}),at.pull=()=>{const t=new Promise(((t,e)=>ct.set(lt,{resolve:t,reject:e})));return ut({type:"pull",messageId:lt}),lt++,t},await at.start()}catch(t){u({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=ct.get(e.messageId);ct.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&at.abort()}catch(t){u({error:{message:t.message,stack:t.stack}})}}));const wt=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function a(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ht=r=>{const i=t.dt,s=t.bt.yt,o=t.bt.kt;let f,c,a,l=-1;for(r.gt=0,r.vt=573,f=0;o>f;f++)0!==i[2*f]?(r.St[++r.gt]=l=f,r.zt[f]=0):i[2*f+1]=0;for(;2>r.gt;)a=r.St[++r.gt]=2>l?++l:0,i[2*a]=1,r.zt[a]=0,r._t--,s&&(r.Ct-=s[2*a+1]);for(t.It=l,f=n.floor(r.gt/2);f>=1;f--)r.At(i,f);a=o;do{f=r.St[1],r.St[1]=r.St[r.gt--],r.At(i,1),c=r.St[1],r.St[--r.vt]=f,r.St[--r.vt]=c,i[2*a]=i[2*f]+i[2*c],r.zt[a]=n.max(r.zt[f],r.zt[c])+1,i[2*f+1]=i[2*c+1]=a,r.St[1]=a++,r.At(i,1)}while(r.gt>=2);r.St[--r.vt]=r.St[1],(e=>{const n=t.dt,r=t.bt.yt,i=t.bt.xt,s=t.bt.Vt,o=t.bt.Pt;let f,c,a,l,u,w,h=0;for(l=0;15>=l;l++)e.Bt[l]=0;for(n[2*e.St[e.vt]+1]=0,f=e.vt+1;573>f;f++)c=e.St[f],l=n[2*n[2*c+1]+1]+1,l>o&&(l=o,h++),n[2*c+1]=l,c>t.It||(e.Bt[l]++,u=0,s>c||(u=i[c-s]),w=n[2*c],e._t+=w*(l+u),r&&(e.Ct+=w*(r[2*c+1]+u)));if(0!==h){do{for(l=o-1;0===e.Bt[l];)l--;e.Bt[l]--,e.Bt[l+1]+=2,e.Bt[o]--,h-=2}while(h>0);for(l=o;0!==l;l--)for(c=e.Bt[l];0!==c;)a=e.St[--f],a>t.It||(n[2*a+1]!=l&&(e._t+=(l-n[2*a+1])*n[2*a],n[2*a+1]=l),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.It,r.Bt)}}function l(t,e,n,r,i){const s=this;s.yt=t,s.xt=e,s.Vt=n,s.kt=r,s.Pt=i}a.Dt=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),a.Et=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],a.Mt=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],a.Rt=t=>256>t?c[t]:c[256+(t>>>7)],a.Ut=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],a.Tt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a.jt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],a.Ht=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const u=o([[144,8],[112,9],[24,7],[8,8]]);l.Kt=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,u[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Lt=t,s.Wt=e,s.Ft=n,s.Ot=r,s.qt=i}l.Gt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),l.Jt=new l(l.Kt,a.Ut,257,286,15),l.Nt=new l(l.Gt,a.Tt,0,30,15),l.Qt=new l(null,a.jt,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],y=113,b=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function g(){const t=this;let r,o,f,c,u,w,h,g,v,S,z,_,C,I,A,x,V,P,B,D,E,M,R,U,T,j,H,K,L,W,F,O,q;const G=new a,J=new a,N=new a;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t._t=t.Ct=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.Xt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function at(e,r){let i,s,o;if(t.Yt[X]=e,t.Zt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(a.Dt[r]+256+1)]++,O[2*a.Rt(e)]++),0==(8191&X)&&H>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+a.Tt[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function lt(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Yt[f],i=t.Zt[f],f++,0===r?ot(i,e):(s=a.Dt[i],ot(s+256+1,e),o=a.Ut[s],0!==o&&(i-=a.Et[s],st(i,o)),r--,s=a.Rt(r),ot(s,n),o=a.Tt[s],0!==o&&(r-=a.Mt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function ut(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{ut(),Z=8,it(n),it(~n),t.Xt.set(g.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;H>0?(G.ht(t),J.ht(t),o=(()=>{let e;for(nt(F,G.It),nt(O,J.It),N.ht(t),e=18;e>=3&&0===q[2*a.Ht[e]+1];e--);return t._t+=14+3*(e+1),e})(),i=t._t+3+7>>>3,s=t.Ct+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),lt(l.Kt,l.Gt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*a.Ht[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.It+1,J.It+1,o+1),lt(F,O)):wt(e,n,r),et(),r&&ut()})(0>V?-1:V,E-V,e),V=E,r.$t()}function dt(){let t,e,n,i;do{if(i=v-R-E,0===i&&0===E&&0===R)i=u;else if(-1==i)i--;else if(E>=u+u-m){g.set(g.subarray(u,u+u),0),M-=u,E-=u,V-=u,t=C,n=t;do{e=65535&z[--n],z[n]=u>e?0:e-u}while(0!=--t);t=u,n=t;do{e=65535&S[--n],S[n]=u>e?0:e-u}while(0!=--t);i+=u}if(0===r.te)return;t=r.ee(g,E+R,i),R+=t,3>R||(_=255&g[E],_=(_<<x^255&g[E+1])&A)}while(m>R&&0!==r.te)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>u-m?E-(u-m):0;let f=W;const c=h,a=E+258;let l=g[i+s-1],w=g[i+s];L>U||(r>>=2),f>R&&(f=R);do{if(e=t,g[e+s]==w&&g[e+s-1]==l&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2,e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&a>i);if(n=258-(a-i),i=a-258,n>s){if(M=t,s=n,n>=f)break;l=g[i+s-1],w=g[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.zt=[],t.Bt=[],t.St=[],F=[],O=[],q=[],t.At=(e,n)=>{const r=t.St,i=r[n];let s=n<<1;for(;s<=t.gt&&(s<t.gt&&k(e,r[s+1],r[s],t.zt)&&s++,!k(e,i,r[s],t.zt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.ne=(r,a,p,b,m,k)=>(b||(b=8),m||(m=8),k||(k=0),r.re=null,-1==a&&(a=6),1>m||m>9||8!=b||9>p||p>15||0>a||a>9||0>k||k>2?e:(r.ie=t,w=p,u=1<<w,h=u-1,I=m+7,C=1<<I,A=C-1,x=n.floor((I+3-1)/3),g=new i(2*u),S=[],z=[],Q=1<<m+6,t.Xt=new i(4*Q),f=4*Q,t.Yt=new s(Q),t.Zt=new i(Q),H=a,K=k,(e=>(e.se=e.oe=0,e.re=null,t.pending=0,t.fe=0,o=y,c=0,G.dt=F,G.bt=l.Jt,J.dt=O,J.bt=l.Nt,N.dt=q,N.bt=l.Qt,$=0,tt=0,Z=8,et(),(()=>{v=2*u,z[C-1]=0;for(let t=0;C-1>t;t++)z[t]=0;j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot,E=0,V=0,R=0,P=U=2,D=0,_=0})(),0))(r))),t.ce=()=>42!=o&&o!=y&&o!=b?e:(t.Zt=null,t.Yt=null,t.Xt=null,z=null,S=null,g=null,t.ie=null,o==y?-3:0),t.ae=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[H].qt!=d[n].qt&&0!==t.se&&(i=t.le(1)),H!=n&&(H=n,j=d[H].Wt,L=d[H].Lt,W=d[H].Ft,T=d[H].Ot),K=r,i)},t.ue=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>u-m&&(s=u-m,f=r-s),g.set(n.subarray(f,f+s),0),E=s,V=s,_=255&g[0],_=(_<<x^255&g[1])&A,i=0;s-3>=i;i++)_=(_<<x^255&g[i+2])&A,S[i&h]=z[_],z[_]=i;return 0},t.le=(n,i)=>{let s,a,k,v,I;if(i>4||0>i)return e;if(!n.we||!n.he&&0!==n.te||o==b&&4!=i)return n.re=p[4],e;if(0===n.de)return n.re=p[7],-5;var T;if(r=n,v=c,c=i,42==o&&(a=8+(w-8<<4)<<8,k=(H-1&255)>>1,k>3&&(k=3),a|=k<<6,0!==E&&(a|=32),a+=31-a%31,o=y,rt((T=a)>>8&255),rt(255&T)),0!==t.pending){if(r.$t(),0===r.de)return c=-1,0}else if(0===r.te&&v>=i&&4!=i)return r.re=p[7],-5;if(o==b&&0!==r.te)return n.re=p[7],-5;if(0!==r.te||0!==R||0!=i&&o!=b){switch(I=-1,d[H].qt){case 0:I=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.de))return 0;if(E-V>=u-m&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 1:I=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&g[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E),0===n||(E-n&65535)>u-m||2!=K&&(P=pt(n)),3>P)e=at(0,255&g[E]),R--,E++;else if(e=at(E-M,P-3),R-=P,P>j||3>R)E+=P,P=0,_=255&g[E],_=(_<<x^255&g[E+1])&A;else{P--;do{E++,_=(_<<x^255&g[E+2])&A,n=65535&z[_],S[E&h]=z[_],z[_]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.de))return 0}return ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i);break;case 2:I=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(_=(_<<x^255&g[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E),U=P,B=M,P=2,0!==i&&j>U&&u-m>=(E-i&65535)&&(2!=K&&(P=pt(i)),5>=P&&(1==K||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=at(0,255&g[E-1]),e&&ht(!1),E++,R--,0===r.de)return 0}else D=1,E++,R--;else{n=E+R-3,e=at(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(_=(_<<x^255&g[E+2])&A,i=65535&z[_],S[E&h]=z[_],z[_]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.de))return 0}}return 0!==D&&(e=at(0,255&g[E-1]),D=0),ht(4==t),0===r.de?4==t?2:0:4==t?3:1})(i)}if(2!=I&&3!=I||(o=b),0==I||2==I)return 0===r.de&&(c=-1),0;if(1==I){if(1==i)st(2,3),ot(256,l.Kt),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,l.Kt),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;C>s;s++)z[s]=0;if(r.$t(),0===r.de)return c=-1,0}}return 4!=i?0:1}}function v(){const t=this;t.pe=0,t.ye=0,t.te=0,t.se=0,t.de=0,t.oe=0}return v.prototype={ne:function(t,e){const n=this;return n.ie=new g,e||(e=15),n.ie.ne(n,t,e)},le:function(t){const n=this;return n.ie?n.ie.le(n,t):e},ce:function(){const t=this;if(!t.ie)return e;const n=t.ie.ce();return t.ie=null,n},ae:function(t,n){const r=this;return r.ie?r.ie.ae(r,t,n):e},ue:function(t,n){const r=this;return r.ie?r.ie.ue(r,t,n):e},ee:function(t,e,n){const r=this;let i=r.te;return i>n&&(i=n),0===i?0:(r.te-=i,t.set(r.he.subarray(r.pe,r.pe+i),e),r.pe+=i,r.se+=i,i)},$t:function(){const t=this;let e=t.ie.pending;e>t.de&&(e=t.de),0!==e&&(t.we.set(t.ie.Xt.subarray(t.ie.fe,t.ie.fe+e),t.ye),t.ye+=e,t.ie.fe+=e,t.oe+=e,t.de-=e,t.ie.pending-=e,0===t.ie.pending&&(t.ie.fe=0))}},function(t){const e=new v,s=(o=t&&t.ot?t.ot:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.ne(c),e.we=f,this.append=(t,n)=>{let o,c,a=0,l=0,u=0;const w=[];if(t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=s,o=e.le(0),0!=o)throw new r("deflating: "+e.re);e.ye&&(e.ye==s?w.push(new i(f)):w.push(f.slice(0,e.ye))),u+=e.ye,n&&e.pe>0&&e.pe!=a&&(n(e.pe),a=e.pe)}while(e.te>0||0===e.de);return w.length>1?(c=new i(u),w.forEach((t=>{c.set(t,l),l+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const a=[];do{if(e.ye=0,e.de=s,t=e.le(4),1!=t&&0!=t)throw new r("deflating: "+e.re);s-e.de>0&&a.push(f.slice(0,e.ye)),c+=e.ye}while(e.te>0||0===e.de);return e.ce(),n=new i(c),a.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),ht=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],a=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],u=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],w=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],h=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function d(){let t,n,r,i,o,c;function a(t,n,f,a,l,u,w,h,d,p,y){let b,m,k,g,v,S,z,_,C,I,A,x,V,P,B;I=0,v=f;do{r[t[n+I]]++,I++,v--}while(0!==v);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(_=h[0],S=1;15>=S&&0===r[S];S++);for(z=S,S>_&&(_=S),v=15;0!==v&&0===r[v];v--);for(k=v,_>v&&(_=v),h[0]=_,P=1<<S;v>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[v]))return e;for(r[v]+=P,c[1]=S=0,I=1,V=2;0!=--v;)c[V]=S+=r[I],V++,I++;v=0,I=0;do{0!==(S=t[n+I])&&(y[c[S]++]=v),I++}while(++v<f);for(f=c[k],c[0]=v=0,I=0,g=-1,x=-_,o[0]=0,A=0,B=0;k>=z;z++)for(b=r[z];0!=b--;){for(;z>x+_;){if(g++,x+=_,B=k-x,B=B>_?_:B,(m=1<<(S=z-x))>b+1&&(m-=b+1,V=z,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[g]=A=p[0],p[0]+=B,0!==g?(c[g]=v,i[0]=S,i[1]=_,S=v>>>x-_,i[2]=A-o[g-1]-S,d.set(i,3*(o[g-1]+S))):w[0]=A}for(i[1]=z-x,f>I?y[I]<a?(i[0]=256>y[I]?0:96,i[2]=y[I++]):(i[0]=u[y[I]-a]+16+64,i[2]=l[y[I++]-a]):i[0]=192,m=1<<z-x,S=v>>>x;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<z-1;0!=(v&S);S>>>=1)v^=S;for(v^=S,C=(1<<x)-1;(v&C)!=c[g];)g--,x-=_,C=(1<<x)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.be=(r,i,o,f,c)=>{let l;return d(19),t[0]=0,l=a(r,0,19,19,null,null,o,i,f,t,n),l==e?c.re="oversubscribed dynamic bit lengths tree":l!=s&&0!==i[0]||(c.re="incomplete dynamic bit lengths tree",l=e),l},this.me=(r,i,o,f,c,p,y,b,m)=>{let k;return d(288),t[0]=0,k=a(o,0,r,257,l,u,p,f,b,t,n),0!=k||0===f[0]?(k==e?m.re="oversubscribed literal/length tree":-4!=k&&(m.re="incomplete literal/length tree",k=e),k):(d(288),k=a(o,r,i,0,w,h,y,c,b,t,n),0!=k||0===c[0]&&r>257?(k==e?m.re="oversubscribed distance tree":k==s?(m.re="incomplete distance tree",k=e):-4!=k&&(m.re="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,a=0,l=0,u=0,w=0,h=0,d=0,p=0,y=0,b=0;function m(t,n,r,i,s,f,c,a){let l,u,w,h,d,p,y,b,m,k,g,v,S,z,_,C;y=a.pe,b=a.te,d=c.ke,p=c.ge,m=c.write,k=m<c.read?c.read-m-1:c.end-m,g=o[t],v=o[n];do{for(;20>p;)b--,d|=(255&a.ve(y++))<<p,p+=8;if(l=d&g,u=r,w=i,C=3*(w+l),0!==(h=u[C]))for(;;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15,S=u[C+2]+(d&o[h]),d>>=h,p-=h;15>p;)b--,d|=(255&a.ve(y++))<<p,p+=8;for(l=d&v,u=s,w=f,C=3*(w+l),h=u[C];;){if(d>>=u[C+1],p-=u[C+1],0!=(16&h)){for(h&=15;h>p;)b--,d|=(255&a.ve(y++))<<p,p+=8;if(z=u[C+2]+(d&o[h]),d>>=h,p-=h,k-=S,z>m){_=m-z;do{_+=c.end}while(0>_);if(h=c.end-_,S>h){if(S-=h,m-_>0&&h>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--h);else c.Se.set(c.Se.subarray(_,_+h),m),m+=h,_+=h,h=0;_=0}}else _=m-z,m-_>0&&2>m-_?(c.Se[m++]=c.Se[_++],c.Se[m++]=c.Se[_++],S-=2):(c.Se.set(c.Se.subarray(_,_+2),m),m+=2,_+=2,S-=2);if(m-_>0&&S>m-_)do{c.Se[m++]=c.Se[_++]}while(0!=--S);else c.Se.set(c.Se.subarray(_,_+S),m),m+=S,_+=S,S=0;break}if(0!=(64&h))return a.re="invalid distance code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ge=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e;l+=u[C+2],l+=d&o[h],C=3*(w+l),h=u[C]}break}if(0!=(64&h))return 0!=(32&h)?(S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ge=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,1):(a.re="invalid literal/length code",S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ge=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,e);if(l+=u[C+2],l+=d&o[h],C=3*(w+l),0===(h=u[C])){d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--;break}}else d>>=u[C+1],p-=u[C+1],c.Se[m++]=u[C+2],k--}while(k>=258&&b>=10);return S=a.te-b,S=S>p>>3?p>>3:S,b+=S,y-=S,p-=S<<3,c.ke=d,c.ge=p,a.te=b,a.se+=y-a.pe,a.pe=y,c.write=m,0}n.init=(t,e,n,o,c,a)=>{r=0,d=t,p=e,s=n,y=o,f=c,b=a,i=null},n.ze=(n,k,g)=>{let v,S,z,_,C,I,A,x=0,V=0,P=0;for(P=k.pe,_=k.te,x=n.ke,V=n.ge,C=n.write,I=C<n.read?n.read-C-1:n.end-C;;)switch(r){case 0:if(I>=258&&_>=10&&(n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,g=m(d,p,s,y,f,b,n,k),P=k.pe,_=k.te,x=n.ke,V=n.ge,C=n.write,I=C<n.read?n.read-C-1:n.end-C,0!=g)){r=1==g?7:9;break}l=d,i=s,a=y,r=1;case 1:for(v=l;v>V;){if(0===_)return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);g=0,_--,x|=(255&k.ve(P++))<<V,V+=8}if(S=3*(a+(x&o[v])),x>>>=i[S+1],V-=i[S+1],z=i[S],0===z){u=i[S+2],r=6;break}if(0!=(16&z)){w=15&z,c=i[S+2],r=2;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}if(0!=(32&z)){r=7;break}return r=9,k.re="invalid literal/length code",g=e,n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);case 2:for(v=w;v>V;){if(0===_)return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);g=0,_--,x|=(255&k.ve(P++))<<V,V+=8}c+=x&o[v],x>>=v,V-=v,l=p,i=f,a=b,r=3;case 3:for(v=l;v>V;){if(0===_)return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);g=0,_--,x|=(255&k.ve(P++))<<V,V+=8}if(S=3*(a+(x&o[v])),x>>=i[S+1],V-=i[S+1],z=i[S],0!=(16&z)){w=15&z,h=i[S+2],r=4;break}if(0==(64&z)){l=z,a=S/3+i[S+2];break}return r=9,k.re="invalid distance code",g=e,n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);case 4:for(v=w;v>V;){if(0===_)return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);g=0,_--,x|=(255&k.ve(P++))<<V,V+=8}h+=x&o[v],x>>=v,V-=v,r=5;case 5:for(A=C-h;0>A;)A+=n.end;for(;0!==c;){if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,g=n._e(k,g),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);n.Se[C++]=n.Se[A++],I--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===I&&(C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I&&(n.write=C,g=n._e(k,g),C=n.write,I=C<n.read?n.read-C-1:n.end-C,C==n.end&&0!==n.read&&(C=0,I=C<n.read?n.read-C-1:n.end-C),0===I)))return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);g=0,n.Se[C++]=u,I--,r=0;break;case 7:if(V>7&&(V-=8,_++,P--),n.write=C,g=n._e(k,g),C=n.write,I=C<n.read?n.read-C-1:n.end-C,n.read!=n.write)return n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);r=8;case 8:return g=1,n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);case 9:return g=e,n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g);default:return g=t,n.ke=x,n.ge=V,k.te=_,k.se+=P-k.pe,k.pe=P,n.write=C,n._e(k,g)}},n.Ce=()=>{}}d.Ie=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=a,0);const y=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function b(n,r){const c=this;let a,l=0,u=0,w=0,h=0;const b=[0],m=[0],k=new p;let g=0,v=new f(4320);const S=new d;c.ge=0,c.ke=0,c.Se=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==l&&k.Ce(t),l=0,c.ge=0,c.ke=0,c.read=c.write=0},c.reset(n,null),c._e=(t,e)=>{let n,r,i;return r=t.ye,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.de&&(n=t.de),0!==n&&e==s&&(e=0),t.de-=n,t.oe+=n,t.we.set(c.Se.subarray(i,i+n),r),r+=n,i+=n),t.ye=r,c.read=i,e},c.ze=(n,r)=>{let i,s,f,p,z,_,C,I;for(p=n.pe,z=n.te,s=c.ke,f=c.ge,_=c.write,C=_<c.read?c.read-_-1:c.end-_;;){let A,x,V,P,B,D,E,M;switch(l){case 0:for(;3>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}switch(i=7&s,g=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,l=1;break;case 1:A=[],x=[],V=[[]],P=[[]],d.Ie(A,x,V,P),k.init(A[0],x[0],V[0],0,P[0],0),s>>>=3,f-=3,l=6;break;case 2:s>>>=3,f-=3,l=3;break;case 3:return s>>>=3,f-=3,l=9,n.re="invalid block type",r=e,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}break;case 1:for(;32>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return l=9,n.re="invalid stored block lengths",r=e,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=65535&s,s=f=0,l=0!==u?2:0!==g?7:0;break;case 2:if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(0===C&&(_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C&&(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,_==c.end&&0!==c.read&&(_=0,C=_<c.read?c.read-_-1:c.end-_),0===C)))return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(r=0,i=u,i>z&&(i=z),i>C&&(i=C),c.Se.set(n.ee(p,i),_),p+=i,z-=i,_+=i,C-=i,0!=(u-=i))break;l=0!==g?7:0;break;case 3:for(;14>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return l=9,n.re="too many length or distance symbols",r=e,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);if(i=258+(31&i)+(i>>5&31),!a||a.length<i)a=[];else for(I=0;i>I;I++)a[I]=0;s>>>=14,f-=14,h=0,l=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}a[y[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)a[y[h++]]=0;if(b[0]=7,i=S.be(a,b,m,v,n),0!=i)return(r=i)==e&&(a=null,l=9),c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);h=0,l=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,u;for(i=b[0];i>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}if(i=v[3*(m[0]+(s&o[i]))+1],u=v[3*(m[0]+(s&o[i]))+2],16>u)s>>>=i,f-=i,a[h++]=u;else{for(I=18==u?7:u-14,t=18==u?11:3;i+I>f;){if(0===z)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);r=0,z--,s|=(255&n.ve(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[I],s>>>=I,f-=I,I=h,i=w,I+t>258+(31&i)+(i>>5&31)||16==u&&1>I)return a=null,l=9,n.re="invalid bit length repeat",r=e,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);u=16==u?a[I-1]:0;do{a[I++]=u}while(0!=--t);h=I}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.me(257+(31&i),1+(i>>5&31),a,B,D,E,M,v,n),0!=i)return i==e&&(a=null,l=9),r=i,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);k.init(B[0],D[0],v,E[0],v,M[0]),l=6;case 6:if(c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,1!=(r=k.ze(c,n,r)))return c._e(n,r);if(r=0,k.Ce(n),p=n.pe,z=n.te,s=c.ke,f=c.ge,_=c.write,C=_<c.read?c.read-_-1:c.end-_,0===g){l=0;break}l=7;case 7:if(c.write=_,r=c._e(n,r),_=c.write,C=_<c.read?c.read-_-1:c.end-_,c.read!=c.write)return c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);l=8;case 8:return r=1,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);case 9:return r=e,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r);default:return r=t,c.ke=s,c.ge=f,n.te=z,n.se+=p-n.pe,n.pe=p,c.write=_,c._e(n,r)}}},c.Ce=t=>{c.reset(t,null),c.Se=null,v=null},c.Ae=(t,e,n)=>{c.Se.set(t.subarray(e,e+n),0),c.read=c.write=n},c.xe=()=>1==l?1:0}const m=13,k=[0,0,255,255];function g(){const n=this;function r(e){return e&&e.Ve?(e.se=e.oe=0,e.re=null,e.Ve.mode=7,e.Ve.Pe.reset(e,null),0):t}n.mode=0,n.method=0,n.Be=[0],n.De=0,n.marker=0,n.Ee=0,n.Me=t=>(n.Pe&&n.Pe.Ce(t),n.Pe=null,0),n.Re=(e,i)=>(e.re=null,n.Pe=null,8>i||i>15?(n.Me(e),t):(n.Ee=i,e.Ve.Pe=new b(e,1<<i),r(e),0)),n.Ue=(n,r)=>{let i,o;if(!n||!n.Ve||!n.he)return t;const f=n.Ve;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.te)return i;if(i=r,n.te--,n.se++,8!=(15&(f.method=n.ve(n.pe++)))){f.mode=m,n.re="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ee){f.mode=m,n.re="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.te)return i;if(i=r,n.te--,n.se++,o=255&n.ve(n.pe++),((f.method<<8)+o)%31!=0){f.mode=m,n.re="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.te)return i;i=r,n.te--,n.se++,f.De=(255&n.ve(n.pe++))<<24&4278190080,f.mode=3;case 3:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ve(n.pe++))<<16&16711680,f.mode=4;case 4:if(0===n.te)return i;i=r,n.te--,n.se++,f.De+=(255&n.ve(n.pe++))<<8&65280,f.mode=5;case 5:return 0===n.te?i:(i=r,n.te--,n.se++,f.De+=255&n.ve(n.pe++),f.mode=6,2);case 6:return f.mode=m,n.re="need dictionary",f.marker=0,t;case 7:if(i=f.Pe.ze(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.Pe.reset(n,f.Be),f.mode=12;case 12:return n.te=0,1;case m:return e;default:return t}},n.Te=(e,n,r)=>{let i=0,s=r;if(!e||!e.Ve||6!=e.Ve.mode)return t;const o=e.Ve;return s<1<<o.Ee||(s=(1<<o.Ee)-1,i=r-s),o.Pe.Ae(n,i,s),o.mode=7,0},n.je=n=>{let i,o,f,c,a;if(!n||!n.Ve)return t;const l=n.Ve;if(l.mode!=m&&(l.mode=m,l.marker=0),0===(i=n.te))return s;for(o=n.pe,f=l.marker;0!==i&&4>f;)n.ve(o)==k[f]?f++:f=0!==n.ve(o)?0:4-f,o++,i--;return n.se+=o-n.pe,n.pe=o,n.te=i,l.marker=f,4!=f?e:(c=n.se,a=n.oe,r(n),n.se=c,n.oe=a,l.mode=7,0)},n.He=e=>e&&e.Ve&&e.Ve.Pe?e.Ve.Pe.xe():t}function v(){}return v.prototype={Re:function(t){const e=this;return e.Ve=new g,t||(t=15),e.Ve.Re(e,t)},Ue:function(e){const n=this;return n.Ve?n.Ve.Ue(n,e):t},Me:function(){const e=this;if(!e.Ve)return t;const n=e.Ve.Me(e);return e.Ve=null,n},je:function(){const e=this;return e.Ve?e.Ve.je(e):t},Te:function(e,n){const r=this;return r.Ve?r.Ve.Te(r,e,n):t},ve:function(t){return this.he[t]},ee:function(t,e){return this.he.subarray(t,t+e)}},function(t){const e=new v,o=t&&t.ot?n.floor(2*t.ot):131072,f=new i(o);let c=!1;e.Re(),e.we=f,this.append=(t,n)=>{const a=[];let l,u,w=0,h=0,d=0;if(0!==t.length){e.pe=0,e.he=t,e.te=t.length;do{if(e.ye=0,e.de=o,0!==e.te||c||(e.pe=0,c=!0),l=e.Ue(0),c&&l===s){if(0!==e.te)throw new r("inflating: bad input")}else if(0!==l&&1!==l)throw new r("inflating: "+e.re);if((c||1===l)&&e.te===t.length)throw new r("inflating: bad input");e.ye&&(e.ye===o?a.push(new i(f)):a.push(f.slice(0,e.ye))),d+=e.ye,n&&e.pe>0&&e.pe!=w&&(n(e.pe),w=e.pe)}while(e.te>0||0===e.de);return a.length>1?(u=new i(d),a.forEach((t=>{u.set(t,h),h+=t.length}))):u=a[0]||new i(0),u}},this.flush=()=>{e.Me()}}})();self.initCodec=()=>{self.Deflate=wt,self.Inflate=ht};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
|
|
105
|
+
var e=e=>{if("function"==typeof URL.createObjectURL){const t=()=>URL.createObjectURL(new Blob(['const{Array:t,Object:e,Math:n,Error:r,Uint8Array:i,Uint16Array:s,Uint32Array:o,Int32Array:f,DataView:c,TextEncoder:l,crypto:u,postMessage:a,TransformStream:w,ReadableStream:h,WritableStream:d,CompressionStream:p,DecompressionStream:b}=globalThis,y=[];for(let t=0;256>t;t++){let e=t;for(let t=0;8>t;t++)1&e?e=e>>>1^3988292384:e>>>=1;y[t]=e}class m{constructor(t){this.t=t||-1}append(t){let e=0|this.t;for(let n=0,r=0|t.length;r>n;n++)e=e>>>8^y[255&(e^t[n])];this.t=e}get(){return~this.t}}class k extends w{constructor(){super({start(){this.i=new m},transform(t){this.i.append(t)},flush(t){const e=new i(4);new c(e.buffer).setUint32(0,this.i.get()),t.enqueue(e)}})}}const g={concat(t,e){if(0===t.length||0===e.length)return t.concat(e);const n=t[t.length-1],r=g.o(n);return 32===r?t.concat(e):g.l(e,r,0|n,t.slice(0,t.length-1))},u(t){const e=t.length;if(0===e)return 0;const n=t[e-1];return 32*(e-1)+g.o(n)},h(t,e){if(32*t.length<e)return t;const r=(t=t.slice(0,n.ceil(e/32))).length;return e&=31,r>0&&e&&(t[r-1]=g.p(e,t[r-1]&2147483648>>e-1,1)),t},p:(t,e,n)=>32===t?e:(n?0|e:e<<32-t)+1099511627776*t,o:t=>n.round(t/1099511627776)||32,l(t,e,n,r){for(void 0===r&&(r=[]);e>=32;e-=32)r.push(n),n=0;if(0===e)return r.concat(t);for(let i=0;i<t.length;i++)r.push(n|t[i]>>>e),n=t[i]<<32-e;const i=t.length?t[t.length-1]:0,s=g.o(i);return r.push(g.p(e+s&31,e+s>32?n:r.pop(),1)),r}},v={m:{k(t){const e=g.u(t)/8,n=new i(e);let r;for(let i=0;e>i;i++)0==(3&i)&&(r=t[i/4]),n[i]=r>>>24,r<<=8;return n},g(t){const e=[];let n,r=0;for(n=0;n<t.length;n++)r=r<<8|t[n],3==(3&n)&&(e.push(r),r=0);return 3&n&&e.push(g.p(8*(3&n),r)),e}}},S={v:function(t){t?(this.S=t.S.slice(0),this._=t._.slice(0),this.C=t.C):this.reset()}};S.v.prototype={blockSize:512,reset:function(){const t=this;return t.S=this.A.slice(0),t._=[],t.C=0,t},update:function(t){const e=this;"string"==typeof t&&(t=v.I.g(t));const n=e._=g.concat(e._,t),i=e.C,s=e.C=i+g.u(t);if(s>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const f=new o(n);let c=0;for(let t=e.blockSize+i-(e.blockSize+i&e.blockSize-1);s>=t;t+=e.blockSize)e.V(f.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),e},P:function(){const t=this;let e=t._;const r=t.S;e=g.concat(e,[g.p(1,1)]);for(let t=e.length+2;15&t;t++)e.push(0);for(e.push(n.floor(t.C/4294967296)),e.push(0|t.C);e.length;)t.V(e.splice(0,16));return t.reset(),r},A:[1732584193,4023233417,2562383102,271733878,3285377520],B:[1518500249,1859775393,2400959708,3395469782],D:(t,e,n,r)=>t>19?t>39?t>59?t>79?void 0:e^n^r:e&n|e&r|n&r:e^n^r:e&n|~e&r,M:(t,e)=>e<<t|e>>>32-t,V:function(e){const r=this,i=r.S,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let o=i[0],f=i[1],c=i[2],l=i[3],u=i[4];for(let t=0;79>=t;t++){16>t||(s[t]=r.M(1,s[t-3]^s[t-8]^s[t-14]^s[t-16]));const e=r.M(5,o)+r.D(t,f,c,l)+u+s[t]+r.B[n.floor(t/20)]|0;u=l,l=c,c=r.M(30,f),f=o,o=e}i[0]=i[0]+o|0,i[1]=i[1]+f|0,i[2]=i[2]+c|0,i[3]=i[3]+l|0,i[4]=i[4]+u|0}};const _={getRandomValues(t){const e=new o(t.buffer),r=t=>{let e=987654321;const r=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&r,(((e<<16)+(t=18e3*(65535&t)+(t>>16)&r)&r)/4294967296+.5)*(n.random()>.5?1:-1))};for(let i,s=0;s<t.length;s+=4){const t=r(4294967296*(i||n.random()));i=987654071*t(),e[s/4]=4294967296*t()|0}return t}},C={importKey:t=>new C.R(v.m.g(t)),U(t,e,n,i){if(n=n||1e4,0>i||0>n)throw new r("invalid params to pbkdf2");const s=1+(i>>5)<<2;let o,f,l,u,a;const w=new ArrayBuffer(s),h=new c(w);let d=0;const p=g;for(e=v.m.g(e),a=1;(s||1)>d;a++){for(o=f=t.encrypt(p.concat(e,[a])),l=1;n>l;l++)for(f=t.encrypt(f),u=0;u<f.length;u++)o[u]^=f[u];for(l=0;(s||1)>d&&l<o.length;l++)h.setInt32(d,o[l]),d+=4}return w.slice(0,i/8)},R:class{constructor(t){const e=this,n=e.T=S.v,r=[[],[]],i=n.prototype.blockSize/32;e.W=[new n,new n],t.length>i&&(t=n.hash(t));for(let e=0;i>e;e++)r[0][e]=909522486^t[e],r[1][e]=1549556828^t[e];e.W[0].update(r[0]),e.W[1].update(r[1]),e.j=new n(e.W[0])}reset(){const t=this;t.j=new t.T(t.W[0]),t.H=!1}update(t){this.H=!0,this.j.update(t)}digest(){const t=this,e=t.j.P(),n=new t.T(t.W[1]).update(e).P();return t.reset(),n}encrypt(t){if(this.H)throw new r("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},z={name:"PBKDF2"},x=e.assign({hash:{name:"HMAC"}},z),A=e.assign({iterations:1e3,hash:{name:"SHA-1"}},z),I=["deriveBits"],V=[8,12,16],P=[16,24,32],B=[0,0,0,0],D=void 0!==u,E=D&&void 0!==u.subtle,M=D&&"function"==typeof u.getRandomValues,R=D&&E&&"function"==typeof u.subtle.importKey,U=D&&E&&"function"==typeof u.subtle.deriveBits,T=v.m,W=class{constructor(t){const e=this;e.K=[[[],[],[],[],[]],[[],[],[],[],[]]],e.K[0][0][0]||e.L();const n=e.K[0][4],i=e.K[1],s=t.length;let o,f,c,l=1;if(4!==s&&6!==s&&8!==s)throw new r("invalid aes key size");for(e.B=[f=t.slice(0),c=[]],o=s;4*s+28>o;o++){let t=f[o-1];(o%s==0||8===s&&o%s==4)&&(t=n[t>>>24]<<24^n[t>>16&255]<<16^n[t>>8&255]<<8^n[255&t],o%s==0&&(t=t<<8^t>>>24^l<<24,l=l<<1^283*(l>>7))),f[o]=f[o-s]^t}for(let t=0;o;t++,o--){const e=f[3&t?o:o-4];c[t]=4>=o||4>t?e:i[0][n[e>>>24]]^i[1][n[e>>16&255]]^i[2][n[e>>8&255]]^i[3][n[255&e]]}}encrypt(t){return this.F(t,0)}decrypt(t){return this.F(t,1)}L(){const t=this.K[0],e=this.K[1],n=t[4],r=e[4],i=[],s=[];let o,f,c,l;for(let t=0;256>t;t++)s[(i[t]=t<<1^283*(t>>7))^t]=t;for(let u=o=0;!n[u];u^=f||1,o=s[o]||1){let s=o^o<<1^o<<2^o<<3^o<<4;s=s>>8^255&s^99,n[u]=s,r[s]=u,l=i[c=i[f=i[u]]];let a=16843009*l^65537*c^257*f^16843008*u,w=257*i[s]^16843008*s;for(let n=0;4>n;n++)t[n][u]=w=w<<24^w>>>8,e[n][s]=a=a<<24^a>>>8}for(let n=0;5>n;n++)t[n]=t[n].slice(0),e[n]=e[n].slice(0)}F(t,e){if(4!==t.length)throw new r("invalid aes block size");const n=this.B[e],i=n.length/4-2,s=[0,0,0,0],o=this.K[e],f=o[0],c=o[1],l=o[2],u=o[3],a=o[4];let w,h,d,p=t[0]^n[0],b=t[e?3:1]^n[1],y=t[2]^n[2],m=t[e?1:3]^n[3],k=4;for(let t=0;i>t;t++)w=f[p>>>24]^c[b>>16&255]^l[y>>8&255]^u[255&m]^n[k],h=f[b>>>24]^c[y>>16&255]^l[m>>8&255]^u[255&p]^n[k+1],d=f[y>>>24]^c[m>>16&255]^l[p>>8&255]^u[255&b]^n[k+2],m=f[m>>>24]^c[p>>16&255]^l[b>>8&255]^u[255&y]^n[k+3],k+=4,p=w,b=h,y=d;for(let t=0;4>t;t++)s[e?3&-t:t]=a[p>>>24]<<24^a[b>>16&255]<<16^a[y>>8&255]<<8^a[255&m]^n[k++],w=p,p=b,b=y,y=m,m=w;return s}},j=class{constructor(t,e){this.O=t,this.q=e,this.G=e}reset(){this.G=this.q}update(t){return this.J(this.O,t,this.G)}N(t){if(255==(t>>24&255)){let e=t>>16&255,n=t>>8&255,r=255&t;255===e?(e=0,255===n?(n=0,255===r?r=0:++r):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=r}else t+=1<<24;return t}X(t){0===(t[0]=this.N(t[0]))&&(t[1]=this.N(t[1]))}J(t,e,n){let r;if(!(r=e.length))return[];const i=g.u(e);for(let i=0;r>i;i+=4){this.X(n);const r=t.encrypt(n);e[i]^=r[0],e[i+1]^=r[1],e[i+2]^=r[2],e[i+3]^=r[3]}return g.h(e,i)}},H=C.R;class K extends w{constructor(n,s,o){let f;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,signed:s,Z:o-1,pending:new i(0)})},async transform(e,n){const s=this;if(s.password){const n=s.password;s.password=null;const i=G(e,0,V[s.Z]+2);await(async(t,e,n)=>{await O(t,n,G(e,0,V[t.Z]));const i=G(e,V[t.Z]),s=t.keys.passwordVerification;if(s[0]!=i[0]||s[1]!=i[1])throw new r("Invalid pasword")})(s,i,n),s.$=new j(new W(s.keys.key),t.from(B)),s.tt=new H(s.keys.et),e=G(e,V[s.Z]+2),s.Y()}else await s.ready;const o=new i(e.length-10-(e.length-10)%16);n.enqueue(F(s,e,o,0,10,!0))},async flush(t){const e=this;await e.ready;const n=e.pending,r=G(n,0,n.length-10),s=G(n,n.length-10);let o=new i(0);if(r.length){const t=N(T,r);e.tt.update(t);const n=e.$.update(t);o=J(T,n)}if(f.valid=!0,e.signed){const t=G(J(T,e.tt.digest()),0,10);for(let e=0;10>e;e++)t[e]!=s[e]&&(f.valid=!1)}t.enqueue(o)}}),f=this}}class L extends w{constructor(n,r){let s;super({start(){e.assign(this,{ready:new Promise((t=>this.Y=t)),password:n,Z:r-1,pending:new i(0)})},async transform(e,n){const r=this;let s=new i(0);if(r.password){const e=r.password;r.password=null,s=await(async(t,e)=>{const n=(r=new i(V[t.Z]),M?u.getRandomValues(r):_.getRandomValues(r));var r;return await O(t,e,n),q(n,t.keys.passwordVerification)})(r,e),r.$=new j(new W(r.keys.key),t.from(B)),r.tt=new H(r.keys.et),r.Y()}else await r.ready;const o=new i(s.length+e.length-e.length%16);o.set(s,0),n.enqueue(F(r,e,o,s.length,0))},async flush(t){const e=this;await e.ready;let n=new i(0);if(e.pending.length){const t=e.$.update(N(T,e.pending));e.tt.update(t),n=J(T,t)}s.signature=J(T,e.tt.digest()).slice(0,10),t.enqueue(q(n,s.signature))}}),s=this}}function F(t,e,n,r,s,o){const f=e.length-s;let c;for(t.pending.length&&(e=q(t.pending,e),n=((t,e)=>{if(e&&e>t.length){const n=t;(t=new i(e)).set(n,0)}return t})(n,f-f%16)),c=0;f-16>=c;c+=16){const i=N(T,G(e,c,c+16));o&&t.tt.update(i);const s=t.$.update(i);o||t.tt.update(s),n.set(J(T,s),c+r)}return t.pending=G(e,c),n}async function O(t,n,r){const s=(t=>{if(void 0===l){const e=new i((t=unescape(encodeURIComponent(t))).length);for(let n=0;n<e.length;n++)e[n]=t.charCodeAt(n);return e}return(new l).encode(t)})(n),o=await((t,e,n,r,i)=>R?u.subtle.importKey("raw",e,n,!1,i):C.importKey(e))(0,s,x,0,I),f=await(async(t,e,n)=>U?await u.subtle.deriveBits(t,e,n):C.U(e,t.salt,A.iterations,n))(e.assign({salt:r},A),o,8*(2*P[t.Z]+2)),c=new i(f);t.keys={key:N(T,G(c,0,P[t.Z])),et:N(T,G(c,P[t.Z],2*P[t.Z])),passwordVerification:G(c,2*P[t.Z])}}function q(t,e){let n=t;return t.length+e.length&&(n=new i(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function G(t,e,n){return t.subarray(e,n)}function J(t,e){return t.k(e)}function N(t,e){return t.g(e)}class Q extends w{constructor(t,n){let i;super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;if(n.password){const e=Y(n,t.subarray(0,12));if(n.password=null,e[11]!=n.passwordVerification)throw new r("Invalid pasword");t=t.subarray(12)}e.enqueue(Y(n,t))},flush(){i.valid=!0}}),i=this}}class X extends w{constructor(t,n){super({start(){e.assign(this,{password:t,passwordVerification:n}),$(this,t)},transform(t,e){const n=this;let r,s;if(n.password){n.password=null;const e=u.getRandomValues(new i(12));e[11]=n.passwordVerification,r=new i(t.length+e.length),r.set(Z(n,e),0),s=12}else r=new i(t.length),s=0;r.set(Z(n,t),s),e.enqueue(r)},flush(){}})}}function Y(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,n[r]);return n}function Z(t,e){const n=new i(e.length);for(let r=0;r<e.length;r++)n[r]=et(t)^e[r],tt(t,e[r]);return n}function $(t,e){t.keys=[305419896,591751049,878082192],t.nt=new m(t.keys[0]),t.rt=new m(t.keys[2]);for(let n=0;n<e.length;n++)tt(t,e.charCodeAt(n))}function tt(t,e){t.nt.append([e]),t.keys[0]=~t.nt.get(),t.keys[1]=rt(t.keys[1]+nt(t.keys[0])),t.keys[1]=rt(n.imul(t.keys[1],134775813)+1),t.rt.append([t.keys[1]>>>24]),t.keys[2]=~t.rt.get()}function et(t){const e=2|t.keys[2];return nt(n.imul(e,1^e)>>>8)}function nt(t){return 255&t}function rt(t){return 4294967295&t}class it extends w{constructor(t,e){let n;super({start(){n=new t(e)},transform(t,e){t=n.append(t),e.enqueue(t)},flush(t){const e=n.flush();e&&t.enqueue(e)}})}}const st=void 0===p,ot=void 0===b;let ft=!0,ct=!0;class lt extends w{constructor(t,e,{it:n},...r){super({},...r);const{compressed:i,st:s,password:o,passwordVerification:f,encryptionStrength:l,zipCrypto:u,signed:a}=e,w=this;let h,d,b=wt(super.readable);const y=!!o;if(y&&!u||!a||([b,h]=b.tee(),h=h.pipeThrough(new k)),i)if(void 0!==s&&!s||st&&!ct)b=at(t,b,n);else try{const t=new p("deflate-raw");b=b.pipeThrough(t)}catch(e){ct=!1,b=at(t,b,n)}y&&(u?b=b.pipeThrough(new X(o,f)):(d=new L(o,l),b=b.pipeThrough(d))),ht(w,b,(async()=>{let t;y&&!u&&(t=d.signature),y&&!u||!a||(t=await h.getReader().read(),t=new c(t.value.buffer).getUint32(0)),w.signature=t}))}}class ut extends w{constructor(t,e,{it:n},...i){super({},...i);const{zipCrypto:s,password:o,passwordVerification:f,signed:l,encryptionStrength:u,compressed:a,st:w}=e;let h,d,p=wt(super.readable);const y=!!o;if(y&&(s?p=p.pipeThrough(new Q(o,f)):(d=new K(o,l,u),p=p.pipeThrough(d))),a)if(void 0!==w&&!w||ot&&!ft)p=at(t,p,n);else try{p=p.pipeThrough(new b("deflate-raw"))}catch(e){ft=!1,p=at(t,p,n)}y&&!s||!l||([p,h]=p.tee(),h=h.pipeThrough(new k)),ht(this,p,(async()=>{if(y&&!s&&!d.valid)throw new r("Invalid signature");if((!y||s)&&l){const t=await h.getReader().read();if(t!=new c(t.value.buffer).getUint32(0,!1))throw new r("Invalid signature")}}))}}function at(t,e,n){return e.pipeThrough(new it(t,{it:n}))}function wt(t){return t.pipeThrough(new w({transform(t,e){t&&t.length&&e.enqueue(t)}}))}function ht(t,n,r){t.length=0,n=n.pipeThrough(new w({transform(e,n){e&&e.length&&(t.length+=e.length,n.enqueue(e))},flush:r})),e.defineProperty(t,"readable",{get:()=>n})}const dt=new Map;let pt,bt=0;function yt(t){if(t.data){const e=t.data;if(e&&e.length)try{t.data=e.buffer,a(t,[t.data])}catch(e){a(t)}else a(t)}else a(t)}addEventListener("message",(async t=>{const e=t.data,n=e.type;try{if("start"==n&&(async t=>{try{t.scripts&&t.scripts.length&&importScripts.apply(void 0,t.scripts);const e=t.options;let n;self.initCodec&&self.initCodec(),e.codecType.startsWith("deflate")?n=self.Deflate:e.codecType.startsWith("inflate")&&(n=self.Inflate);const r=new h({async pull(t){let e=new Promise(((t,e)=>dt.set(bt,{resolve:t,reject:e})));yt({type:"pull",messageId:bt}),bt++;const{value:n,done:r}=await e;t.enqueue(n),r&&t.close()}},{highWaterMark:1}),i=new d({write(t){yt({type:"data",data:t})}});pt=((t,e,n,r,i)=>{const s=new AbortController,{signal:o}=s;if(r.codecType.startsWith("deflate"))return{ot:()=>f(lt),abort:c};if(r.codecType.startsWith("inflate"))return{ot:()=>f(ut),abort:c};async function f(s){const f=new s(t,r,i);await e.pipeThrough(f,{signal:o}).pipeTo(n,{ft:!0});const{length:c,signature:l}=f;return{length:c,signature:l}}function c(){s.abort()}})(n,r,i,e,t.config),yt({type:"close",result:await pt.ot()})}catch(t){a({error:{message:t.message,stack:t.stack}})}})(e),"data"==n){const{resolve:t}=dt.get(e.messageId);dt.delete(e.messageId),t({value:new i(e.data),done:e.done})}"abort"==n&&pt.abort()}catch(t){a({error:{message:t.message,stack:t.stack}})}}));const mt=(()=>{const e=-2;function o(e){return f(e.map((([e,n])=>new t(e).fill(n,0,e))))}function f(e){return e.reduce(((e,n)=>e.concat(t.isArray(n)?f(n):n)),[])}const c=[0,1,2,3].concat(...o([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function l(){const t=this;function e(t,e){let n=0;do{n|=1&t,t>>>=1,n<<=1}while(--e>0);return n>>>1}t.ct=r=>{const i=t.lt,s=t.wt.ut,o=t.wt.ht;let f,c,l,u=-1;for(r.dt=0,r.bt=573,f=0;o>f;f++)0!==i[2*f]?(r.yt[++r.dt]=u=f,r.kt[f]=0):i[2*f+1]=0;for(;2>r.dt;)l=r.yt[++r.dt]=2>u?++u:0,i[2*l]=1,r.kt[l]=0,r.gt--,s&&(r.vt-=s[2*l+1]);for(t.St=u,f=n.floor(r.dt/2);f>=1;f--)r._t(i,f);l=o;do{f=r.yt[1],r.yt[1]=r.yt[r.dt--],r._t(i,1),c=r.yt[1],r.yt[--r.bt]=f,r.yt[--r.bt]=c,i[2*l]=i[2*f]+i[2*c],r.kt[l]=n.max(r.kt[f],r.kt[c])+1,i[2*f+1]=i[2*c+1]=l,r.yt[1]=l++,r._t(i,1)}while(r.dt>=2);r.yt[--r.bt]=r.yt[1],(e=>{const n=t.lt,r=t.wt.ut,i=t.wt.Ct,s=t.wt.zt,o=t.wt.xt;let f,c,l,u,a,w,h=0;for(u=0;15>=u;u++)e.At[u]=0;for(n[2*e.yt[e.bt]+1]=0,f=e.bt+1;573>f;f++)c=e.yt[f],u=n[2*n[2*c+1]+1]+1,u>o&&(u=o,h++),n[2*c+1]=u,c>t.St||(e.At[u]++,a=0,s>c||(a=i[c-s]),w=n[2*c],e.gt+=w*(u+a),r&&(e.vt+=w*(r[2*c+1]+a)));if(0!==h){do{for(u=o-1;0===e.At[u];)u--;e.At[u]--,e.At[u+1]+=2,e.At[o]--,h-=2}while(h>0);for(u=o;0!==u;u--)for(c=e.At[u];0!==c;)l=e.yt[--f],l>t.St||(n[2*l+1]!=u&&(e.gt+=(u-n[2*l+1])*n[2*l],n[2*l+1]=u),c--)}})(r),((t,n,r)=>{const i=[];let s,o,f,c=0;for(s=1;15>=s;s++)i[s]=c=c+r[s-1]<<1;for(o=0;n>=o;o++)f=t[2*o+1],0!==f&&(t[2*o]=e(i[f]++,f))})(i,t.St,r.At)}}function u(t,e,n,r,i){const s=this;s.ut=t,s.Ct=e,s.zt=n,s.ht=r,s.xt=i}l.It=[0,1,2,3,4,5,6,7].concat(...o([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]])),l.Vt=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],l.Pt=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],l.Bt=t=>256>t?c[t]:c[256+(t>>>7)],l.Dt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],l.Et=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],l.Mt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],l.Rt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];const a=o([[144,8],[112,9],[24,7],[8,8]]);u.Ut=f([12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227].map(((t,e)=>[t,a[e]])));const w=o([[30,5]]);function h(t,e,n,r,i){const s=this;s.Tt=t,s.Wt=e,s.jt=n,s.Ht=r,s.Kt=i}u.Lt=f([0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23].map(((t,e)=>[t,w[e]]))),u.Ft=new u(u.Ut,l.Dt,257,286,15),u.Ot=new u(u.Lt,l.Et,0,30,15),u.qt=new u(null,l.Mt,0,19,7);const d=[new h(0,0,0,0,0),new h(4,4,8,4,1),new h(4,5,16,8,1),new h(4,6,32,32,1),new h(4,4,16,16,2),new h(8,16,32,32,2),new h(8,16,128,128,2),new h(8,32,128,256,2),new h(32,128,258,1024,2),new h(32,258,258,4096,2)],p=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],b=113,y=666,m=262;function k(t,e,n,r){const i=t[2*e],s=t[2*n];return s>i||i==s&&r[e]<=r[n]}function g(){const t=this;let r,o,f,c,a,w,h,g,v,S,_,C,z,x,A,I,V,P,B,D,E,M,R,U,T,W,j,H,K,L,F,O,q;const G=new l,J=new l,N=new l;let Q,X,Y,Z,$,tt;function et(){let e;for(e=0;286>e;e++)F[2*e]=0;for(e=0;30>e;e++)O[2*e]=0;for(e=0;19>e;e++)q[2*e]=0;F[512]=1,t.gt=t.vt=0,X=Y=0}function nt(t,e){let n,r=-1,i=t[1],s=0,o=7,f=4;0===i&&(o=138,f=3),t[2*(e+1)+1]=65535;for(let c=0;e>=c;c++)n=i,i=t[2*(c+1)+1],++s<o&&n==i||(f>s?q[2*n]+=s:0!==n?(n!=r&&q[2*n]++,q[32]++):s>10?q[36]++:q[34]++,s=0,r=n,0===i?(o=138,f=3):n==i?(o=6,f=3):(o=7,f=4))}function rt(e){t.Gt[t.pending++]=e}function it(t){rt(255&t),rt(t>>>8&255)}function st(t,e){let n;const r=e;tt>16-r?(n=t,$|=n<<tt&65535,it($),$=n>>>16-tt,tt+=r-16):($|=t<<tt&65535,tt+=r)}function ot(t,e){const n=2*t;st(65535&e[n],65535&e[n+1])}function ft(t,e){let n,r,i=-1,s=t[1],o=0,f=7,c=4;for(0===s&&(f=138,c=3),n=0;e>=n;n++)if(r=s,s=t[2*(n+1)+1],++o>=f||r!=s){if(c>o)do{ot(r,q)}while(0!=--o);else 0!==r?(r!=i&&(ot(r,q),o--),ot(16,q),st(o-3,2)):o>10?(ot(18,q),st(o-11,7)):(ot(17,q),st(o-3,3));o=0,i=r,0===s?(f=138,c=3):r==s?(f=6,c=3):(f=7,c=4)}}function ct(){16==tt?(it($),$=0,tt=0):8>tt||(rt(255&$),$>>>=8,tt-=8)}function lt(e,r){let i,s,o;if(t.Jt[X]=e,t.Nt[X]=255&r,X++,0===e?F[2*r]++:(Y++,e--,F[2*(l.It[r]+256+1)]++,O[2*l.Bt(e)]++),0==(8191&X)&&j>2){for(i=8*X,s=E-V,o=0;30>o;o++)i+=O[2*o]*(5+l.Et[o]);if(i>>>=3,Y<n.floor(X/2)&&i<n.floor(s/2))return!0}return X==Q-1}function ut(e,n){let r,i,s,o,f=0;if(0!==X)do{r=t.Jt[f],i=t.Nt[f],f++,0===r?ot(i,e):(s=l.It[i],ot(s+256+1,e),o=l.Dt[s],0!==o&&(i-=l.Vt[s],st(i,o)),r--,s=l.Bt(r),ot(s,n),o=l.Et[s],0!==o&&(r-=l.Pt[s],st(r,o)))}while(X>f);ot(256,e),Z=e[513]}function at(){tt>8?it($):tt>0&&rt(255&$),$=0,tt=0}function wt(e,n,r){st(0+(r?1:0),3),((e,n)=>{at(),Z=8,it(n),it(~n),t.Gt.set(g.subarray(e,e+n),t.pending),t.pending+=n})(e,n)}function ht(e){((e,n,r)=>{let i,s,o=0;j>0?(G.ct(t),J.ct(t),o=(()=>{let e;for(nt(F,G.St),nt(O,J.St),N.ct(t),e=18;e>=3&&0===q[2*l.Rt[e]+1];e--);return t.gt+=14+3*(e+1),e})(),i=t.gt+3+7>>>3,s=t.vt+3+7>>>3,s>i||(i=s)):i=s=n+5,n+4>i||-1==e?s==i?(st(2+(r?1:0),3),ut(u.Ut,u.Lt)):(st(4+(r?1:0),3),((t,e,n)=>{let r;for(st(t-257,5),st(e-1,5),st(n-4,4),r=0;n>r;r++)st(q[2*l.Rt[r]+1],3);ft(F,t-1),ft(O,e-1)})(G.St+1,J.St+1,o+1),ut(F,O)):wt(e,n,r),et(),r&&at()})(0>V?-1:V,E-V,e),V=E,r.Qt()}function dt(){let t,e,n,i;do{if(i=v-R-E,0===i&&0===E&&0===R)i=a;else if(-1==i)i--;else if(E>=a+a-m){g.set(g.subarray(a,a+a),0),M-=a,E-=a,V-=a,t=z,n=t;do{e=65535&_[--n],_[n]=a>e?0:e-a}while(0!=--t);t=a,n=t;do{e=65535&S[--n],S[n]=a>e?0:e-a}while(0!=--t);i+=a}if(0===r.Xt)return;t=r.Yt(g,E+R,i),R+=t,3>R||(C=255&g[E],C=(C<<I^255&g[E+1])&A)}while(m>R&&0!==r.Xt)}function pt(t){let e,n,r=T,i=E,s=U;const o=E>a-m?E-(a-m):0;let f=L;const c=h,l=E+258;let u=g[i+s-1],w=g[i+s];K>U||(r>>=2),f>R&&(f=R);do{if(e=t,g[e+s]==w&&g[e+s-1]==u&&g[e]==g[i]&&g[++e]==g[i+1]){i+=2,e++;do{}while(g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&g[++i]==g[++e]&&l>i);if(n=258-(l-i),i=l-258,n>s){if(M=t,s=n,n>=f)break;u=g[i+s-1],w=g[i+s]}}}while((t=65535&S[t&c])>o&&0!=--r);return s>R?R:s}t.kt=[],t.At=[],t.yt=[],F=[],O=[],q=[],t._t=(e,n)=>{const r=t.yt,i=r[n];let s=n<<1;for(;s<=t.dt&&(s<t.dt&&k(e,r[s+1],r[s],t.kt)&&s++,!k(e,i,r[s],t.kt));)r[n]=r[s],n=s,s<<=1;r[n]=i},t.Zt=(r,l,p,y,m,k)=>(y||(y=8),m||(m=8),k||(k=0),r.$t=null,-1==l&&(l=6),1>m||m>9||8!=y||9>p||p>15||0>l||l>9||0>k||k>2?e:(r.te=t,w=p,a=1<<w,h=a-1,x=m+7,z=1<<x,A=z-1,I=n.floor((x+3-1)/3),g=new i(2*a),S=[],_=[],Q=1<<m+6,t.Gt=new i(4*Q),f=4*Q,t.Jt=new s(Q),t.Nt=new i(Q),j=l,H=k,(e=>(e.ee=e.ne=0,e.$t=null,t.pending=0,t.re=0,o=b,c=0,G.lt=F,G.wt=u.Ft,J.lt=O,J.wt=u.Ot,N.lt=q,N.wt=u.qt,$=0,tt=0,Z=8,et(),(()=>{v=2*a,_[z-1]=0;for(let t=0;z-1>t;t++)_[t]=0;W=d[j].Wt,K=d[j].Tt,L=d[j].jt,T=d[j].Ht,E=0,V=0,R=0,P=U=2,D=0,C=0})(),0))(r))),t.ie=()=>42!=o&&o!=b&&o!=y?e:(t.Nt=null,t.Jt=null,t.Gt=null,_=null,S=null,g=null,t.te=null,o==b?-3:0),t.se=(t,n,r)=>{let i=0;return-1==n&&(n=6),0>n||n>9||0>r||r>2?e:(d[j].Kt!=d[n].Kt&&0!==t.ee&&(i=t.oe(1)),j!=n&&(j=n,W=d[j].Wt,K=d[j].Tt,L=d[j].jt,T=d[j].Ht),H=r,i)},t.fe=(t,n,r)=>{let i,s=r,f=0;if(!n||42!=o)return e;if(3>s)return 0;for(s>a-m&&(s=a-m,f=r-s),g.set(n.subarray(f,f+s),0),E=s,V=s,C=255&g[0],C=(C<<I^255&g[1])&A,i=0;s-3>=i;i++)C=(C<<I^255&g[i+2])&A,S[i&h]=_[C],_[C]=i;return 0},t.oe=(n,i)=>{let s,l,k,v,x;if(i>4||0>i)return e;if(!n.ce||!n.le&&0!==n.Xt||o==y&&4!=i)return n.$t=p[4],e;if(0===n.ue)return n.$t=p[7],-5;var T;if(r=n,v=c,c=i,42==o&&(l=8+(w-8<<4)<<8,k=(j-1&255)>>1,k>3&&(k=3),l|=k<<6,0!==E&&(l|=32),l+=31-l%31,o=b,rt((T=l)>>8&255),rt(255&T)),0!==t.pending){if(r.Qt(),0===r.ue)return c=-1,0}else if(0===r.Xt&&v>=i&&4!=i)return r.$t=p[7],-5;if(o==y&&0!==r.Xt)return n.$t=p[7],-5;if(0!==r.Xt||0!==R||0!=i&&o!=y){switch(x=-1,d[j].Kt){case 0:x=(t=>{let e,n=65535;for(n>f-5&&(n=f-5);;){if(1>=R){if(dt(),0===R&&0==t)return 0;if(0===R)break}if(E+=R,R=0,e=V+n,(0===E||E>=e)&&(R=E-e,E=e,ht(!1),0===r.ue))return 0;if(E-V>=a-m&&(ht(!1),0===r.ue))return 0}return ht(4==t),0===r.ue?4==t?2:0:4==t?3:1})(i);break;case 1:x=(t=>{let e,n=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(C=(C<<I^255&g[E+2])&A,n=65535&_[C],S[E&h]=_[C],_[C]=E),0===n||(E-n&65535)>a-m||2!=H&&(P=pt(n)),3>P)e=lt(0,255&g[E]),R--,E++;else if(e=lt(E-M,P-3),R-=P,P>W||3>R)E+=P,P=0,C=255&g[E],C=(C<<I^255&g[E+1])&A;else{P--;do{E++,C=(C<<I^255&g[E+2])&A,n=65535&_[C],S[E&h]=_[C],_[C]=E}while(0!=--P);E++}if(e&&(ht(!1),0===r.ue))return 0}return ht(4==t),0===r.ue?4==t?2:0:4==t?3:1})(i);break;case 2:x=(t=>{let e,n,i=0;for(;;){if(m>R){if(dt(),m>R&&0==t)return 0;if(0===R)break}if(3>R||(C=(C<<I^255&g[E+2])&A,i=65535&_[C],S[E&h]=_[C],_[C]=E),U=P,B=M,P=2,0!==i&&W>U&&a-m>=(E-i&65535)&&(2!=H&&(P=pt(i)),5>=P&&(1==H||3==P&&E-M>4096)&&(P=2)),3>U||P>U)if(0!==D){if(e=lt(0,255&g[E-1]),e&&ht(!1),E++,R--,0===r.ue)return 0}else D=1,E++,R--;else{n=E+R-3,e=lt(E-1-B,U-3),R-=U-1,U-=2;do{++E>n||(C=(C<<I^255&g[E+2])&A,i=65535&_[C],S[E&h]=_[C],_[C]=E)}while(0!=--U);if(D=0,P=2,E++,e&&(ht(!1),0===r.ue))return 0}}return 0!==D&&(e=lt(0,255&g[E-1]),D=0),ht(4==t),0===r.ue?4==t?2:0:4==t?3:1})(i)}if(2!=x&&3!=x||(o=y),0==x||2==x)return 0===r.ue&&(c=-1),0;if(1==x){if(1==i)st(2,3),ot(256,u.Ut),ct(),9>1+Z+10-tt&&(st(2,3),ot(256,u.Ut),ct()),Z=7;else if(wt(0,0,!1),3==i)for(s=0;z>s;s++)_[s]=0;if(r.Qt(),0===r.ue)return c=-1,0}}return 4!=i?0:1}}function v(){const t=this;t.ae=0,t.we=0,t.Xt=0,t.ee=0,t.ue=0,t.ne=0}return v.prototype={Zt:function(t,e){const n=this;return n.te=new g,e||(e=15),n.te.Zt(n,t,e)},oe:function(t){const n=this;return n.te?n.te.oe(n,t):e},ie:function(){const t=this;if(!t.te)return e;const n=t.te.ie();return t.te=null,n},se:function(t,n){const r=this;return r.te?r.te.se(r,t,n):e},fe:function(t,n){const r=this;return r.te?r.te.fe(r,t,n):e},Yt:function(t,e,n){const r=this;let i=r.Xt;return i>n&&(i=n),0===i?0:(r.Xt-=i,t.set(r.le.subarray(r.ae,r.ae+i),e),r.ae+=i,r.ee+=i,i)},Qt:function(){const t=this;let e=t.te.pending;e>t.ue&&(e=t.ue),0!==e&&(t.ce.set(t.te.Gt.subarray(t.te.re,t.te.re+e),t.we),t.we+=e,t.te.re+=e,t.ne+=e,t.ue-=e,t.te.pending-=e,0===t.te.pending&&(t.te.re=0))}},function(t){const e=new v,s=(o=t&&t.it?t.it:65536)+5*(n.floor(o/16383)+1);var o;const f=new i(s);let c=t?t.level:-1;void 0===c&&(c=-1),e.Zt(c),e.ce=f,this.append=(t,n)=>{let o,c,l=0,u=0,a=0;const w=[];if(t.length){e.ae=0,e.le=t,e.Xt=t.length;do{if(e.we=0,e.ue=s,o=e.oe(0),0!=o)throw new r("deflating: "+e.$t);e.we&&(e.we==s?w.push(new i(f)):w.push(f.slice(0,e.we))),a+=e.we,n&&e.ae>0&&e.ae!=l&&(n(e.ae),l=e.ae)}while(e.Xt>0||0===e.ue);return w.length>1?(c=new i(a),w.forEach((t=>{c.set(t,u),u+=t.length}))):c=w[0]||new i(0),c}},this.flush=()=>{let t,n,o=0,c=0;const l=[];do{if(e.we=0,e.ue=s,t=e.oe(4),1!=t&&0!=t)throw new r("deflating: "+e.$t);s-e.ue>0&&l.push(f.slice(0,e.we)),c+=e.we}while(e.Xt>0||0===e.ue);return e.ie(),n=new i(c),l.forEach((t=>{n.set(t,o),o+=t.length})),n}}})(),kt=(()=>{const t=-2,e=-3,s=-5,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],c=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],l=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],u=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],w=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],h=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function d(){let t,n,r,i,o,c;function l(t,n,f,l,u,a,w,h,d,p,b){let y,m,k,g,v,S,_,C,z,x,A,I,V,P,B;x=0,v=f;do{r[t[n+x]]++,x++,v--}while(0!==v);if(r[0]==f)return w[0]=-1,h[0]=0,0;for(C=h[0],S=1;15>=S&&0===r[S];S++);for(_=S,S>C&&(C=S),v=15;0!==v&&0===r[v];v--);for(k=v,C>v&&(C=v),h[0]=C,P=1<<S;v>S;S++,P<<=1)if(0>(P-=r[S]))return e;if(0>(P-=r[v]))return e;for(r[v]+=P,c[1]=S=0,x=1,V=2;0!=--v;)c[V]=S+=r[x],V++,x++;v=0,x=0;do{0!==(S=t[n+x])&&(b[c[S]++]=v),x++}while(++v<f);for(f=c[k],c[0]=v=0,x=0,g=-1,I=-C,o[0]=0,A=0,B=0;k>=_;_++)for(y=r[_];0!=y--;){for(;_>I+C;){if(g++,I+=C,B=k-I,B=B>C?C:B,(m=1<<(S=_-I))>y+1&&(m-=y+1,V=_,B>S))for(;++S<B&&(m<<=1)>r[++V];)m-=r[V];if(B=1<<S,p[0]+B>1440)return e;o[g]=A=p[0],p[0]+=B,0!==g?(c[g]=v,i[0]=S,i[1]=C,S=v>>>I-C,i[2]=A-o[g-1]-S,d.set(i,3*(o[g-1]+S))):w[0]=A}for(i[1]=_-I,f>x?b[x]<l?(i[0]=256>b[x]?0:96,i[2]=b[x++]):(i[0]=a[b[x]-l]+16+64,i[2]=u[b[x++]-l]):i[0]=192,m=1<<_-I,S=v>>>I;B>S;S+=m)d.set(i,3*(A+S));for(S=1<<_-1;0!=(v&S);S>>>=1)v^=S;for(v^=S,z=(1<<I)-1;(v&z)!=c[g];)g--,I-=C,z=(1<<I)-1}return 0!==P&&1!=k?s:0}function d(e){let s;for(t||(t=[],n=[],r=new f(16),i=[],o=new f(15),c=new f(16)),n.length<e&&(n=[]),s=0;e>s;s++)n[s]=0;for(s=0;16>s;s++)r[s]=0;for(s=0;3>s;s++)i[s]=0;o.set(r.subarray(0,15),0),c.set(r.subarray(0,16),0)}this.he=(r,i,o,f,c)=>{let u;return d(19),t[0]=0,u=l(r,0,19,19,null,null,o,i,f,t,n),u==e?c.$t="oversubscribed dynamic bit lengths tree":u!=s&&0!==i[0]||(c.$t="incomplete dynamic bit lengths tree",u=e),u},this.de=(r,i,o,f,c,p,b,y,m)=>{let k;return d(288),t[0]=0,k=l(o,0,r,257,u,a,p,f,y,t,n),0!=k||0===f[0]?(k==e?m.$t="oversubscribed literal/length tree":-4!=k&&(m.$t="incomplete literal/length tree",k=e),k):(d(288),k=l(o,r,i,0,w,h,b,c,y,t,n),0!=k||0===c[0]&&r>257?(k==e?m.$t="oversubscribed distance tree":k==s?(m.$t="incomplete distance tree",k=e):-4!=k&&(m.$t="empty distance tree with lengths",k=e),k):0)}}function p(){const n=this;let r,i,s,f,c=0,l=0,u=0,a=0,w=0,h=0,d=0,p=0,b=0,y=0;function m(t,n,r,i,s,f,c,l){let u,a,w,h,d,p,b,y,m,k,g,v,S,_,C,z;b=l.ae,y=l.Xt,d=c.pe,p=c.be,m=c.write,k=m<c.read?c.read-m-1:c.end-m,g=o[t],v=o[n];do{for(;20>p;)y--,d|=(255&l.ye(b++))<<p,p+=8;if(u=d&g,a=r,w=i,z=3*(w+u),0!==(h=a[z]))for(;;){if(d>>=a[z+1],p-=a[z+1],0!=(16&h)){for(h&=15,S=a[z+2]+(d&o[h]),d>>=h,p-=h;15>p;)y--,d|=(255&l.ye(b++))<<p,p+=8;for(u=d&v,a=s,w=f,z=3*(w+u),h=a[z];;){if(d>>=a[z+1],p-=a[z+1],0!=(16&h)){for(h&=15;h>p;)y--,d|=(255&l.ye(b++))<<p,p+=8;if(_=a[z+2]+(d&o[h]),d>>=h,p-=h,k-=S,_>m){C=m-_;do{C+=c.end}while(0>C);if(h=c.end-C,S>h){if(S-=h,m-C>0&&h>m-C)do{c.me[m++]=c.me[C++]}while(0!=--h);else c.me.set(c.me.subarray(C,C+h),m),m+=h,C+=h,h=0;C=0}}else C=m-_,m-C>0&&2>m-C?(c.me[m++]=c.me[C++],c.me[m++]=c.me[C++],S-=2):(c.me.set(c.me.subarray(C,C+2),m),m+=2,C+=2,S-=2);if(m-C>0&&S>m-C)do{c.me[m++]=c.me[C++]}while(0!=--S);else c.me.set(c.me.subarray(C,C+S),m),m+=S,C+=S,S=0;break}if(0!=(64&h))return l.$t="invalid distance code",S=l.Xt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.pe=d,c.be=p,l.Xt=y,l.ee+=b-l.ae,l.ae=b,c.write=m,e;u+=a[z+2],u+=d&o[h],z=3*(w+u),h=a[z]}break}if(0!=(64&h))return 0!=(32&h)?(S=l.Xt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.pe=d,c.be=p,l.Xt=y,l.ee+=b-l.ae,l.ae=b,c.write=m,1):(l.$t="invalid literal/length code",S=l.Xt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.pe=d,c.be=p,l.Xt=y,l.ee+=b-l.ae,l.ae=b,c.write=m,e);if(u+=a[z+2],u+=d&o[h],z=3*(w+u),0===(h=a[z])){d>>=a[z+1],p-=a[z+1],c.me[m++]=a[z+2],k--;break}}else d>>=a[z+1],p-=a[z+1],c.me[m++]=a[z+2],k--}while(k>=258&&y>=10);return S=l.Xt-y,S=S>p>>3?p>>3:S,y+=S,b-=S,p-=S<<3,c.pe=d,c.be=p,l.Xt=y,l.ee+=b-l.ae,l.ae=b,c.write=m,0}n.init=(t,e,n,o,c,l)=>{r=0,d=t,p=e,s=n,b=o,f=c,y=l,i=null},n.ke=(n,k,g)=>{let v,S,_,C,z,x,A,I=0,V=0,P=0;for(P=k.ae,C=k.Xt,I=n.pe,V=n.be,z=n.write,x=z<n.read?n.read-z-1:n.end-z;;)switch(r){case 0:if(x>=258&&C>=10&&(n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,g=m(d,p,s,b,f,y,n,k),P=k.ae,C=k.Xt,I=n.pe,V=n.be,z=n.write,x=z<n.read?n.read-z-1:n.end-z,0!=g)){r=1==g?7:9;break}u=d,i=s,l=b,r=1;case 1:for(v=u;v>V;){if(0===C)return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);g=0,C--,I|=(255&k.ye(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>>=i[S+1],V-=i[S+1],_=i[S],0===_){a=i[S+2],r=6;break}if(0!=(16&_)){w=15&_,c=i[S+2],r=2;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}if(0!=(32&_)){r=7;break}return r=9,k.$t="invalid literal/length code",g=e,n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);case 2:for(v=w;v>V;){if(0===C)return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);g=0,C--,I|=(255&k.ye(P++))<<V,V+=8}c+=I&o[v],I>>=v,V-=v,u=p,i=f,l=y,r=3;case 3:for(v=u;v>V;){if(0===C)return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);g=0,C--,I|=(255&k.ye(P++))<<V,V+=8}if(S=3*(l+(I&o[v])),I>>=i[S+1],V-=i[S+1],_=i[S],0!=(16&_)){w=15&_,h=i[S+2],r=4;break}if(0==(64&_)){u=_,l=S/3+i[S+2];break}return r=9,k.$t="invalid distance code",g=e,n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);case 4:for(v=w;v>V;){if(0===C)return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);g=0,C--,I|=(255&k.ye(P++))<<V,V+=8}h+=I&o[v],I>>=v,V-=v,r=5;case 5:for(A=z-h;0>A;)A+=n.end;for(;0!==c;){if(0===x&&(z==n.end&&0!==n.read&&(z=0,x=z<n.read?n.read-z-1:n.end-z),0===x&&(n.write=z,g=n.ge(k,g),z=n.write,x=z<n.read?n.read-z-1:n.end-z,z==n.end&&0!==n.read&&(z=0,x=z<n.read?n.read-z-1:n.end-z),0===x)))return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);n.me[z++]=n.me[A++],x--,A==n.end&&(A=0),c--}r=0;break;case 6:if(0===x&&(z==n.end&&0!==n.read&&(z=0,x=z<n.read?n.read-z-1:n.end-z),0===x&&(n.write=z,g=n.ge(k,g),z=n.write,x=z<n.read?n.read-z-1:n.end-z,z==n.end&&0!==n.read&&(z=0,x=z<n.read?n.read-z-1:n.end-z),0===x)))return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);g=0,n.me[z++]=a,x--,r=0;break;case 7:if(V>7&&(V-=8,C++,P--),n.write=z,g=n.ge(k,g),z=n.write,x=z<n.read?n.read-z-1:n.end-z,n.read!=n.write)return n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);r=8;case 8:return g=1,n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);case 9:return g=e,n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g);default:return g=t,n.pe=I,n.be=V,k.Xt=C,k.ee+=P-k.ae,k.ae=P,n.write=z,n.ge(k,g)}},n.ve=()=>{}}d.Se=(t,e,n,r)=>(t[0]=9,e[0]=5,n[0]=c,r[0]=l,0);const b=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function y(n,r){const c=this;let l,u=0,a=0,w=0,h=0;const y=[0],m=[0],k=new p;let g=0,v=new f(4320);const S=new d;c.be=0,c.pe=0,c.me=new i(r),c.end=r,c.read=0,c.write=0,c.reset=(t,e)=>{e&&(e[0]=0),6==u&&k.ve(t),u=0,c.be=0,c.pe=0,c.read=c.write=0},c.reset(n,null),c.ge=(t,e)=>{let n,r,i;return r=t.we,i=c.read,n=(i>c.write?c.end:c.write)-i,n>t.ue&&(n=t.ue),0!==n&&e==s&&(e=0),t.ue-=n,t.ne+=n,t.ce.set(c.me.subarray(i,i+n),r),r+=n,i+=n,i==c.end&&(i=0,c.write==c.end&&(c.write=0),n=c.write-i,n>t.ue&&(n=t.ue),0!==n&&e==s&&(e=0),t.ue-=n,t.ne+=n,t.ce.set(c.me.subarray(i,i+n),r),r+=n,i+=n),t.we=r,c.read=i,e},c.ke=(n,r)=>{let i,s,f,p,_,C,z,x;for(p=n.ae,_=n.Xt,s=c.pe,f=c.be,C=c.write,z=C<c.read?c.read-C-1:c.end-C;;){let A,I,V,P,B,D,E,M;switch(u){case 0:for(;3>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}switch(i=7&s,g=1&i,i>>>1){case 0:s>>>=3,f-=3,i=7&f,s>>>=i,f-=i,u=1;break;case 1:A=[],I=[],V=[[]],P=[[]],d.Se(A,I,V,P),k.init(A[0],I[0],V[0],0,P[0],0),s>>>=3,f-=3,u=6;break;case 2:s>>>=3,f-=3,u=3;break;case 3:return s>>>=3,f-=3,u=9,n.$t="invalid block type",r=e,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r)}break;case 1:for(;32>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}if((~s>>>16&65535)!=(65535&s))return u=9,n.$t="invalid stored block lengths",r=e,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);a=65535&s,s=f=0,u=0!==a?2:0!==g?7:0;break;case 2:if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);if(0===z&&(C==c.end&&0!==c.read&&(C=0,z=C<c.read?c.read-C-1:c.end-C),0===z&&(c.write=C,r=c.ge(n,r),C=c.write,z=C<c.read?c.read-C-1:c.end-C,C==c.end&&0!==c.read&&(C=0,z=C<c.read?c.read-C-1:c.end-C),0===z)))return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);if(r=0,i=a,i>_&&(i=_),i>z&&(i=z),c.me.set(n.Yt(p,i),C),p+=i,_-=i,C+=i,z-=i,0!=(a-=i))break;u=0!==g?7:0;break;case 3:for(;14>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}if(w=i=16383&s,(31&i)>29||(i>>5&31)>29)return u=9,n.$t="too many length or distance symbols",r=e,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);if(i=258+(31&i)+(i>>5&31),!l||l.length<i)l=[];else for(x=0;i>x;x++)l[x]=0;s>>>=14,f-=14,h=0,u=4;case 4:for(;4+(w>>>10)>h;){for(;3>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}l[b[h++]]=7&s,s>>>=3,f-=3}for(;19>h;)l[b[h++]]=0;if(y[0]=7,i=S.he(l,y,m,v,n),0!=i)return(r=i)==e&&(l=null,u=9),c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);h=0,u=5;case 5:for(;i=w,258+(31&i)+(i>>5&31)>h;){let t,a;for(i=y[0];i>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}if(i=v[3*(m[0]+(s&o[i]))+1],a=v[3*(m[0]+(s&o[i]))+2],16>a)s>>>=i,f-=i,l[h++]=a;else{for(x=18==a?7:a-14,t=18==a?11:3;i+x>f;){if(0===_)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);r=0,_--,s|=(255&n.ye(p++))<<f,f+=8}if(s>>>=i,f-=i,t+=s&o[x],s>>>=x,f-=x,x=h,i=w,x+t>258+(31&i)+(i>>5&31)||16==a&&1>x)return l=null,u=9,n.$t="invalid bit length repeat",r=e,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);a=16==a?l[x-1]:0;do{l[x++]=a}while(0!=--t);h=x}}if(m[0]=-1,B=[],D=[],E=[],M=[],B[0]=9,D[0]=6,i=w,i=S.de(257+(31&i),1+(i>>5&31),l,B,D,E,M,v,n),0!=i)return i==e&&(l=null,u=9),r=i,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);k.init(B[0],D[0],v,E[0],v,M[0]),u=6;case 6:if(c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,1!=(r=k.ke(c,n,r)))return c.ge(n,r);if(r=0,k.ve(n),p=n.ae,_=n.Xt,s=c.pe,f=c.be,C=c.write,z=C<c.read?c.read-C-1:c.end-C,0===g){u=0;break}u=7;case 7:if(c.write=C,r=c.ge(n,r),C=c.write,z=C<c.read?c.read-C-1:c.end-C,c.read!=c.write)return c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);u=8;case 8:return r=1,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);case 9:return r=e,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r);default:return r=t,c.pe=s,c.be=f,n.Xt=_,n.ee+=p-n.ae,n.ae=p,c.write=C,c.ge(n,r)}}},c.ve=t=>{c.reset(t,null),c.me=null,v=null},c._e=(t,e,n)=>{c.me.set(t.subarray(e,e+n),0),c.read=c.write=n},c.Ce=()=>1==u?1:0}const m=13,k=[0,0,255,255];function g(){const n=this;function r(e){return e&&e.ze?(e.ee=e.ne=0,e.$t=null,e.ze.mode=7,e.ze.xe.reset(e,null),0):t}n.mode=0,n.method=0,n.Ae=[0],n.Ie=0,n.marker=0,n.Ve=0,n.Pe=t=>(n.xe&&n.xe.ve(t),n.xe=null,0),n.Be=(e,i)=>(e.$t=null,n.xe=null,8>i||i>15?(n.Pe(e),t):(n.Ve=i,e.ze.xe=new y(e,1<<i),r(e),0)),n.De=(n,r)=>{let i,o;if(!n||!n.ze||!n.le)return t;const f=n.ze;for(r=4==r?s:0,i=s;;)switch(f.mode){case 0:if(0===n.Xt)return i;if(i=r,n.Xt--,n.ee++,8!=(15&(f.method=n.ye(n.ae++)))){f.mode=m,n.$t="unknown compression method",f.marker=5;break}if(8+(f.method>>4)>f.Ve){f.mode=m,n.$t="invalid win size",f.marker=5;break}f.mode=1;case 1:if(0===n.Xt)return i;if(i=r,n.Xt--,n.ee++,o=255&n.ye(n.ae++),((f.method<<8)+o)%31!=0){f.mode=m,n.$t="incorrect header check",f.marker=5;break}if(0==(32&o)){f.mode=7;break}f.mode=2;case 2:if(0===n.Xt)return i;i=r,n.Xt--,n.ee++,f.Ie=(255&n.ye(n.ae++))<<24&4278190080,f.mode=3;case 3:if(0===n.Xt)return i;i=r,n.Xt--,n.ee++,f.Ie+=(255&n.ye(n.ae++))<<16&16711680,f.mode=4;case 4:if(0===n.Xt)return i;i=r,n.Xt--,n.ee++,f.Ie+=(255&n.ye(n.ae++))<<8&65280,f.mode=5;case 5:return 0===n.Xt?i:(i=r,n.Xt--,n.ee++,f.Ie+=255&n.ye(n.ae++),f.mode=6,2);case 6:return f.mode=m,n.$t="need dictionary",f.marker=0,t;case 7:if(i=f.xe.ke(n,i),i==e){f.mode=m,f.marker=0;break}if(0==i&&(i=r),1!=i)return i;i=r,f.xe.reset(n,f.Ae),f.mode=12;case 12:return n.Xt=0,1;case m:return e;default:return t}},n.Ee=(e,n,r)=>{let i=0,s=r;if(!e||!e.ze||6!=e.ze.mode)return t;const o=e.ze;return s<1<<o.Ve||(s=(1<<o.Ve)-1,i=r-s),o.xe._e(n,i,s),o.mode=7,0},n.Me=n=>{let i,o,f,c,l;if(!n||!n.ze)return t;const u=n.ze;if(u.mode!=m&&(u.mode=m,u.marker=0),0===(i=n.Xt))return s;for(o=n.ae,f=u.marker;0!==i&&4>f;)n.ye(o)==k[f]?f++:f=0!==n.ye(o)?0:4-f,o++,i--;return n.ee+=o-n.ae,n.ae=o,n.Xt=i,u.marker=f,4!=f?e:(c=n.ee,l=n.ne,r(n),n.ee=c,n.ne=l,u.mode=7,0)},n.Re=e=>e&&e.ze&&e.ze.xe?e.ze.xe.Ce():t}function v(){}return v.prototype={Be:function(t){const e=this;return e.ze=new g,t||(t=15),e.ze.Be(e,t)},De:function(e){const n=this;return n.ze?n.ze.De(n,e):t},Pe:function(){const e=this;if(!e.ze)return t;const n=e.ze.Pe(e);return e.ze=null,n},Me:function(){const e=this;return e.ze?e.ze.Me(e):t},Ee:function(e,n){const r=this;return r.ze?r.ze.Ee(r,e,n):t},ye:function(t){return this.le[t]},Yt:function(t,e){return this.le.subarray(t,t+e)}},function(t){const e=new v,o=t&&t.it?n.floor(2*t.it):131072,f=new i(o);let c=!1;e.Be(),e.ce=f,this.append=(t,n)=>{const l=[];let u,a,w=0,h=0,d=0;if(0!==t.length){e.ae=0,e.le=t,e.Xt=t.length;do{if(e.we=0,e.ue=o,0!==e.Xt||c||(e.ae=0,c=!0),u=e.De(0),c&&u===s){if(0!==e.Xt)throw new r("inflating: bad input")}else if(0!==u&&1!==u)throw new r("inflating: "+e.$t);if((c||1===u)&&e.Xt===t.length)throw new r("inflating: bad input");e.we&&(e.we===o?l.push(new i(f)):l.push(f.slice(0,e.we))),d+=e.we,n&&e.ae>0&&e.ae!=w&&(n(e.ae),w=e.ae)}while(e.Xt>0||0===e.ue);return l.length>1?(a=new i(d),l.forEach((t=>{a.set(t,h),h+=t.length}))):a=l[0]||new i(0),a}},this.flush=()=>{e.Pe()}}})();self.initCodec=()=>{self.Deflate=mt,self.Inflate=kt};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}});}};
|
|
103
106
|
|
|
104
107
|
/*
|
|
105
108
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
@@ -300,15 +303,14 @@
|
|
|
300
303
|
*/
|
|
301
304
|
|
|
302
305
|
class Crc32Stream extends TransformStream {
|
|
306
|
+
|
|
303
307
|
constructor() {
|
|
304
308
|
super({
|
|
305
309
|
start() {
|
|
306
310
|
this.crc32 = new Crc32();
|
|
307
311
|
},
|
|
308
312
|
transform(chunk) {
|
|
309
|
-
|
|
310
|
-
this.crc32.append(chunk);
|
|
311
|
-
}
|
|
313
|
+
this.crc32.append(chunk);
|
|
312
314
|
},
|
|
313
315
|
flush(controller) {
|
|
314
316
|
const value = new Uint8Array(4);
|
|
@@ -1251,23 +1253,21 @@
|
|
|
1251
1253
|
});
|
|
1252
1254
|
},
|
|
1253
1255
|
async transform(chunk, controller) {
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
await aesCrypto.ready;
|
|
1267
|
-
}
|
|
1268
|
-
const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
|
|
1269
|
-
controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
|
|
1256
|
+
const aesCrypto = this;
|
|
1257
|
+
if (aesCrypto.password) {
|
|
1258
|
+
const password = aesCrypto.password;
|
|
1259
|
+
aesCrypto.password = null;
|
|
1260
|
+
const preamble = subarray(chunk, 0, SALT_LENGTH[aesCrypto.strength] + 2);
|
|
1261
|
+
await createDecryptionKeys(aesCrypto, preamble, password);
|
|
1262
|
+
aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
|
|
1263
|
+
aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
|
|
1264
|
+
chunk = subarray(chunk, SALT_LENGTH[aesCrypto.strength] + 2);
|
|
1265
|
+
aesCrypto.resolveReady();
|
|
1266
|
+
} else {
|
|
1267
|
+
await aesCrypto.ready;
|
|
1270
1268
|
}
|
|
1269
|
+
const output = new Uint8Array(chunk.length - SIGNATURE_LENGTH - ((chunk.length - SIGNATURE_LENGTH) % BLOCK_LENGTH));
|
|
1270
|
+
controller.enqueue(append(aesCrypto, chunk, output, 0, SIGNATURE_LENGTH, true));
|
|
1271
1271
|
},
|
|
1272
1272
|
async flush(controller) {
|
|
1273
1273
|
const aesCrypto = this;
|
|
@@ -1312,23 +1312,21 @@
|
|
|
1312
1312
|
});
|
|
1313
1313
|
},
|
|
1314
1314
|
async transform(chunk, controller) {
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
await aesCrypto.ready;
|
|
1327
|
-
}
|
|
1328
|
-
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
1329
|
-
output.set(preamble, 0);
|
|
1330
|
-
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
|
|
1315
|
+
const aesCrypto = this;
|
|
1316
|
+
let preamble = new Uint8Array(0);
|
|
1317
|
+
if (aesCrypto.password) {
|
|
1318
|
+
const password = aesCrypto.password;
|
|
1319
|
+
aesCrypto.password = null;
|
|
1320
|
+
preamble = await createEncryptionKeys(aesCrypto, password);
|
|
1321
|
+
aesCrypto.ctr = new CtrGladman(new Aes(aesCrypto.keys.key), Array.from(COUNTER_DEFAULT_VALUE));
|
|
1322
|
+
aesCrypto.hmac = new HmacSha1(aesCrypto.keys.authentication);
|
|
1323
|
+
aesCrypto.resolveReady();
|
|
1324
|
+
} else {
|
|
1325
|
+
await aesCrypto.ready;
|
|
1331
1326
|
}
|
|
1327
|
+
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
1328
|
+
output.set(preamble, 0);
|
|
1329
|
+
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0));
|
|
1332
1330
|
},
|
|
1333
1331
|
async flush(controller) {
|
|
1334
1332
|
const aesCrypto = this;
|
|
@@ -1493,18 +1491,16 @@
|
|
|
1493
1491
|
createKeys(this, password);
|
|
1494
1492
|
},
|
|
1495
1493
|
transform(chunk, controller) {
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
throw new Error(ERR_INVALID_PASSWORD);
|
|
1503
|
-
}
|
|
1504
|
-
chunk = chunk.subarray(HEADER_LENGTH);
|
|
1494
|
+
const zipCrypto = this;
|
|
1495
|
+
if (zipCrypto.password) {
|
|
1496
|
+
const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
|
|
1497
|
+
zipCrypto.password = null;
|
|
1498
|
+
if (decryptedHeader[HEADER_LENGTH - 1] != zipCrypto.passwordVerification) {
|
|
1499
|
+
throw new Error(ERR_INVALID_PASSWORD);
|
|
1505
1500
|
}
|
|
1506
|
-
|
|
1501
|
+
chunk = chunk.subarray(HEADER_LENGTH);
|
|
1507
1502
|
}
|
|
1503
|
+
controller.enqueue(decrypt(zipCrypto, chunk));
|
|
1508
1504
|
},
|
|
1509
1505
|
flush() {
|
|
1510
1506
|
stream.valid = true;
|
|
@@ -1526,24 +1522,22 @@
|
|
|
1526
1522
|
createKeys(this, password);
|
|
1527
1523
|
},
|
|
1528
1524
|
transform(chunk, controller) {
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
offset = 0;
|
|
1543
|
-
}
|
|
1544
|
-
output.set(encrypt(zipCrypto, chunk), offset);
|
|
1545
|
-
controller.enqueue(output);
|
|
1525
|
+
const zipCrypto = this;
|
|
1526
|
+
let output;
|
|
1527
|
+
let offset;
|
|
1528
|
+
if (zipCrypto.password) {
|
|
1529
|
+
zipCrypto.password = null;
|
|
1530
|
+
const header = crypto.getRandomValues(new Uint8Array(HEADER_LENGTH));
|
|
1531
|
+
header[HEADER_LENGTH - 1] = zipCrypto.passwordVerification;
|
|
1532
|
+
output = new Uint8Array(chunk.length + header.length);
|
|
1533
|
+
output.set(encrypt(zipCrypto, header), 0);
|
|
1534
|
+
offset = HEADER_LENGTH;
|
|
1535
|
+
} else {
|
|
1536
|
+
output = new Uint8Array(chunk.length);
|
|
1537
|
+
offset = 0;
|
|
1546
1538
|
}
|
|
1539
|
+
output.set(encrypt(zipCrypto, chunk), offset);
|
|
1540
|
+
controller.enqueue(output);
|
|
1547
1541
|
},
|
|
1548
1542
|
flush() {
|
|
1549
1543
|
}
|
|
@@ -1638,20 +1632,20 @@
|
|
|
1638
1632
|
/* global TransformStream */
|
|
1639
1633
|
|
|
1640
1634
|
class CodecStream extends TransformStream {
|
|
1635
|
+
|
|
1641
1636
|
constructor(Codec, options) {
|
|
1637
|
+
let codec;
|
|
1642
1638
|
super({
|
|
1643
1639
|
start() {
|
|
1644
|
-
|
|
1640
|
+
codec = new Codec(options);
|
|
1645
1641
|
},
|
|
1646
1642
|
transform(chunk, controller) {
|
|
1647
|
-
chunk =
|
|
1648
|
-
|
|
1649
|
-
controller.enqueue(chunk);
|
|
1650
|
-
}
|
|
1643
|
+
chunk = codec.append(chunk);
|
|
1644
|
+
controller.enqueue(chunk);
|
|
1651
1645
|
},
|
|
1652
1646
|
flush(controller) {
|
|
1653
|
-
const chunk =
|
|
1654
|
-
if (chunk
|
|
1647
|
+
const chunk = codec.flush();
|
|
1648
|
+
if (chunk) {
|
|
1655
1649
|
controller.enqueue(chunk);
|
|
1656
1650
|
}
|
|
1657
1651
|
}
|
|
@@ -1687,200 +1681,206 @@
|
|
|
1687
1681
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1688
1682
|
*/
|
|
1689
1683
|
|
|
1690
|
-
const CODEC_DEFLATE = "deflate";
|
|
1691
|
-
const CODEC_INFLATE = "inflate";
|
|
1692
1684
|
const ERR_INVALID_SIGNATURE = "Invalid signature";
|
|
1693
|
-
const MESSAGE_EVENT_TYPE = "message";
|
|
1694
|
-
const MESSAGE_START = "start";
|
|
1695
|
-
const MESSAGE_PULL = "pull";
|
|
1696
|
-
const MESSAGE_DATA = "data";
|
|
1697
|
-
const MESSAGE_ABORT = "abort";
|
|
1698
1685
|
const COMPRESSION_FORMAT = "deflate-raw";
|
|
1699
1686
|
const UNDEFINED_TYPE = "undefined";
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
passwordVerification,
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
const
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
codec.decryptStream = new AESDecryptionStream(password, signed, encryptionStrength);
|
|
1729
|
-
codec.stream = codec.stream.pipeThrough(codec.decryptStream);
|
|
1687
|
+
const COMPRESSION_STREAM_API_SUPPORTED = typeof CompressionStream == UNDEFINED_TYPE;
|
|
1688
|
+
const DECOMPRESSION_STREAM_API_SUPPORTED = typeof DecompressionStream == UNDEFINED_TYPE;
|
|
1689
|
+
let INFLATE_RAW_SUPPORTED = true;
|
|
1690
|
+
let DEFLATE_RAW_SUPPORTED = true;
|
|
1691
|
+
|
|
1692
|
+
class DeflateStream extends TransformStream {
|
|
1693
|
+
|
|
1694
|
+
constructor(codecConstructor, options, { chunkSize }, ...strategies) {
|
|
1695
|
+
super({}, ...strategies);
|
|
1696
|
+
const { compressed, useCompressionStream, password, passwordVerification, encryptionStrength, zipCrypto, signed } = options;
|
|
1697
|
+
const stream = this;
|
|
1698
|
+
let crc32Stream, encryptionStream;
|
|
1699
|
+
let readable = filterEmptyChunks(super.readable);
|
|
1700
|
+
const encrypted = Boolean(password);
|
|
1701
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
1702
|
+
[readable, crc32Stream] = readable.tee();
|
|
1703
|
+
crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
|
|
1704
|
+
}
|
|
1705
|
+
if (compressed) {
|
|
1706
|
+
if ((useCompressionStream !== undefined && !useCompressionStream) || (COMPRESSION_STREAM_API_SUPPORTED && !DEFLATE_RAW_SUPPORTED)) {
|
|
1707
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
1708
|
+
} else {
|
|
1709
|
+
try {
|
|
1710
|
+
const compressionStream = new CompressionStream(COMPRESSION_FORMAT);
|
|
1711
|
+
readable = readable.pipeThrough(compressionStream);
|
|
1712
|
+
} catch (_error) {
|
|
1713
|
+
DEFLATE_RAW_SUPPORTED = false;
|
|
1714
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
1730
1715
|
}
|
|
1731
1716
|
}
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1717
|
+
}
|
|
1718
|
+
if (encrypted) {
|
|
1719
|
+
if (zipCrypto) {
|
|
1720
|
+
readable = readable.pipeThrough(new ZipCryptoEncryptionStream(password, passwordVerification));
|
|
1721
|
+
} else {
|
|
1722
|
+
encryptionStream = new AESEncryptionStream(password, encryptionStrength);
|
|
1723
|
+
readable = readable.pipeThrough(encryptionStream);
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
setReadable(stream, readable, async () => {
|
|
1727
|
+
let signature;
|
|
1728
|
+
if (encrypted && !zipCrypto) {
|
|
1729
|
+
signature = encryptionStream.signature;
|
|
1742
1730
|
}
|
|
1743
1731
|
if ((!encrypted || zipCrypto) && signed) {
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream());
|
|
1732
|
+
signature = await crc32Stream.getReader().read();
|
|
1733
|
+
signature = new DataView(signature.value.buffer).getUint32(0);
|
|
1747
1734
|
}
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
};
|
|
1751
|
-
codec.abort = () => codec.aborted = true;
|
|
1752
|
-
|
|
1753
|
-
function pipeCodecStream() {
|
|
1754
|
-
codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
|
|
1755
|
-
}
|
|
1735
|
+
stream.signature = signature;
|
|
1736
|
+
});
|
|
1756
1737
|
}
|
|
1738
|
+
}
|
|
1757
1739
|
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1740
|
+
class InflateStream extends TransformStream {
|
|
1741
|
+
|
|
1742
|
+
constructor(codecConstructor, options, { chunkSize }, ...strategies) {
|
|
1743
|
+
super({}, ...strategies);
|
|
1744
|
+
const { zipCrypto, password, passwordVerification, signed, encryptionStrength, compressed, useCompressionStream } = options;
|
|
1745
|
+
const stream = this;
|
|
1746
|
+
let crc32Stream, decryptionStream;
|
|
1747
|
+
let readable = filterEmptyChunks(super.readable);
|
|
1748
|
+
const encrypted = Boolean(password);
|
|
1749
|
+
if (encrypted) {
|
|
1750
|
+
if (zipCrypto) {
|
|
1751
|
+
readable = readable.pipeThrough(new ZipCryptoDecryptionStream(password, passwordVerification));
|
|
1752
|
+
} else {
|
|
1753
|
+
decryptionStream = new AESDecryptionStream(password, signed, encryptionStrength);
|
|
1754
|
+
readable = readable.pipeThrough(decryptionStream);
|
|
1755
|
+
}
|
|
1763
1756
|
}
|
|
1764
|
-
if (
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1757
|
+
if (compressed) {
|
|
1758
|
+
if ((useCompressionStream !== undefined && !useCompressionStream) || (DECOMPRESSION_STREAM_API_SUPPORTED && !INFLATE_RAW_SUPPORTED)) {
|
|
1759
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
1760
|
+
} else {
|
|
1761
|
+
try {
|
|
1762
|
+
readable = readable.pipeThrough(new DecompressionStream(COMPRESSION_FORMAT));
|
|
1763
|
+
} catch (_error) {
|
|
1764
|
+
INFLATE_RAW_SUPPORTED = false;
|
|
1765
|
+
readable = pipeCodecStream(codecConstructor, readable, chunkSize);
|
|
1766
|
+
}
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
1770
|
+
[readable, crc32Stream] = readable.tee();
|
|
1771
|
+
crc32Stream = crc32Stream.pipeThrough(new Crc32Stream());
|
|
1772
|
+
}
|
|
1773
|
+
setReadable(stream, readable, async () => {
|
|
1774
|
+
if (encrypted && !zipCrypto) {
|
|
1775
|
+
if (!decryptionStream.valid) {
|
|
1768
1776
|
throw new Error(ERR_INVALID_SIGNATURE);
|
|
1769
1777
|
}
|
|
1770
1778
|
}
|
|
1771
|
-
if ((!
|
|
1772
|
-
signature = await
|
|
1779
|
+
if ((!encrypted || zipCrypto) && signed) {
|
|
1780
|
+
const signature = await crc32Stream.getReader().read();
|
|
1773
1781
|
const dataViewSignature = new DataView(signature.value.buffer);
|
|
1774
|
-
if (
|
|
1782
|
+
if (signature != dataViewSignature.getUint32(0, false)) {
|
|
1775
1783
|
throw new Error(ERR_INVALID_SIGNATURE);
|
|
1776
1784
|
}
|
|
1777
1785
|
}
|
|
1778
|
-
|
|
1779
|
-
} else {
|
|
1780
|
-
await codec.read();
|
|
1781
|
-
}
|
|
1786
|
+
});
|
|
1782
1787
|
}
|
|
1783
1788
|
}
|
|
1784
1789
|
|
|
1785
|
-
|
|
1790
|
+
function pipeCodecStream(codecConstructor, stream, chunkSize) {
|
|
1791
|
+
return stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize }));
|
|
1792
|
+
}
|
|
1786
1793
|
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
zipCrypto,
|
|
1793
|
-
password,
|
|
1794
|
-
passwordVerification,
|
|
1795
|
-
encryptionStrength,
|
|
1796
|
-
useCompressionStream
|
|
1797
|
-
}, { chunkSize }) {
|
|
1798
|
-
const codec = this;
|
|
1799
|
-
codec.start = async () => {
|
|
1800
|
-
Object.assign(this, {
|
|
1801
|
-
encrypted,
|
|
1802
|
-
signed,
|
|
1803
|
-
compressed,
|
|
1804
|
-
zipCrypto,
|
|
1805
|
-
stream: createReadableStream(codec)
|
|
1806
|
-
});
|
|
1807
|
-
if ((!encrypted || zipCrypto) && signed) {
|
|
1808
|
-
const tee = codec.stream.tee();
|
|
1809
|
-
codec.stream = tee[0];
|
|
1810
|
-
codec.crc32Stream = tee[1].pipeThrough(new Crc32Stream({ chunkSize }));
|
|
1811
|
-
}
|
|
1812
|
-
if (compressed) {
|
|
1813
|
-
if ((useCompressionStream !== undefined && !useCompressionStream) || typeof CompressionStream == UNDEFINED_TYPE) {
|
|
1814
|
-
pipeCodecStream();
|
|
1815
|
-
} else {
|
|
1816
|
-
try {
|
|
1817
|
-
codec.stream = codec.stream.pipeThrough(new CompressionStream(COMPRESSION_FORMAT));
|
|
1818
|
-
} catch (_error) {
|
|
1819
|
-
pipeCodecStream();
|
|
1820
|
-
}
|
|
1821
|
-
}
|
|
1794
|
+
function filterEmptyChunks(readable) {
|
|
1795
|
+
return readable.pipeThrough(new TransformStream({
|
|
1796
|
+
transform(chunk, controller) {
|
|
1797
|
+
if (chunk && chunk.length) {
|
|
1798
|
+
controller.enqueue(chunk);
|
|
1822
1799
|
}
|
|
1823
|
-
if (encrypted) {
|
|
1824
|
-
if (zipCrypto) {
|
|
1825
|
-
codec.stream = codec.stream.pipeThrough(new ZipCryptoEncryptionStream(password, passwordVerification));
|
|
1826
|
-
} else {
|
|
1827
|
-
codec.encryptStream = new AESEncryptionStream(password, encryptionStrength);
|
|
1828
|
-
codec.stream = codec.stream.pipeThrough(codec.encryptStream);
|
|
1829
|
-
}
|
|
1830
|
-
}
|
|
1831
|
-
codec.reader = codec.stream.getReader();
|
|
1832
|
-
await codec.read();
|
|
1833
|
-
};
|
|
1834
|
-
codec.abort = () => codec.aborted = true;
|
|
1835
|
-
|
|
1836
|
-
function pipeCodecStream() {
|
|
1837
|
-
codec.stream = codec.stream.pipeThrough(new CodecStream(codecConstructor, { chunkSize, level }));
|
|
1838
1800
|
}
|
|
1839
|
-
}
|
|
1801
|
+
}));
|
|
1802
|
+
}
|
|
1840
1803
|
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
let signature;
|
|
1849
|
-
if (codec.encrypted && !codec.zipCrypto) {
|
|
1850
|
-
signature = codec.encryptStream.signature;
|
|
1851
|
-
}
|
|
1852
|
-
if ((!codec.encrypted || codec.zipCrypto) && codec.signed) {
|
|
1853
|
-
signature = await codec.crc32Stream.getReader().read();
|
|
1854
|
-
signature = new DataView(signature.value.buffer).getUint32(0);
|
|
1804
|
+
function setReadable(stream, readable, flush) {
|
|
1805
|
+
stream.length = 0;
|
|
1806
|
+
readable = readable.pipeThrough(new TransformStream({
|
|
1807
|
+
transform(chunk, controller) {
|
|
1808
|
+
if (chunk && chunk.length) {
|
|
1809
|
+
stream.length += chunk.length;
|
|
1810
|
+
controller.enqueue(chunk);
|
|
1855
1811
|
}
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1812
|
+
}, flush
|
|
1813
|
+
}));
|
|
1814
|
+
Object.defineProperty(stream, "readable", {
|
|
1815
|
+
get() {
|
|
1816
|
+
return readable;
|
|
1859
1817
|
}
|
|
1860
|
-
}
|
|
1861
|
-
|
|
1818
|
+
});
|
|
1862
1819
|
}
|
|
1863
1820
|
|
|
1864
|
-
|
|
1821
|
+
/*
|
|
1822
|
+
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
1823
|
+
|
|
1824
|
+
Redistribution and use in source and binary forms, with or without
|
|
1825
|
+
modification, are permitted provided that the following conditions are met:
|
|
1826
|
+
|
|
1827
|
+
1. Redistributions of source code must retain the above copyright notice,
|
|
1828
|
+
this list of conditions and the following disclaimer.
|
|
1829
|
+
|
|
1830
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
1831
|
+
notice, this list of conditions and the following disclaimer in
|
|
1832
|
+
the documentation and/or other materials provided with the distribution.
|
|
1833
|
+
|
|
1834
|
+
3. The names of the authors may not be used to endorse or promote products
|
|
1835
|
+
derived from this software without specific prior written permission.
|
|
1836
|
+
|
|
1837
|
+
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
1838
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
1839
|
+
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
1840
|
+
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
1841
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
1842
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
1843
|
+
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
1844
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
1845
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
1846
|
+
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
1847
|
+
*/
|
|
1848
|
+
|
|
1849
|
+
const CODEC_DEFLATE = "deflate";
|
|
1850
|
+
const CODEC_INFLATE = "inflate";
|
|
1851
|
+
const MESSAGE_EVENT_TYPE = "message";
|
|
1852
|
+
const MESSAGE_START = "start";
|
|
1853
|
+
const MESSAGE_PULL = "pull";
|
|
1854
|
+
const MESSAGE_DATA = "data";
|
|
1855
|
+
const MESSAGE_ABORT = "abort";
|
|
1856
|
+
const MESSAGE_CLOSE = "close";
|
|
1857
|
+
const ERR_ABORT = "AbortError";
|
|
1858
|
+
|
|
1859
|
+
function createCodec(codecConstructor, readable, writable, options, config) {
|
|
1860
|
+
const controller = new AbortController();
|
|
1861
|
+
const { signal } = controller;
|
|
1865
1862
|
if (options.codecType.startsWith(CODEC_DEFLATE)) {
|
|
1866
|
-
return
|
|
1863
|
+
return {
|
|
1864
|
+
run: () => run(DeflateStream),
|
|
1865
|
+
abort
|
|
1866
|
+
};
|
|
1867
1867
|
} else if (options.codecType.startsWith(CODEC_INFLATE)) {
|
|
1868
|
-
return
|
|
1868
|
+
return {
|
|
1869
|
+
run: () => run(InflateStream),
|
|
1870
|
+
abort
|
|
1871
|
+
};
|
|
1869
1872
|
}
|
|
1870
|
-
}
|
|
1871
1873
|
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
}
|
|
1883
|
-
});
|
|
1874
|
+
async function run(StreamConstructor) {
|
|
1875
|
+
const stream = new StreamConstructor(codecConstructor, options, config);
|
|
1876
|
+
await readable.pipeThrough(stream, { signal }).pipeTo(writable, { preventClose: true });
|
|
1877
|
+
const { length, signature } = stream;
|
|
1878
|
+
return { length, signature };
|
|
1879
|
+
}
|
|
1880
|
+
|
|
1881
|
+
function abort() {
|
|
1882
|
+
controller.abort();
|
|
1883
|
+
}
|
|
1884
1884
|
}
|
|
1885
1885
|
|
|
1886
1886
|
/*
|
|
@@ -1913,10 +1913,12 @@
|
|
|
1913
1913
|
|
|
1914
1914
|
let classicWorkersSupported = true;
|
|
1915
1915
|
|
|
1916
|
-
function getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts) {
|
|
1916
|
+
function getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts) {
|
|
1917
1917
|
Object.assign(workerData, {
|
|
1918
1918
|
busy: true,
|
|
1919
1919
|
codecConstructor,
|
|
1920
|
+
readable,
|
|
1921
|
+
writable,
|
|
1920
1922
|
options: Object.assign({}, options),
|
|
1921
1923
|
scripts,
|
|
1922
1924
|
terminate() {
|
|
@@ -1930,27 +1932,50 @@
|
|
|
1930
1932
|
onTaskFinished(workerData);
|
|
1931
1933
|
}
|
|
1932
1934
|
});
|
|
1935
|
+
const { signal, onprogress, size } = streamOptions;
|
|
1936
|
+
if (signal || onprogress) {
|
|
1937
|
+
let chunkOffset = 0;
|
|
1938
|
+
const transformer = {};
|
|
1939
|
+
if (onprogress) {
|
|
1940
|
+
transformer.transform = (chunk, controller) => {
|
|
1941
|
+
chunkOffset += chunk.length;
|
|
1942
|
+
try {
|
|
1943
|
+
onprogress(chunkOffset, size());
|
|
1944
|
+
} catch (_error) {
|
|
1945
|
+
// ignored
|
|
1946
|
+
}
|
|
1947
|
+
controller.enqueue(chunk);
|
|
1948
|
+
};
|
|
1949
|
+
}
|
|
1950
|
+
workerData.readable = readable.pipeThrough(new TransformStream(transformer), { signal });
|
|
1951
|
+
}
|
|
1933
1952
|
return webWorker ? createWebWorkerInterface(workerData, config) : createWorkerInterface(workerData, config);
|
|
1934
1953
|
}
|
|
1935
1954
|
|
|
1936
1955
|
function createWorkerInterface(workerData, config) {
|
|
1937
|
-
const interfaceCodec = createCodec
|
|
1956
|
+
const interfaceCodec = createCodec(workerData.codecConstructor, workerData.readable, workerData.writable, workerData.options, config);
|
|
1938
1957
|
const codec = {
|
|
1939
1958
|
abort() {
|
|
1940
1959
|
interfaceCodec.abort();
|
|
1941
1960
|
workerData.onTaskFinished();
|
|
1942
1961
|
},
|
|
1943
|
-
|
|
1944
|
-
|
|
1962
|
+
run() {
|
|
1963
|
+
const result = interfaceCodec.run();
|
|
1964
|
+
workerData.onTaskFinished();
|
|
1965
|
+
return result;
|
|
1945
1966
|
}
|
|
1946
1967
|
};
|
|
1947
|
-
interfaceCodec.pull = () => codec.pull();
|
|
1948
|
-
interfaceCodec.ondata = data => ondata(workerData, codec, data);
|
|
1949
1968
|
return codec;
|
|
1950
1969
|
}
|
|
1951
1970
|
|
|
1952
1971
|
function createWebWorkerInterface(workerData, { baseURL, chunkSize }) {
|
|
1953
1972
|
const workerOptions = { type: "module" };
|
|
1973
|
+
workerData.reader = workerData.readable.getReader();
|
|
1974
|
+
workerData.writer = workerData.writable.getWriter();
|
|
1975
|
+
workerData.result = new Promise((resolve, reject) => {
|
|
1976
|
+
workerData.resolveResult = resolve;
|
|
1977
|
+
workerData.rejectResult = reject;
|
|
1978
|
+
});
|
|
1954
1979
|
if (!workerData.interface) {
|
|
1955
1980
|
if (!classicWorkersSupported) {
|
|
1956
1981
|
workerData.worker = getWorker(workerOptions);
|
|
@@ -1966,12 +1991,14 @@
|
|
|
1966
1991
|
workerData.interface = {
|
|
1967
1992
|
abort() {
|
|
1968
1993
|
sendMessage({ type: MESSAGE_ABORT });
|
|
1994
|
+
workerData.writer.releaseLock();
|
|
1969
1995
|
workerData.onTaskFinished();
|
|
1970
1996
|
},
|
|
1971
|
-
|
|
1997
|
+
run() {
|
|
1972
1998
|
const options = workerData.options;
|
|
1973
1999
|
const scripts = workerData.scripts.slice(1);
|
|
1974
2000
|
sendMessage({ type: MESSAGE_START, scripts, options, config: { chunkSize } });
|
|
2001
|
+
return workerData.result;
|
|
1975
2002
|
}
|
|
1976
2003
|
};
|
|
1977
2004
|
}
|
|
@@ -2005,6 +2032,7 @@
|
|
|
2005
2032
|
worker.postMessage(message);
|
|
2006
2033
|
}
|
|
2007
2034
|
} catch (error) {
|
|
2035
|
+
workerData.writer.releaseLock();
|
|
2008
2036
|
workerData.onTaskFinished();
|
|
2009
2037
|
throw error;
|
|
2010
2038
|
}
|
|
@@ -2013,43 +2041,38 @@
|
|
|
2013
2041
|
async function onMessage(event) {
|
|
2014
2042
|
const message = event.data;
|
|
2015
2043
|
const reponseError = message.error;
|
|
2016
|
-
const codec = workerData.interface;
|
|
2017
2044
|
try {
|
|
2018
2045
|
if (reponseError) {
|
|
2019
2046
|
const error = new Error(reponseError.message);
|
|
2020
2047
|
error.stack = reponseError.stack;
|
|
2021
|
-
|
|
2048
|
+
workerData.rejectResult(error);
|
|
2049
|
+
workerData.writer.releaseLock();
|
|
2022
2050
|
workerData.onTaskFinished();
|
|
2023
2051
|
} else {
|
|
2024
2052
|
if (message.type == MESSAGE_PULL) {
|
|
2025
|
-
const { value, done } = await
|
|
2053
|
+
const { value, done } = await workerData.reader.read();
|
|
2026
2054
|
sendMessage({ type: MESSAGE_DATA, data: value, done, messageId: message.messageId });
|
|
2027
2055
|
}
|
|
2028
2056
|
if (message.type == MESSAGE_DATA) {
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2057
|
+
let { data } = message;
|
|
2058
|
+
data = new Uint8Array(data);
|
|
2059
|
+
await workerData.writer.ready;
|
|
2060
|
+
await workerData.writer.write(data);
|
|
2061
|
+
}
|
|
2062
|
+
if (message.type == MESSAGE_CLOSE) {
|
|
2063
|
+
workerData.resolveResult(message.result);
|
|
2064
|
+
workerData.writer.releaseLock();
|
|
2065
|
+
workerData.onTaskFinished();
|
|
2034
2066
|
}
|
|
2035
2067
|
}
|
|
2036
2068
|
} catch (error) {
|
|
2037
|
-
|
|
2069
|
+
workerData.rejectResult(error);
|
|
2070
|
+
workerData.writer.releaseLock();
|
|
2038
2071
|
workerData.onTaskFinished();
|
|
2039
2072
|
}
|
|
2040
2073
|
}
|
|
2041
2074
|
}
|
|
2042
2075
|
|
|
2043
|
-
async function ondata(workerData, codec, data) {
|
|
2044
|
-
let { value, done } = data;
|
|
2045
|
-
if (done) {
|
|
2046
|
-
await codec.ondata({ value: { data: value.data, signature: value.signature }, done });
|
|
2047
|
-
workerData.onTaskFinished();
|
|
2048
|
-
} else if (value.data) {
|
|
2049
|
-
await codec.ondata({ value: { data: value.data } });
|
|
2050
|
-
}
|
|
2051
|
-
}
|
|
2052
|
-
|
|
2053
2076
|
/*
|
|
2054
2077
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
2055
2078
|
|
|
@@ -2083,30 +2106,42 @@
|
|
|
2083
2106
|
|
|
2084
2107
|
let indexWorker = 0;
|
|
2085
2108
|
|
|
2086
|
-
function
|
|
2109
|
+
async function runCodec(codecConstructor, readable, writable, options, config, streamOptions) {
|
|
2087
2110
|
const streamCopy = !options.compressed && !options.signed && !options.encrypted;
|
|
2088
2111
|
const webWorker = !streamCopy && (options.useWebWorkers || (options.useWebWorkers === undefined && config.useWebWorkers));
|
|
2089
2112
|
const scripts = webWorker && config.workerScripts ? config.workerScripts[options.codecType] : [];
|
|
2090
2113
|
options.useCompressionStream = options.useCompressionStream === undefined ? config.useCompressionStream : options.useCompressionStream;
|
|
2114
|
+
let codec;
|
|
2091
2115
|
if (pool.length < config.maxWorkers) {
|
|
2092
2116
|
const workerData = { indexWorker };
|
|
2093
2117
|
indexWorker++;
|
|
2094
2118
|
pool.push(workerData);
|
|
2095
|
-
|
|
2119
|
+
codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
|
|
2096
2120
|
} else {
|
|
2097
2121
|
const workerData = pool.find(workerData => !workerData.busy);
|
|
2098
2122
|
if (workerData) {
|
|
2099
2123
|
clearTerminateTimeout(workerData);
|
|
2100
|
-
|
|
2124
|
+
codec = getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts);
|
|
2125
|
+
} else {
|
|
2126
|
+
codec = await new Promise(resolve => pendingRequests.push({ resolve, codecConstructor, readable, writable, options, webWorker, scripts }));
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2129
|
+
const { signal } = streamOptions;
|
|
2130
|
+
try {
|
|
2131
|
+
return await codec.run(signal);
|
|
2132
|
+
} catch (error) {
|
|
2133
|
+
if (signal && signal.aborted && (signal.reason == error || error.name == ERR_ABORT)) {
|
|
2134
|
+
codec.abort();
|
|
2135
|
+
throw new Error(ERR_ABORT);
|
|
2101
2136
|
} else {
|
|
2102
|
-
|
|
2137
|
+
throw error;
|
|
2103
2138
|
}
|
|
2104
2139
|
}
|
|
2105
2140
|
|
|
2106
2141
|
function onTaskFinished(workerData) {
|
|
2107
2142
|
if (pendingRequests.length) {
|
|
2108
|
-
const [{ resolve, codecConstructor, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
|
|
2109
|
-
resolve(getWorker(workerData, codecConstructor, options, config, onTaskFinished, webWorker, scripts));
|
|
2143
|
+
const [{ resolve, codecConstructor, readable, writable, options, webWorker, scripts }] = pendingRequests.splice(0, 1);
|
|
2144
|
+
resolve(getWorker(workerData, codecConstructor, readable, writable, options, config, streamOptions, onTaskFinished, webWorker, scripts));
|
|
2110
2145
|
} else if (workerData.worker) {
|
|
2111
2146
|
clearTerminateTimeout(workerData);
|
|
2112
2147
|
if (Number.isFinite(config.terminateWorkerTimeout) && config.terminateWorkerTimeout >= 0) {
|
|
@@ -2135,85 +2170,6 @@
|
|
|
2135
2170
|
});
|
|
2136
2171
|
}
|
|
2137
2172
|
|
|
2138
|
-
/*
|
|
2139
|
-
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
2140
|
-
|
|
2141
|
-
Redistribution and use in source and binary forms, with or without
|
|
2142
|
-
modification, are permitted provided that the following conditions are met:
|
|
2143
|
-
|
|
2144
|
-
1. Redistributions of source code must retain the above copyright notice,
|
|
2145
|
-
this list of conditions and the following disclaimer.
|
|
2146
|
-
|
|
2147
|
-
2. Redistributions in binary form must reproduce the above copyright
|
|
2148
|
-
notice, this list of conditions and the following disclaimer in
|
|
2149
|
-
the documentation and/or other materials provided with the distribution.
|
|
2150
|
-
|
|
2151
|
-
3. The names of the authors may not be used to endorse or promote products
|
|
2152
|
-
derived from this software without specific prior written permission.
|
|
2153
|
-
|
|
2154
|
-
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
|
|
2155
|
-
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
2156
|
-
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
|
|
2157
|
-
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
2158
|
-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
2159
|
-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
2160
|
-
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
2161
|
-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
2162
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
2163
|
-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
2164
|
-
*/
|
|
2165
|
-
|
|
2166
|
-
// const MINIMUM_CHUNK_SIZE = 64;
|
|
2167
|
-
const ERR_ABORT = "Abort error";
|
|
2168
|
-
|
|
2169
|
-
async function processData(codec, reader, writer, size, { signal, onprogress }) {
|
|
2170
|
-
let length = 0;
|
|
2171
|
-
let chunkOffset = 0;
|
|
2172
|
-
|
|
2173
|
-
const result = new Promise((resolve, reject) => {
|
|
2174
|
-
codec.pull = async () => {
|
|
2175
|
-
testAborted(signal, codec);
|
|
2176
|
-
const result = await reader.read();
|
|
2177
|
-
chunkOffset += result.length;
|
|
2178
|
-
return result;
|
|
2179
|
-
};
|
|
2180
|
-
codec.ondata = async ({ value, done }) => {
|
|
2181
|
-
try {
|
|
2182
|
-
testAborted(signal, codec);
|
|
2183
|
-
const { data, signature } = value;
|
|
2184
|
-
if (data && data.length) {
|
|
2185
|
-
length += data.length;
|
|
2186
|
-
await writer.ready;
|
|
2187
|
-
await writer.write(data);
|
|
2188
|
-
}
|
|
2189
|
-
if (onprogress) {
|
|
2190
|
-
try {
|
|
2191
|
-
onprogress(chunkOffset, size());
|
|
2192
|
-
} catch (error) {
|
|
2193
|
-
// ignored
|
|
2194
|
-
}
|
|
2195
|
-
}
|
|
2196
|
-
if (done) {
|
|
2197
|
-
await writer.ready;
|
|
2198
|
-
resolve({ signature, length });
|
|
2199
|
-
}
|
|
2200
|
-
} catch (error) {
|
|
2201
|
-
reject(error);
|
|
2202
|
-
}
|
|
2203
|
-
};
|
|
2204
|
-
codec.onerror = reject;
|
|
2205
|
-
});
|
|
2206
|
-
await codec.start();
|
|
2207
|
-
return result;
|
|
2208
|
-
}
|
|
2209
|
-
|
|
2210
|
-
function testAborted(signal, codec) {
|
|
2211
|
-
if (signal && signal.aborted) {
|
|
2212
|
-
codec.abort();
|
|
2213
|
-
throw new Error(ERR_ABORT);
|
|
2214
|
-
}
|
|
2215
|
-
}
|
|
2216
|
-
|
|
2217
2173
|
/*
|
|
2218
2174
|
Copyright (c) 2022 Gildas Lormeau. All rights reserved.
|
|
2219
2175
|
|
|
@@ -2291,24 +2247,15 @@
|
|
|
2291
2247
|
}
|
|
2292
2248
|
|
|
2293
2249
|
class WriterStream extends Stream {
|
|
2250
|
+
|
|
2294
2251
|
getStream() {
|
|
2295
2252
|
const writer = this;
|
|
2296
2253
|
return new WritableStream({
|
|
2297
2254
|
write(chunk) {
|
|
2298
|
-
|
|
2299
|
-
return writer.writeUint8Array(chunk);
|
|
2300
|
-
}
|
|
2255
|
+
return writer.writeUint8Array(chunk);
|
|
2301
2256
|
}
|
|
2302
2257
|
});
|
|
2303
2258
|
}
|
|
2304
|
-
|
|
2305
|
-
getStreamWriter() {
|
|
2306
|
-
const writer = this;
|
|
2307
|
-
if (!writer.streamWriter) {
|
|
2308
|
-
writer.streamWriter = writer.getStream().getWriter();
|
|
2309
|
-
}
|
|
2310
|
-
return writer.streamWriter;
|
|
2311
|
-
}
|
|
2312
2259
|
}
|
|
2313
2260
|
|
|
2314
2261
|
class Writer extends WriterStream {
|
|
@@ -2491,13 +2438,12 @@
|
|
|
2491
2438
|
|
|
2492
2439
|
class ReadableStreamReader {
|
|
2493
2440
|
|
|
2494
|
-
constructor(readableStream) {
|
|
2441
|
+
constructor(readableStream, size = Infinity) {
|
|
2495
2442
|
this.readableStream = readableStream;
|
|
2496
|
-
this.size =
|
|
2443
|
+
this.size = size;
|
|
2497
2444
|
}
|
|
2498
2445
|
|
|
2499
|
-
init(
|
|
2500
|
-
this.size = size;
|
|
2446
|
+
init() {
|
|
2501
2447
|
this.initialized = true;
|
|
2502
2448
|
}
|
|
2503
2449
|
|
|
@@ -2508,27 +2454,26 @@
|
|
|
2508
2454
|
|
|
2509
2455
|
class WritableStreamWriter extends Writer {
|
|
2510
2456
|
|
|
2511
|
-
constructor(
|
|
2457
|
+
constructor(writable) {
|
|
2512
2458
|
super();
|
|
2513
2459
|
const writer = this;
|
|
2514
|
-
writer.
|
|
2515
|
-
writer.writer = writer.getStreamWriter();
|
|
2460
|
+
writer.writable = writable;
|
|
2516
2461
|
}
|
|
2517
2462
|
|
|
2518
2463
|
async writeUint8Array(array) {
|
|
2519
2464
|
await this.writer.ready;
|
|
2520
|
-
|
|
2465
|
+
const writer = this.writable.getWriter();
|
|
2466
|
+
await writer.write(array);
|
|
2467
|
+
writer.releaseLock();
|
|
2521
2468
|
}
|
|
2522
2469
|
|
|
2523
2470
|
getStream() {
|
|
2524
|
-
return this.
|
|
2471
|
+
return this.writable;
|
|
2525
2472
|
}
|
|
2526
2473
|
|
|
2527
2474
|
async getData() {
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
await writer.writer.close();
|
|
2531
|
-
return writer.writableStream;
|
|
2475
|
+
await this.writable.getWriter().close();
|
|
2476
|
+
return this.writable;
|
|
2532
2477
|
}
|
|
2533
2478
|
}
|
|
2534
2479
|
|
|
@@ -3228,7 +3173,15 @@
|
|
|
3228
3173
|
throw new Error(ERR_ENCRYPTED);
|
|
3229
3174
|
}
|
|
3230
3175
|
}
|
|
3231
|
-
const
|
|
3176
|
+
const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
|
|
3177
|
+
const size = () => compressedSize;
|
|
3178
|
+
const readable = reader.getStream({ offset: dataOffset, size, chunkSize: getChunkSize(config) });
|
|
3179
|
+
const writable = writer.getStream();
|
|
3180
|
+
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
3181
|
+
if (!writer.initialized) {
|
|
3182
|
+
await writer.init();
|
|
3183
|
+
}
|
|
3184
|
+
await runCodec(config.Inflate, readable, writable, {
|
|
3232
3185
|
codecType: CODEC_INFLATE,
|
|
3233
3186
|
password,
|
|
3234
3187
|
zipCrypto,
|
|
@@ -3240,19 +3193,7 @@
|
|
|
3240
3193
|
encrypted,
|
|
3241
3194
|
useWebWorkers: getOptionValue$1(zipEntry, options, "useWebWorkers"),
|
|
3242
3195
|
useCompressionStream: getOptionValue$1(zipEntry, options, "useCompressionStream")
|
|
3243
|
-
}, config);
|
|
3244
|
-
if (!writer.initialized) {
|
|
3245
|
-
await writer.init();
|
|
3246
|
-
}
|
|
3247
|
-
const signal = getOptionValue$1(zipEntry, options, "signal");
|
|
3248
|
-
const dataOffset = offset + 30 + localDirectory.filenameLength + localDirectory.extraFieldLength;
|
|
3249
|
-
const size = () => compressedSize;
|
|
3250
|
-
await processData(
|
|
3251
|
-
codec,
|
|
3252
|
-
reader.getStream({ offset: dataOffset, size, chunkSize: getChunkSize(config) }).getReader(),
|
|
3253
|
-
writer.getStreamWriter(),
|
|
3254
|
-
size,
|
|
3255
|
-
{ onprogress: options.onprogress, signal });
|
|
3196
|
+
}, config, { signal, onprogress: options.onprogress, size });
|
|
3256
3197
|
return writer.getData();
|
|
3257
3198
|
}
|
|
3258
3199
|
}
|
|
@@ -3551,7 +3492,7 @@
|
|
|
3551
3492
|
const ERR_INVALID_ENCRYPTION_STRENGTH = "The strength must equal 1, 2, or 3";
|
|
3552
3493
|
const ERR_INVALID_EXTRAFIELD_TYPE = "Extra field type exceeds 65535";
|
|
3553
3494
|
const ERR_INVALID_EXTRAFIELD_DATA = "Extra field data exceeds 64KB";
|
|
3554
|
-
const ERR_UNSUPPORTED_FORMAT = "Zip64 is not supported";
|
|
3495
|
+
const ERR_UNSUPPORTED_FORMAT = "Zip64 is not supported (make sure 'keepOrder' is set to 'true')";
|
|
3555
3496
|
|
|
3556
3497
|
const EXTRAFIELD_DATA_AES = new Uint8Array([0x07, 0x00, 0x02, 0x00, 0x41, 0x45, 0x03, 0x00, 0x00]);
|
|
3557
3498
|
const EXTRAFIELD_LENGTH_ZIP64 = 24;
|
|
@@ -3668,9 +3609,6 @@
|
|
|
3668
3609
|
}
|
|
3669
3610
|
let maximumCompressedSize = 0;
|
|
3670
3611
|
let keepOrder = getOptionValue(zipWriter, options, "keepOrder");
|
|
3671
|
-
if (keepOrder === undefined) {
|
|
3672
|
-
keepOrder = true;
|
|
3673
|
-
}
|
|
3674
3612
|
let uncompressedSize = 0;
|
|
3675
3613
|
let msDosCompatible = getOptionValue(zipWriter, options, "msDosCompatible");
|
|
3676
3614
|
if (msDosCompatible === undefined) {
|
|
@@ -3745,7 +3683,6 @@
|
|
|
3745
3683
|
|
|
3746
3684
|
async function getFileEntry(zipWriter, name, reader, options) {
|
|
3747
3685
|
const { files, writer } = zipWriter;
|
|
3748
|
-
const streamWriter = writer.getStreamWriter();
|
|
3749
3686
|
const previousFileEntry = Array.from(files.values()).pop();
|
|
3750
3687
|
let fileEntry = {};
|
|
3751
3688
|
let bufferedWrite;
|
|
@@ -3771,7 +3708,7 @@
|
|
|
3771
3708
|
}
|
|
3772
3709
|
fileWriter = writer;
|
|
3773
3710
|
}
|
|
3774
|
-
fileEntry = await createFileEntry(reader, fileWriter.
|
|
3711
|
+
fileEntry = await createFileEntry(reader, fileWriter.getStream(), zipWriter.config, options);
|
|
3775
3712
|
fileEntry.lock = lockCurrentFileEntry;
|
|
3776
3713
|
files.set(name, fileEntry);
|
|
3777
3714
|
fileEntry.filename = name;
|
|
@@ -3787,6 +3724,7 @@
|
|
|
3787
3724
|
}
|
|
3788
3725
|
} while (pendingFileEntry && pendingFileEntry.lock);
|
|
3789
3726
|
fileEntry.writingBufferedData = true;
|
|
3727
|
+
const writable = writer.getStream();
|
|
3790
3728
|
if (!options.dataDescriptor) {
|
|
3791
3729
|
const headerLength = 26;
|
|
3792
3730
|
const arrayBuffer = await sliceAsArrayBuffer(blob, 0, headerLength);
|
|
@@ -3801,10 +3739,10 @@
|
|
|
3801
3739
|
setUint32(arrayBufferView, 18, fileEntry.compressedSize);
|
|
3802
3740
|
setUint32(arrayBufferView, 22, fileEntry.uncompressedSize);
|
|
3803
3741
|
}
|
|
3804
|
-
await writeUint8Array(
|
|
3742
|
+
await writeUint8Array(writable, new Uint8Array(arrayBuffer));
|
|
3805
3743
|
indexWrittenData = headerLength;
|
|
3806
3744
|
}
|
|
3807
|
-
await writeBlob(
|
|
3745
|
+
await writeBlob(writable, blob, indexWrittenData);
|
|
3808
3746
|
delete fileEntry.writingBufferedData;
|
|
3809
3747
|
}
|
|
3810
3748
|
fileEntry.offset = zipWriter.offset;
|
|
@@ -3833,7 +3771,7 @@
|
|
|
3833
3771
|
}
|
|
3834
3772
|
}
|
|
3835
3773
|
|
|
3836
|
-
async function createFileEntry(reader,
|
|
3774
|
+
async function createFileEntry(reader, writable, config, options) {
|
|
3837
3775
|
const {
|
|
3838
3776
|
rawFilename,
|
|
3839
3777
|
lastAccessDate,
|
|
@@ -3980,7 +3918,11 @@
|
|
|
3980
3918
|
let result;
|
|
3981
3919
|
let compressedSize = 0;
|
|
3982
3920
|
if (reader) {
|
|
3983
|
-
|
|
3921
|
+
await writeUint8Array(writable, localHeaderArray);
|
|
3922
|
+
fileEntry.dataWritten = true;
|
|
3923
|
+
const size = () => reader.size;
|
|
3924
|
+
const readable = reader.getStream({ offset: 0, size, chunkSize: getChunkSize(config) });
|
|
3925
|
+
result = await runCodec(config.Deflate, readable, writable, {
|
|
3984
3926
|
codecType: CODEC_DEFLATE,
|
|
3985
3927
|
level,
|
|
3986
3928
|
password,
|
|
@@ -3992,20 +3934,11 @@
|
|
|
3992
3934
|
encrypted,
|
|
3993
3935
|
useWebWorkers,
|
|
3994
3936
|
useCompressionStream
|
|
3995
|
-
}, config);
|
|
3996
|
-
await writeUint8Array(streamWriter, localHeaderArray);
|
|
3997
|
-
fileEntry.dataWritten = true;
|
|
3998
|
-
const size = () => reader.size;
|
|
3999
|
-
result = await processData(
|
|
4000
|
-
codec,
|
|
4001
|
-
reader.getStream({ offset: 0, size, chunkSize: getChunkSize(config) }).getReader(),
|
|
4002
|
-
streamWriter,
|
|
4003
|
-
() => reader.size,
|
|
4004
|
-
{ onprogress, signal });
|
|
3937
|
+
}, config, { signal, onprogress, size });
|
|
4005
3938
|
uncompressedSize = fileEntry.uncompressedSize = reader.size;
|
|
4006
3939
|
compressedSize = result.length;
|
|
4007
3940
|
} else {
|
|
4008
|
-
await writeUint8Array(
|
|
3941
|
+
await writeUint8Array(writable, localHeaderArray);
|
|
4009
3942
|
fileEntry.dataWritten = true;
|
|
4010
3943
|
}
|
|
4011
3944
|
let dataDescriptorArray = new Uint8Array(0);
|
|
@@ -4049,7 +3982,7 @@
|
|
|
4049
3982
|
}
|
|
4050
3983
|
}
|
|
4051
3984
|
if (dataDescriptor) {
|
|
4052
|
-
await writeUint8Array(
|
|
3985
|
+
await writeUint8Array(writable, dataDescriptorArray);
|
|
4053
3986
|
}
|
|
4054
3987
|
const length = localHeaderArray.length + compressedSize + dataDescriptorArray.length;
|
|
4055
3988
|
Object.assign(fileEntry, { compressedSize, lastModDate, rawLastModDate, creationDate, lastAccessDate, encrypted, length });
|
|
@@ -4058,7 +3991,6 @@
|
|
|
4058
3991
|
|
|
4059
3992
|
async function closeFile(zipWriter, comment, options) {
|
|
4060
3993
|
const { files } = zipWriter;
|
|
4061
|
-
const streamWriter = zipWriter.writer.getStreamWriter();
|
|
4062
3994
|
let offset = 0;
|
|
4063
3995
|
let directoryDataLength = 0;
|
|
4064
3996
|
let directoryOffset = zipWriter.offset;
|
|
@@ -4173,9 +4105,10 @@
|
|
|
4173
4105
|
setUint16(directoryView, offset + 10, filesLength);
|
|
4174
4106
|
setUint32(directoryView, offset + 12, directoryDataLength);
|
|
4175
4107
|
setUint32(directoryView, offset + 16, directoryOffset);
|
|
4176
|
-
|
|
4108
|
+
const writable = zipWriter.writer.getStream();
|
|
4109
|
+
await writeUint8Array(writable, directoryArray);
|
|
4177
4110
|
if (comment && comment.length) {
|
|
4178
|
-
await writeUint8Array(
|
|
4111
|
+
await writeUint8Array(writable, comment);
|
|
4179
4112
|
}
|
|
4180
4113
|
}
|
|
4181
4114
|
|
|
@@ -4196,23 +4129,25 @@
|
|
|
4196
4129
|
}
|
|
4197
4130
|
}
|
|
4198
4131
|
|
|
4199
|
-
async function writeBlob(
|
|
4132
|
+
async function writeBlob(writable, blob, start = 0) {
|
|
4200
4133
|
const blockSize = 512 * 1024 * 1024;
|
|
4201
4134
|
await writeSlice();
|
|
4202
4135
|
|
|
4203
4136
|
async function writeSlice() {
|
|
4204
4137
|
if (start < blob.size) {
|
|
4205
4138
|
const arrayBuffer = await sliceAsArrayBuffer(blob, start, start + blockSize);
|
|
4206
|
-
await writeUint8Array(
|
|
4139
|
+
await writeUint8Array(writable, new Uint8Array(arrayBuffer));
|
|
4207
4140
|
start += blockSize;
|
|
4208
4141
|
await writeSlice();
|
|
4209
4142
|
}
|
|
4210
4143
|
}
|
|
4211
4144
|
}
|
|
4212
4145
|
|
|
4213
|
-
async function writeUint8Array(
|
|
4146
|
+
async function writeUint8Array(writable, array) {
|
|
4147
|
+
const streamWriter = writable.getWriter();
|
|
4214
4148
|
await streamWriter.ready;
|
|
4215
4149
|
await streamWriter.write(array);
|
|
4150
|
+
streamWriter.releaseLock();
|
|
4216
4151
|
}
|
|
4217
4152
|
|
|
4218
4153
|
function getTimeNTFS(date) {
|