@zip.js/zip.js 2.8.30 → 2.8.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/BENCHMARKS.md +82 -1
  2. package/deno.json +5 -4
  3. package/dist/zip-core.js +403 -339
  4. package/dist/zip-core.min.js +1 -1
  5. package/dist/zip-fs-core.js +116 -278
  6. package/dist/zip-fs-core.min.js +1 -1
  7. package/dist/zip-fs-native.js +440 -378
  8. package/dist/zip-fs-native.min.js +1 -1
  9. package/dist/zip-fs.js +439 -377
  10. package/dist/zip-fs.min.js +1 -1
  11. package/dist/zip-legacy.js +408 -344
  12. package/dist/zip-legacy.min.js +1 -1
  13. package/dist/zip-module.wasm +0 -0
  14. package/dist/zip-native.js +411 -347
  15. package/dist/zip-native.min.js +1 -1
  16. package/dist/zip-web-worker-native.js +1 -1
  17. package/dist/zip-web-worker.js +1 -1
  18. package/dist/zip.js +410 -346
  19. package/dist/zip.min.js +1 -1
  20. package/index-native.cjs +440 -378
  21. package/index-native.min.js +1 -1
  22. package/index.cjs +439 -377
  23. package/index.d.cts +2853 -0
  24. package/index.d.ts +278 -1
  25. package/index.min.js +1 -1
  26. package/lib/core/codec-worker.js +1 -11
  27. package/lib/core/configuration.js +21 -33
  28. package/lib/core/constants.js +3 -0
  29. package/lib/core/io.js +11 -19
  30. package/lib/core/streams/aes-crypto-stream.js +16 -20
  31. package/lib/core/streams/common-crypto.js +0 -2
  32. package/lib/core/streams/zip-crypto-stream.js +12 -16
  33. package/lib/core/streams/zip-entry-stream.js +2 -32
  34. package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
  35. package/lib/core/streams/zlib-wasm/zlib-streams-loader.js +1 -3
  36. package/lib/core/streams/zlib-wasm/zlib-streams.wasm +0 -0
  37. package/lib/core/util/base64.js +68 -0
  38. package/lib/core/util/blob-temp-stream.js +124 -0
  39. package/lib/core/util/decode-text.js +0 -1
  40. package/lib/core/util/default-mime-type.js +0 -3
  41. package/lib/core/util/inflate.js +194 -0
  42. package/lib/core/util/mime-type.js +26 -22
  43. package/lib/core/util/opfs-temp-stream.js +1 -37
  44. package/lib/core/util/sync-access-handle-temp-stream.js +147 -0
  45. package/lib/core/web-worker-inline-native.js +1 -1
  46. package/lib/core/web-worker-inline-template-native.js +5 -5
  47. package/lib/core/web-worker-inline-wasm.js +1 -1
  48. package/lib/core/zip-fs.js +6 -13
  49. package/lib/core/zip-reader.js +48 -127
  50. package/lib/core/zip-writer.js +27 -45
  51. package/lib/core/zlib-streams-inline-template.js +3 -2
  52. package/lib/core/zlib-streams-inline.js +1 -1
  53. package/lib/zip-core-base.js +10 -2
  54. package/package.json +9 -6
  55. package/reserved-property-names.js +50 -0
  56. package/lib/core/util/mini-lz.js +0 -198
@@ -1 +1 @@
1
- ((A,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).zip={})})(this,function(A){"use strict";const{Array:e,Object:t,String:g,Number:i,BigInt:r,Math:s,Date:a,Map:o,Set:n,Response:B,URL:c,Error:l,Uint8Array:I,Uint16Array:E,Uint32Array:w,DataView:d,Blob:C,Promise:u,TextEncoder:h,TextDecoder:F,document:Y,crypto:Q,btoa:D,TransformStream:f,ReadableStream:p,WritableStream:m,CompressionStream:y,DecompressionStream:S,navigator:M,Worker:b}="undefined"!=typeof globalThis?globalThis:this||self;var G=void 0!==Y?Y.currentScript:null;const U=4294967295,W=65535,O=255,T=67324752,K=134695760,R=K,z=33639248,k=101010256,x=101075792,L=117853008,N=22,H=20,J=21589,P=2048,V=16384,X=2048,Z=1024,q="/",v=30,j=new a(2107,11,31),_=new a(1980,0,1),$=void 0,AA=1/0,eA="undefined",tA="function";let gA=2;try{typeof M!=eA&&M.hardwareConcurrency&&(gA=M.hardwareConcurrency)}catch{}const iA={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:gA,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof y!=eA&&y,DecompressionStream:typeof S!=eA&&S},rA=t.assign({},iA);function sA(){return rA}function aA(A){return s.max(A.chunkSize,64)}function oA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,workerStarvationTimeout:r,useCompressionStream:s,useWebWorkers:a,CompressionStream:o,DecompressionStream:n,CompressionStreamZlib:B,DecompressionStreamZlib:c,workerURI:l,wasmURI:I}=A;nA("baseURI",e),nA("wasmURI",I),nA("workerURI",l),nA("chunkSize",t),nA("maxWorkers",g),nA("terminateWorkerTimeout",i),nA("workerStarvationTimeout",r),nA("useCompressionStream",s),nA("useWebWorkers",a),nA("CompressionStream",o),nA("DecompressionStream",n),nA("CompressionStreamZlib",B),nA("DecompressionStreamZlib",c)}function nA(A,e){e!==$&&(rA[A]=e)}const BA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cA=[[],[],[],[],[],[],[],[]];for(let A=0;256>A;A++){let e=A;for(let A=0;8>A;A++)e=1&e?e>>>1^3988292384:e>>>1;cA[0][A]=e}for(let A=0;256>A;A++)for(let e=1;8>e;e++){const t=cA[e-1][A];cA[e][A]=t>>>8^cA[0][255&t]}const[lA,IA,EA,wA,dA,CA,uA,hA]=cA;class FA{constructor(A){this.crc=A||-1}append(A){let e=0|this.crc;const t=0|A.length;let g=0;if(t>=8&&A.buffer){const i=new d(A.buffer,A.byteOffset,t),r=t-8;for(;r>=g;g+=8){const A=e^i.getInt32(g,!0),t=i.getInt32(g+4,!0);e=hA[255&A]^uA[A>>>8&255]^CA[A>>>16&255]^dA[A>>>24&255]^wA[255&t]^EA[t>>>8&255]^IA[t>>>16&255]^lA[t>>>24&255]}}for(;t>g;g++)e=e>>>8^lA[255&(e^A[g])];this.crc=e}get(){return~this.crc}}class YA extends f{constructor(){let A;const e=new FA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new I(4);new d(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function QA(A){if(typeof h==eA){const e=new I((A=unescape(encodeURIComponent(A))).length);for(let t=0;t<e.length;t++)e[t]=A.charCodeAt(t);return e}return(new h).encode(A)}const DA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=DA.getPartial(t);return 32===g?A.concat(e):DA._shiftRight(e,g,0|t,A.slice(0,A.length-1))},bitLength(A){const e=A.length;if(0===e)return 0;const t=A[e-1];return 32*(e-1)+DA.getPartial(t)},clamp(A,e){if(32*A.length<e)return A;const t=(A=A.slice(0,s.ceil(e/32))).length;return e&=31,t>0&&e&&(A[t-1]=DA.partial(e,A[t-1]&2147483648>>e-1,1)),A},partial:(A,e,t)=>32===A?e:(t?0|e:e<<32-A)+1099511627776*A,getPartial:A=>s.round(A/1099511627776)||32,_shiftRight(A,e,t,g){for(void 0===g&&(g=[]);e>=32;e-=32)g.push(t),t=0;if(0===e)return g.concat(A);for(let i=0;i<A.length;i++)g.push(t|A[i]>>>e),t=A[i]<<32-e;const i=A.length?A[A.length-1]:0,r=DA.getPartial(i);return g.push(DA.partial(e+r&31,e+r>32?t:g.pop(),1)),g}},fA={bytes:{fromBits(A){const e=DA.bitLength(A)/8,t=new I(e);let g;for(let i=0;e>i;i++)3&i||(g=A[i/4]),t[i]=g>>>24,g<<=8;return t},toBits(A){const e=[];let t,g=0;for(t=0;t<A.length;t++)g=g<<8|A[t],3&~t||(e.push(g),g=0);return 3&t&&e.push(DA.partial(8*(3&t),g)),e}}},pA=class{constructor(A){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],A?(e._h=A._h.slice(0),e._buffer=A._buffer.slice(0),e._length=A._length):e.reset()}reset(){const A=this;return A._h=A._init.slice(0),A._buffer=[],A._length=0,A}update(A){const e=this;"string"==typeof A&&(A=fA.utf8String.toBits(A));const t=e._buffer=DA.concat(e._buffer,A),g=e._length,i=e._length=g+DA.bitLength(A);if(i>9007199254740991)throw new l("Cannot hash more than 2^53 - 1 bits");const r=new w(t);let s=0;for(let A=e.blockSize+g-(e.blockSize+g&e.blockSize-1);i>=A;A+=e.blockSize)e._block(r.subarray(16*s,16*(s+1))),s+=1;return t.splice(0,16*s),e}finalize(){const A=this;let e=A._buffer;const t=A._h;e=DA.concat(e,[DA.partial(1,1)]);for(let A=e.length+2;15&A;A++)e.push(0);for(e.push(s.floor(A._length/4294967296)),e.push(0|A._length);e.length;)A._block(e.splice(0,16));return A.reset(),t}_f(A,e,t,g){return A>19?A>39?A>59?A>79?void 0:e^t^g:e&t|e&g|t&g:e^t^g:e&t|~e&g}_S(A,e){return e<<A|e>>>32-A}_block(A){const t=this,g=t._h,i=e(80);for(let e=0;16>e;e++)i[e]=A[e];let r=g[0],a=g[1],o=g[2],n=g[3],B=g[4];for(let A=0;79>=A;A++){16>A||(i[A]=t._S(1,i[A-3]^i[A-8]^i[A-14]^i[A-16]));const e=t._S(5,r)+t._f(A,a,o,n)+B+i[A]+t._key[s.floor(A/20)]|0;B=n,n=o,o=t._S(30,a),a=r,r=e}g[0]=g[0]+r|0,g[1]=g[1]+a|0,g[2]=g[2]+o|0,g[3]=g[3]+n|0,g[4]=g[4]+B|0}},mA={importKey:A=>new mA.hmacSha1(fA.bytes.toBits(A)),pbkdf2(A,e,t,g){if(t=t||1e4,0>g||0>t)throw new l("invalid params to pbkdf2");const i=1+(g>>5)<<2;let r,s,a,o,n;const B=new ArrayBuffer(i),c=new d(B);let I=0;const E=DA;for(e=fA.bytes.toBits(e),n=1;(i||1)>I;n++){for(r=s=A.encrypt(E.concat(e,[n])),a=1;t>a;a++)for(s=A.encrypt(s),o=0;o<s.length;o++)r[o]^=s[o];for(a=0;(i||1)>I&&a<r.length;a++)c.setInt32(I,r[a]),I+=4}return B.slice(0,g/8)},hmacSha1:class{constructor(A){const e=this,t=e._hash=pA,g=[[],[]];e._baseHash=[new t,new t];const i=e._baseHash[0].blockSize/32;A.length>i&&(A=(new t).update(A).finalize());for(let e=0;i>e;e++)g[0][e]=909522486^A[e],g[1][e]=1549556828^A[e];e._baseHash[0].update(g[0]),e._baseHash[1].update(g[1]),e._resultHash=new t(e._baseHash[0])}reset(){const A=this;A._resultHash=new A._hash(A._baseHash[0]),A._updated=!1}update(A){this._updated=!0,this._resultHash.update(A)}digest(){const A=this,e=A._resultHash.finalize(),t=new A._hash(A._baseHash[1]).update(e).finalize();return A.reset(),t}encrypt(A){if(this._updated)throw new l("encrypt on already updated hmac called!");return this.update(A),this.digest(A)}}},yA=typeof Q!=eA&&typeof Q.getRandomValues==tA,SA="Invalid password",MA="Invalid signature",bA="zipjs-abort-check-password";function GA(A){if(yA)return Q.getRandomValues(A);throw new l("Crypto API not supported")}const UA=16,WA={name:"PBKDF2"},OA=t.assign({hash:{name:"HMAC"}},WA),TA=t.assign({iterations:1e3,hash:{name:"SHA-1"}},WA),KA=["deriveBits"],RA=[8,12,16],zA=[16,24,32],kA=10,xA=[0,0,0,0],LA=typeof Q!=eA,NA=LA&&Q.subtle,HA=LA&&typeof NA!=eA,JA=fA.bytes,PA=class{constructor(A){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const t=e._tables[0][4],g=e._tables[1],i=A.length;let r,s,a,o=1;if(4!==i&&6!==i&&8!==i)throw new l("invalid aes key size");for(e._key=[s=A.slice(0),a=[]],r=i;4*i+28>r;r++){let A=s[r-1];(r%i===0||8===i&&r%i===4)&&(A=t[A>>>24]<<24^t[A>>16&255]<<16^t[A>>8&255]<<8^t[255&A],r%i===0&&(A=A<<8^A>>>24^o<<24,o=o<<1^283*(o>>7))),s[r]=s[r-i]^A}for(let A=0;r;A++,r--){const e=s[3&A?r:r-4];a[A]=4>=r||4>A?e:g[0][t[e>>>24]]^g[1][t[e>>16&255]]^g[2][t[e>>8&255]]^g[3][t[255&e]]}}encrypt(A){return this._crypt(A,0)}decrypt(A){return this._crypt(A,1)}_precompute(){const A=this._tables[0],e=this._tables[1],t=A[4],g=e[4],i=[],r=[];let s,a,o,n;for(let A=0;256>A;A++)r[(i[A]=A<<1^283*(A>>7))^A]=A;for(let B=s=0;!t[B];B^=a||1,s=r[s]||1){let r=s^s<<1^s<<2^s<<3^s<<4;r=r>>8^255&r^99,t[B]=r,g[r]=B,n=i[o=i[a=i[B]]];let c=16843009*n^65537*o^257*a^16843008*B,l=257*i[r]^16843008*r;for(let t=0;4>t;t++)A[t][B]=l=l<<24^l>>>8,e[t][r]=c=c<<24^c>>>8}for(let t=0;5>t;t++)A[t]=A[t].slice(0),e[t]=e[t].slice(0)}_crypt(A,e){if(4!==A.length)throw new l("invalid aes block size");const t=this._key[e],g=t.length/4-2,i=[0,0,0,0],r=this._tables[e],s=r[0],a=r[1],o=r[2],n=r[3],B=r[4];let c,I,E,w=A[0]^t[0],d=A[e?3:1]^t[1],C=A[2]^t[2],u=A[e?1:3]^t[3],h=4;for(let A=0;g>A;A++)c=s[w>>>24]^a[d>>16&255]^o[C>>8&255]^n[255&u]^t[h],I=s[d>>>24]^a[C>>16&255]^o[u>>8&255]^n[255&w]^t[h+1],E=s[C>>>24]^a[u>>16&255]^o[w>>8&255]^n[255&d]^t[h+2],u=s[u>>>24]^a[w>>16&255]^o[d>>8&255]^n[255&C]^t[h+3],h+=4,w=c,d=I,C=E;for(let A=0;4>A;A++)i[e?3&-A:A]=B[w>>>24]<<24^B[d>>16&255]<<16^B[C>>8&255]<<8^B[255&u]^t[h++],c=w,w=d,d=C,C=u,u=c;return i}},VA=class{constructor(A,e){this._prf=A,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(A){return this.calculate(this._prf,A,this._iv)}incWord(A){if(255&~(A>>24))A+=1<<24;else{let e=A>>16&255,t=A>>8&255,g=255&A;255===e?(e=0,255===t?(t=0,255===g?g=0:++g):++t):++e,A=0,A+=e<<16,A+=t<<8,A+=g}return A}incCounter(A){0===(A[0]=this.incWord(A[0]))&&(A[1]=this.incWord(A[1]))}calculate(A,e,t){let g;if(!(g=e.length))return[];const i=DA.bitLength(e);for(let i=0;g>i;i+=4){this.incCounter(t);const g=A.encrypt(t);e[i]^=g[0],e[i+1]^=g[1],e[i+2]^=g[2],e[i+3]^=g[3]}return DA.clamp(e,i)}},XA=mA.hmacSha1;let ZA=LA&&HA&&typeof NA.importKey==tA,qA=LA&&HA&&typeof NA.deriveBits==tA;class vA extends f{constructor({password:A,rawPassword:e,encryptionStrength:g,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:Ae(A,e),strength:g-1,pending:new I})},async transform(A,e){const t=this,{password:g,strength:r,resolveReady:s,ready:a}=t;g?(await(async(A,e,t,g)=>{const i=await $A(A,e,t,te(g,0,RA[e])),r=te(g,RA[e]);if(i[0]!=r[0]||i[1]!=r[1])throw new l(SA)})(t,r,g,te(A,0,RA[r]+2)),A=te(A,RA[r]+2),i?e.error(new l(bA)):s()):await a;const o=new I(A.length-kA-(A.length-kA)%UA);e.enqueue(_A(t,A,o,0,kA,!0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:i}=this;if(t&&e){await i;const r=te(g,0,g.length-kA),s=te(g,g.length-kA);let a=new I;if(r.length){const A=ie(JA,r);t.update(A);const g=e.update(A);a=ge(JA,g)}const o=te(ge(JA,t.digest()),0,kA);let n=g.length<kA?1:0;for(let A=0;kA>A;A++)n|=o[A]^s[A];if(n)throw new l(MA);A.enqueue(a)}}})}}class jA extends f{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new u(A=>this.resolveReady=A),password:Ae(A,e),strength:g-1,pending:new I})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:r,ready:s}=t;let a=new I;g?(a=await(async(A,e,t)=>{const g=GA(new I(RA[e]));return ee(g,await $A(A,e,t,g))})(t,i,g),r()):await s;const o=new I(a.length+A.length-A.length%UA);o.set(a,0),e.enqueue(_A(t,A,o,a.length,0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:r}=this;if(t&&e){await r;let s=new I;if(g.length){const A=e.update(ie(JA,g));t.update(A),s=ge(JA,A)}i.signature=ge(JA,t.digest()).slice(0,kA),A.enqueue(ee(s,i.signature))}}}),i=this}}function _A(A,e,t,g,i,r){const{ctr:s,hmac:a,pending:o}=A;o.length&&(e=ee(o,e));const n=e.length-i;let B;for(t=((A,e)=>{if(e&&e>A.length){const t=A;(A=new I(e)).set(t,0)}return A})(t,g+(n-n%UA)),B=0;n-UA>=B;B+=UA){const A=ie(JA,te(e,B,B+UA));r&&a.update(A);const i=s.update(A);r||a.update(i),t.set(ge(JA,i),B+g)}return A.pending=te(e,B),t}async function $A(A,g,i,r){A.password=null;const s=await(async(A,e,t,g,i)=>{if(!ZA)return mA.importKey(e);try{return await NA.importKey("raw",e,t,!1,i)}catch{return ZA=!1,mA.importKey(e)}})(0,i,OA,0,KA),a=await(async(A,e,t)=>{if(!qA)return mA.pbkdf2(e,A.salt,TA.iterations,t);try{return await NA.deriveBits(A,e,t)}catch{return qA=!1,mA.pbkdf2(e,A.salt,TA.iterations,t)}})(t.assign({salt:r},TA),s,8*(2*zA[g]+2)),o=new I(a),n=ie(JA,te(o,0,zA[g])),B=ie(JA,te(o,zA[g],2*zA[g])),c=te(o,2*zA[g]);return t.assign(A,{keys:{key:n,authentication:B,passwordVerification:c},ctr:new VA(new PA(n),e.from(xA)),hmac:new XA(B)}),c}function Ae(A,e){return e===$?QA(A):e}function ee(A,e){let t=A;return A.length+e.length&&(t=new I(A.length+e.length),t.set(A,0),t.set(e,A.length)),t}function te(A,e,t){return A.subarray(e,t)}function ge(A,e){return A.fromBits(e)}function ie(A,e){return A.toBits(e)}class re extends f{constructor({password:A,rawPassword:e,passwordVerification:g,checkPasswordOnly:i}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),ne(this,A,e)},transform(A,e){const t=this;if(t.password||t.rawPassword){const e=ae(t,A.subarray(0,12));if(t.password=t.rawPassword=null,0!=(e.at(-1)^t.passwordVerification))throw new l(SA);A=A.subarray(12)}i?e.error(new l(bA)):e.enqueue(ae(t,A))}})}}class se extends f{constructor({password:A,rawPassword:e,passwordVerification:g}){super({start(){t.assign(this,{password:A,rawPassword:e,passwordVerification:g}),ne(this,A,e)},transform(A,e){const t=this;let g,i;if(t.password||t.rawPassword){t.password=t.rawPassword=null;const e=GA(new I(12));e[11]=t.passwordVerification,g=new I(A.length+e.length),g.set(oe(t,e),0),i=12}else g=new I(A.length),i=0;g.set(oe(t,A),i),e.enqueue(g)}})}}function ae(A,e){const t=new I(e.length);for(let g=0;g<e.length;g++)t[g]=ce(A)^e[g],Be(A,t[g]);return t}function oe(A,e){const t=new I(e.length);for(let g=0;g<e.length;g++)t[g]=ce(A)^e[g],Be(A,e[g]);return t}function ne(A,e,g){const i=[305419896,591751049,878082192];if(t.assign(A,{keys:i,crcKey0:new FA(i[0]),crcKey2:new FA(i[2])}),g)for(let e=0;e<g.length;e++)Be(A,g[e]);else for(let t=0;t<e.length;t++)Be(A,e.charCodeAt(t))}function Be(A,e){let[,t]=A.keys;A.crcKey0.append([e]);const g=~A.crcKey0.get();t=Ie(s.imul(Ie(t+le(g)),134775813)+1),A.crcKey2.append([t>>>24]);const i=~A.crcKey2.get();A.keys=[g,t,i]}function ce(A){const e=2|A.keys[2];return le(s.imul(e,1^e)>>>8)}function le(A){return 255&A}function Ie(A){return 4294967295&A}const Ee="Invalid uncompressed size",we="Invalid compressed data";class de extends f{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:r,useCompressionStream:s,zipCrypto:a,signed:o,level:n,deflate64:B}=A,c=this;let l,I,E,w=super.readable;const C=o&&i&&!B&&(!r||a)&&!(!s||!g);r&&!a||!o||C||(l=new YA,w=Ye(w,l)),i&&(C?(E=new Ce,w=Qe(w,new g("gzip")),w=Ye(w,E)):w=Fe(w,s,{level:n,chunkSize:e},g,t,g)),r&&(a?w=Ye(w,new se(A)):(I=new jA(A),w=Ye(w,I))),he(c,w,()=>{let A;r&&!a&&(A=I.signature),r&&!a||!o||(A=C?E.signature:new d(l.value.buffer).getUint32(0)),c.signature=A})}}class Ce extends f{constructor(){let A,e=10,t=new I(0);super({transform(A,g){if(e){const t=s.min(e,A.length);if(e-=t,!(A=A.subarray(t)).length)return}const i=t.length+A.length;if(8>=i){const e=new I(i);return e.set(t),e.set(A,t.length),void(t=e)}const r=i-8,a=new I(r),o=s.min(r,t.length);a.set(t.subarray(0,o),0),r>o&&a.set(A.subarray(0,r-o),o),g.enqueue(a);const n=new I(8),B=t.length-o;B&&n.set(t.subarray(o),0),n.set(A.subarray(r-o),B),t=n},flush(){const e=new d(t.buffer,t.byteOffset,t.byteLength);A.signature=e.getUint32(0,!0),A.uncompressedSize=e.getUint32(4,!0)}}),A=this}}class ue extends f{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:r,signed:s,signature:a,compressed:o,useCompressionStream:n,deflate64:B}=A;let c,I,E=super.readable;r&&(i?E=Ye(E,new re(A)):(I=new vA(A),E=Ye(E,I))),o&&(E=Fe(E,n,{chunkSize:e,deflate64:B},g,t,g),E=(A=>{const e=A.getReader();return new p({async pull(A){let t;try{t=await e.read()}catch(A){if(A&&A.message)throw A;const e=new l(we);throw e.cause=A,e}const{value:g,done:i}=t;i?A.close():A.enqueue(g)},cancel:A=>e.cancel(A)})})(E)),r&&!i||!s||(c=new YA,E=Ye(E,c)),he(this,E,()=>{if((!r||i)&&s){const A=new d(c.value.buffer);if(a!=A.getUint32(0,!1))throw new l(MA)}})}}function he(A,e,g){e=Ye(e,new f({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function Fe(A,e,t,g,i,r){const s=e&&g?g:i||r,a=t.deflate64?"deflate64-raw":"deflate-raw";let o;try{o=new s(a,t)}catch(A){if(!e)throw A;if(i)o=new i(a,t);else{if(!r)throw A;o=new r(a,t)}}return Qe(A,o)}function Ye(A,e){return A.pipeThrough(e)}function Qe(A,e){const t=e.writable.getWriter(),g=A.getReader();return(async()=>{try{for(;;){await t.ready;const A=await g.read();if(A.done){await t.close();break}await t.write(A.value)}}catch(A){await(async(A,e)=>{try{await A.abort(e)}catch{}})(t,A),await(async(A,e)=>{try{await A.cancel(e)}catch{}})(g,A)}})(),e.readable}const De="data",fe="deflate",pe="inflate";class me extends f{constructor(A,e){super({});const g=this,{codecType:i}=A;let r;i.startsWith(fe)?r=de:i.startsWith(pe)&&(r=ue),g.outputSize=0;let s=0;const a=new r(A,e),o=super.readable,n=new f({transform(A,e){A&&A.length&&(s+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:s})}}),B=new f({transform(e,t){if(e&&e.length&&(t.enqueue(e),g.outputSize+=e.length,A.outputSize!==$&&g.outputSize>A.outputSize))throw new l(Ee)},flush(){const{signature:A}=a;t.assign(g,{signature:A,inputSize:s})}});t.defineProperty(g,"readable",{get:()=>o.pipeThrough(n).pipeThrough(a).pipeThrough(B)})}}class ye extends f{constructor(A){let e;1>A&&(A=65536),super({transform:(t,g)=>{if(e){const A=new I(e.length+t.length);A.set(e),A.set(t,e.length),t=A,e=null}let i=0;for(;t.length-i>A;)g.enqueue(t.slice(i,i+A)),i+=A;e=i?t.slice(i):t},flush(A){e&&e.length&&A.enqueue(e)}})}}const Se={type:"module"},Me="error";let be,Ge,Ue,We,Oe=!0;try{Oe=typeof structuredClone==tA&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class Te{constructor(A,{readable:e,writable:g},{options:i,config:r,streamOptions:s,useWebWorkers:a,transferStreams:o,workerURI:n},B){const{signal:c}=s;return t.assign(A,{busy:!0,generation:(A.generation||0)+1,readable:e.pipeThrough(new ye(aA(r))).pipeThrough(new Ke(s),{signal:c}),writable:g,options:t.assign({},i),workerURI:n,transferStreams:o,terminate:()=>new u(e=>{const{worker:t,busy:g}=A;t?(g?A.resolveTerminated=e:(t.terminate(),e()),A.interface=null):e()}),onTaskFinished(){if(A.busy){const{resolveTerminated:e}=A;e&&(A.resolveTerminated=null,A.terminated=!0,A.worker.terminate(),e()),A.busy=!1,B(A)}}}),be===$&&(be=typeof b!=eA),(a&&be?ke:ze)(A,r)}}class Ke extends f{constructor({onstart:A,onprogress:e,size:t,onend:g}){let i=0;super({async start(){A&&await Re(A,t)},async transform(A,g){i+=A.length,e&&await Re(e,i,t),g.enqueue(A)},async flush(){g&&await Re(g,i)}})}}async function Re(A,...e){try{await A(...e)}catch{}}function ze(A,e){return{run:()=>(async({options:A,readable:e,writable:t,onTaskFinished:g},i)=>{let r;try{if(!A.useCompressionStream)try{await void 0}catch{const e=A.codecType.startsWith(fe)?i.CompressionStreamZlib:i.DecompressionStreamZlib;e&&!e.requiresModule||(A.useCompressionStream=!0)}r=new me(A,i),await e.pipeThrough(r).pipeTo(t,{preventClose:!0,preventAbort:!0});const{signature:g,inputSize:s,outputSize:a}=r;return{signature:g,inputSize:s,outputSize:a}}catch(A){throw r&&(A.outputSize=r.outputSize),A}finally{g()}})(A,e)}}function ke(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:r}=e;if(!A.interface){let s;typeof r==tA&&(r=r());try{s=Le(A.workerURI,g,A)}catch{return be=!1,ze(A,e)}t.assign(A,{worker:s,terminated:!1,interface:{run:()=>(async(A,e)=>{let g,i;const r=new u((A,e)=>{g=A,i=e});t.assign(A,{reader:null,writer:null,resolveResult:g,rejectResult:i,result:r});const{readable:s,options:a}=A,{writable:o,closed:n,abortPipe:B}=(A=>{const e=new AbortController,{writable:t,readable:g}=new f,i=g.pipeTo(A,{preventClose:!0,preventAbort:!0,signal:e.signal});return i.catch(()=>{}),{writable:t,closed:i,abortPipe:()=>e.abort()}})(A.writable);let c;try{c=He({type:"start",options:a,config:e,readable:s,writable:o},A)}catch(e){B();try{await n}catch{}throw A.onTaskFinished(),e}c||t.assign(A,{reader:s.getReader(),writer:o.getWriter()});try{const A=await r;return await l(),await n,A}catch(A){await l(),B();try{await n}catch{}throw A}async function l(){if(!c&&!o.locked)try{await o.getWriter().close()}catch{}}})(A,{chunkSize:i,wasmURI:r,baseURI:g})}})}return A.interface}function xe(A){const{worker:e}=A;if(e)try{e.terminate()}catch{}A.interface=null}function Le(A,e,g,i,r=!0){let s,a,o;if(Ue===$||Ge!==A){const t=typeof A==tA;a=t?A(r):A;const n=a.startsWith("data:"),B=a.startsWith("blob:");if(n||B){i===$&&(i=!1),i&&(o=Se);try{s=new b(a,o)}catch(r){if(B)try{c.revokeObjectURL(a)}catch{}if(t&&B)return Le(A,e,g,i,!1);if(i)throw r;return Le(A,e,g,!0,!1)}}else{i===$&&(i=!0),i&&(o=Se);try{a=new c(a,e)}catch{}try{s=new b(a,o)}catch(t){if(i)throw t;return Le(A,e,g,!1,r)}}Ge=A,Ue=a,We=o}else s=new b(Ue,We);return s.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:r,result:s,error:a}=A,{reader:o,writer:n,resolveResult:B,rejectResult:c,onTaskFinished:E,generation:w}=e,d=()=>e.generation!=w;try{if(a){const{message:A,stack:e,code:g,name:i,outputSize:r}=a,s=new l(A);t.assign(s,{stack:e,code:g,name:i,outputSize:r}),C(s)}else{if("pull"==g){const{value:A,done:t}=await o.read();d()||He({type:De,value:A,done:t,messageId:r},e)}g==De&&(await n.ready,await n.write(new I(i)),d()||He({type:"ack",messageId:r},e)),"close"==g&&C(null,s)}}catch(a){d()||(xe(e),C(a))}function C(A,e){d()||(A?c(A):B(e),n&&n.releaseLock(),E())}})(A,g)),s.addEventListener(Me,A=>Ne(A,g)),s.addEventListener("messageerror",A=>Ne(A,g)),s}function Ne(A,e){A.preventDefault&&A.preventDefault();const{rejectResult:t,writer:g,onTaskFinished:i}=e;xe(e),t&&(t(A.error||new l(A.message||Me)),g&&g.releaseLock(),i())}function He(A,{worker:e,writer:t,transferStreams:g}){try{const{value:t,readable:i,writable:r}=A,s=[];if(t&&(A.value=t,s.push(A.value.buffer)),g&&Oe?(i&&s.push(i),r&&s.push(r)):A.readable=A.writable=null,s.length)try{return e.postMessage(A,s),!0}catch{Oe=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),A}}let Je=[];const Pe=[];let Ve,Xe,Ze=0;async function qe(A,e){const{options:t,config:g}=e,{transferStreams:r,useWebWorkers:s,useCompressionStream:a,compressed:o,signed:n,encrypted:B}=t,{workerURI:c,maxWorkers:l}=g;e.transferStreams=r||r===$;const I=!(o||n||B||e.transferStreams);return e.useWebWorkers=!I&&(s||s===$&&g.useWebWorkers),e.workerURI=e.useWebWorkers&&c?c:$,t.useCompressionStream=a||a===$&&g.useCompressionStream,(await(async()=>{const t=Je.find(A=>!A.busy);if(t)return At(t),new Te(t,A,e,E);if(Je.length<l){const t={indexWorker:Ze};return Ze++,Je.push(t),new Te(t,A,e,E)}return new u(t=>{Pe.push({resolve:t,stream:A,workerOptions:e}),Xe=g.workerStarvationTimeout,ve()})})()).run();function E(A){if(je(),Pe.length){const[{resolve:e,stream:t,workerOptions:g}]=Pe.splice(0,1);e(new Te(A,t,g,E)),ve()}else A.worker?(At(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{Je=Je.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):Je=Je.filter(e=>e!=A)}}function ve(){!Ve&&Pe.length&&i.isFinite(Xe)&&Xe>=0&&(Ve=setTimeout(_e,Xe))}function je(){Ve&&(clearTimeout(Ve),Ve=null)}function _e(){if(Ve=null,Pe.length){const[{resolve:A,stream:e,workerOptions:g}]=Pe.splice(0,1),i=t.assign({},g,{useWebWorkers:!1,workerURI:$});A(new Te({},e,i,$e)),ve()}}function $e(){je(),ve()}function At(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const et="HTTP error ",tt="HTTP Range not supported",gt="Content-Range",it="Range",rt="GET",st="bytes",at=65536,ot="writable";class nt{constructor(){this.size=0}init(){this.initialized=!0}}class Bt extends nt{get readable(){const A=this,{chunkSize:e=at}=A,t=new p({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:r,diskNumberStart:a}=t,{chunkOffset:o}=this,n=r===$?e:s.min(e,r-o),B=await Wt(A,i+o,n,a);g.enqueue(B),o+e>r||r===$&&!B.length&&n?g.close():this.chunkOffset+=e}});return t}}class ct extends nt{constructor(){super();const A=this,e=new m({write(e){if(!A.initialized)throw new l("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,ot,{get:()=>e})}writeUint8Array(){}}class lt extends Bt{constructor(A){super(),t.assign(this,{blob:A,size:A.size})}async readUint8Array(A,e){const t=this,g=A+e,i=A||g<t.size?t.blob.slice(A,g):t.blob;let r=await i.arrayBuffer();return r.byteLength>e&&(r=r.slice(A,g)),new I(r)}}class It extends nt{constructor(A){super();const e=this,g=new f,i=[];A&&i.push(["Content-Type",A]),t.defineProperty(e,ot,{get:()=>g.writable}),e.blob=new B(g.readable,{headers:i}).blob(),e.blob.catch(()=>{})}getData(){return this.blob}}class Et extends Bt{constructor(A,e){super(),dt(this,A,e)}async init(){await Ct(this,pt,Yt),super.init()}readUint8Array(A,e){return ut(this,A,e,pt,Yt)}}class wt extends Bt{constructor(A,e){super(),dt(this,A,e)}async init(){await Ct(this,mt,Qt),super.init()}readUint8Array(A,e){return ut(this,A,e,mt,Qt)}}function dt(A,e,g){const{preventHeadRequest:i,useRangeHeader:r,forceRangeRequests:s,combineSizeEocd:a,fetch:o}=g;delete(g=t.assign({},g)).preventHeadRequest,delete g.useRangeHeader,delete g.forceRangeRequests,delete g.combineSizeEocd,delete g.useXHR,delete g.fetch,t.assign(A,{url:e,options:g,preventHeadRequest:i,useRangeHeader:r,forceRangeRequests:s,combineSizeEocd:a,fetch:o})}async function Ct(A,e,t){const{url:g,preventHeadRequest:r,useRangeHeader:s,forceRangeRequests:a,combineSizeEocd:o}=A;if((A=>{const{baseURI:e}=sA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(s||a)&&(void 0===r||r)){const g=await e(rt,A,ht(A,o?-22:void 0)),r=g.headers.get("Accept-Ranges");if(!(a||r&&r.toLowerCase()==st))throw new l(tt);{if(o){const e=new I(await g.arrayBuffer());206==g.status&&e.length==N&&(A.eocdCache=e)}let r;const s=g.headers.get(gt);if(s){const A=s.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(r=i(e))}}r===$?await ft(A,e,t):A.size=r}}else await ft(A,e,t)}async function ut(A,e,t,g,r){const{useRangeHeader:s,forceRangeRequests:a,eocdCache:o,size:n,options:B}=A;if(s||a){if(o&&e==n-N&&t==N)return o;if(n>e&&0!==t){e+t>n&&(t=n-e);const r=await g(rt,A,ht(A,e,t));if(206!=r.status)throw new l(tt);const s=r.headers.get(gt);if(s){const A=i(s.trim().split(/[\s-]+/)[1]);if(!i.isNaN(A)&&A!=e)throw new l(tt)}const a=new I(await r.arrayBuffer());if(a.length!=t)throw new l(tt);return a}return new I}{const{data:g}=A;return g||await r(A,B),new I(A.data.subarray(e,e+t))}}function ht(A,e=0,g=1){return t.assign({},Ft(A),{[it]:st+"="+(0>e?e:e+"-"+(e+g-1))})}function Ft({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function Yt(A){await Dt(A,pt)}async function Qt(A){await Dt(A,mt)}async function Dt(A,e){const t=await e(rt,A,Ft(A));A.data=new I(await t.arrayBuffer()),A.size=A.data.length}async function ft(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=await e("HEAD",A,Ft(A)),r=g.headers.get("Content-Length");r&&!g.headers.get("Content-Encoding")?A.size=i(r):await t(A,A.options)}}async function pt(A,{fetch:e=fetch,options:g,url:i},r){const s=await e(i,t.assign({},g,{method:A,headers:r}));if(400>s.status)return s;throw 416==s.status?new l(tt):new l(et+(s.statusText||s.status))}function mt(A,{url:e},g){return new u((i,r)=>{const s=new XMLHttpRequest;if(s.addEventListener("load",()=>{if(400>s.status){const A=[];s.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(e=>{const t=e.trim().split(/\s*:\s*/);t[0]=t[0].trim().replace(/^[a-z]|-[a-z]/g,A=>A.toUpperCase()),A.push(t)}),i({status:s.status,arrayBuffer:()=>s.response,headers:new o(A)})}else r(416==s.status?new l(tt):new l(et+(s.statusText||s.status)))},!1),s.addEventListener("error",A=>r(A.detail?A.detail.error:new l("Network error")),!1),s.open(A,e),g)for(const A of t.entries(g))s.setRequestHeader(A[0],A[1]);s.responseType="arraybuffer",s.send()})}class yt extends Bt{constructor(A,e={}){super(),t.assign(this,{url:A,reader:e.useXHR&&!e.fetch?new wt(A,e):new Et(A,e)})}set size(A){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(A,e){return this.reader.readUint8Array(A,e)}}class St extends Bt{constructor(A){super(),this.readers=A}async init(){const A=this,{readers:e}=A;A.lastDiskNumber=0,A.lastDiskOffset=0,await u.all(e.map(async(t,g)=>{await Ut(t),g!=e.length-1&&(A.lastDiskOffset+=t.size),A.size+=t.size})),super.init()}async readUint8Array(A,e,t=0){const g=this,{readers:i}=this;let r,a=t;-1==a&&(a=i.length-1);let o=A;for(;i[a]&&o>=i[a].size;)o-=i[a].size,a++;const n=i[a];if(n){const i=n.size;if(o+e>i){const s=i-o;r=new I(e);const a=await Wt(n,o,s);r.set(a,0);const B=await g.readUint8Array(A+s,e-s,t);r.set(B,s),a.length+B.length<e&&(r=r.subarray(0,a.length+B.length))}else r=await Wt(n,o,e)}else r=new I;return g.lastDiskNumber=s.max(a,g.lastDiskNumber),r}}class Mt extends nt{constructor(A,e=4294967295){super();const g=this;let i,r,s;t.assign(g,{diskNumber:0,diskOffset:0,size:0,maxSize:e,availableSize:e});const a=new m({async write(e){const{availableSize:t}=g;if(s)e.length<t?await o(e):(await o(e.subarray(0,t)),await n(),g.diskOffset+=i.size,g.diskNumber++,s=null,g.availableSize=g.maxSize,e.length>t&&await this.write(e.subarray(t)));else{const{value:t,done:a}=await A.next();if(a&&!t)throw new l("Writer iterator completed too soon");i=t,i.size=0,i.maxSize&&(g.maxSize=i.maxSize),g.availableSize=g.maxSize,await Ut(i),r=t.writable,s=r.getWriter(),await this.write(e)}},async close(){s&&(await s.ready,await n())},async abort(A){s&&await s.abort(A)}});async function o(A){const e=A.length;e&&(await s.ready,await s.write(A),i.size+=e,g.availableSize-=e)}async function n(){await s.close()}t.defineProperty(g,ot,{get:()=>a})}}class bt{constructor(A){return e.isArray(A)&&(A=new St(A)),A instanceof p&&(A={readable:A}),A}}class Gt{constructor(A){return A.writable===$&&typeof A.next==tA&&(A=new Mt(A)),A instanceof m&&(A={writable:A}),A.size===$&&(A.size=0),A instanceof Mt||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:AA,maxSize:AA}),A}}async function Ut(A,e){if(!A.init||A.initialized)return u.resolve();await A.init(e)}function Wt(A,e,t,g){return A.readUint8Array(e,t,g)}const Ot="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Tt(A,e){return e&&"cp437"==e.trim().toLowerCase()?(A=>{{let e="";for(let t=0;t<A.length;t++)e+=Ot[A[t]];return e}})(A):new F(e,{ignoreBOM:!0}).decode(A)}const Kt="filename",Rt="rawFilename",zt="comment",kt="rawComment",xt="uncompressedSize",Lt="compressedSize",Nt="offset",Ht="diskNumberStart",Jt="lastModDate",Pt="rawLastModDate",Vt="lastAccessDate",Xt="creationDate",Zt="rawCreationDate",qt="internalFileAttributes",vt="externalFileAttributes",jt="msdosAttributesRaw",_t="msdosAttributes",$t="msDosCompatible",Ag="zip64",eg="encrypted",tg="version",gg="versionMadeBy",ig="zipCrypto",rg="directory",sg="executable",ag="compressionMethod",og="signature",ng="extraField",Bg="unixMode",cg="setuid",lg="setgid",Ig="sticky",Eg=[Kt,Rt,xt,Lt,Jt,Pt,zt,kt,Vt,Xt,Zt,Nt,Ht,qt,vt,jt,_t,$t,Ag,eg,tg,gg,ig,rg,sg,ag,og,ng,"extraFieldUnix","extraFieldInfoZip","uid","gid",Bg,cg,lg,Ig,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class wg{constructor(A){Eg.forEach(e=>this[e]=A[e])}}const dg="password",Cg="rawPassword",ug="passThrough",hg="signal",Fg="checkAmbiguity",Yg="useWebWorkers",Qg="useCompressionStream",Dg="transferStreams",fg="preventClose",pg="offset",mg="strictness",yg="strict",Sg="tolerant",Mg="File format is not recognized",bg="End of central directory not found",Gg="End of Zip64 central directory locator not found",Ug="Central directory header not found",Wg="Local file header not found",Og="Zip64 extra field not found",Tg="File contains encrypted entry",Kg="Encryption method not supported",Rg="Compression method not supported",zg="Split zip file",kg="Overlapping entry found",xg="Ambiguous archive",Lg="utf-8",Ng="cp437",Hg=[[xt,U],[Lt,U],[Nt,U],[Ht,W]],Jg={[W]:{getValue:ci,bytes:4},[U]:{getValue:li,bytes:8}};class Pg{constructor(A,e={}){t.assign(this,{reader:new bt(A),options:e,config:sA(),readRanges:new o})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await Ut(g),g.size!==$&&g.readUint8Array||(g=new lt(await new B(g.readable).blob()),await Ut(g)),g.size<N)throw new l(Mg);g.chunkSize=aA(i);const r=_g(si(e,A,mg),si(e,A,Fg)),a=r==yg,o=r!=Sg,c=((A,e)=>A!==$?A:e==yg?0:e==Sg?1/0:W)(si(e,A,"maxAppendedDataSize"),r),{endOfDirectoryInfo:E,endOfDirectoryReachingEndCount:w}=await(async(A,e,t)=>{const{size:g}=A,i=s.min(g,65557),r=g-i,a=await Wt(A,r,i),o=Ii(a),n={count:$g};let B,c,l=0;for(let t=a.length-N;t>=0;t--)if(ci(o,t)==k){const i=r+t,s=Bi(o,t+20);if(i+N+s==g){const s=await gi(A,o,r,t,i,g,n);if(s==ti){if(B||(B={offset:i,buffer:a.slice(t,t+N).buffer}),l++,!e||l>1)break}else s!=ei||c||(c={offset:i,buffer:a.slice(t,t+N).buffer})}}return B||(B=c),B||(B=await(async(A,e,t)=>{const{size:g}=A,i=s.min(g,e==1/0?g:65557+e),r=g-i,a=await Wt(A,r,i),o=Ii(a);let n,B;for(let e=a.length-N;e>=0;e--)if(ci(o,e)==k){const i=r+e,s={offset:i,buffer:a.slice(e,e+N).buffer};n||(n=s);const c=await gi(A,o,r,e,i,g,t);if(c==ti)return s;c!=ei||B||(B=s)}return B||n})(A,t,n)),{endOfDirectoryInfo:B,endOfDirectoryReachingEndCount:l}})(g,o,c);if(!E)throw ci(Ii(await Wt(g,0,4)))==K?new l(zg):new l(bg);o&&w>1&&ri("multiple end of central directory records");const d=Ii(E);let C=ci(d,12),h=ci(d,16);const F=E.offset,Y=Bi(d,20),Q=F+N+Y;g.size-Q>c&&ri("appended data");let D=Bi(d,4);const p=g.lastDiskNumber||0;let m,y,S=Bi(d,6),M=Bi(d,10),b=0;if(h==U||C==U||M==W||S==W){const A=E.offset<H?new I:await Wt(g,E.offset-H,H),e=Ii(A);if(A.length==H&&ci(e,0)==L){h=li(e,8);let A=await Wt(g,h,56,-1),t=Ii(A);const i=E.offset-H-56-(g.lastDiskOffset||0);if((56>A.length||ci(t,0)!=x)&&h!=i&&i>=0){const e=h;h=i,h>e&&(b=h-e),A=await Wt(g,h,56,-1),t=Ii(A)}if(56>A.length||ci(t,0)!=x)throw new l(Gg);y=!0,D==W?D=ci(t,16):a&&D!=ci(t,16)&&ri("mismatched zip64 end of central directory record"),S==W?S=ci(t,20):a&&S!=ci(t,20)&&ri("mismatched zip64 end of central directory record"),M==W?M=li(t,32):a&&M!=li(t,32)&&ri("mismatched zip64 end of central directory record"),C==U?C=li(t,40):a&&C!=li(t,40)&&ri("mismatched zip64 end of central directory record"),h=li(t,48)+b}}const G=C,T=E.offset-(y?76:0);if(h<g.size||(b=g.size-h-C-N,h=g.size-C-N),p!=D)throw new l(zg);if(0>h)throw new l(Mg);let R=0,J=await Wt(g,h,C,S),P=Ii(J);if(C){if(4>J.length)throw new l(Mg);const A=T-C-(g.lastDiskOffset||0);if(h!=A&&S==D){let e=!(ci(P,R)==z);if(e||0>A||A+4>g.size||(e=ci(Ii(await Wt(g,A,4,S)),0)==z),e){const e=h;h=A,h>e&&(b+=h-e),J=await Wt(g,h,C,S),P=Ii(J)}}}const v=T-h-(g.lastDiskOffset||0);if(C==v||0>v||S!=D||(C=v,J=await Wt(g,h,C,S),P=Ii(J)),0>h||h>=g.size)throw new l(Mg);m=h;const j=si(e,A,"filenameEncoding"),_=si(e,A,"commentEncoding"),AA=a?new n:$;let eA;for(let r=0;M>r;r++){const o=new Vg(g,i,e.options);if(R+46>J.length||ci(P,R)!=z)throw new l(Ug);Xg(o,P,R+6);const n=!!o.bitFlag.languageEncodingFlag,c=R+46,I=c+o.filenameLength,E=I+o.extraFieldLength,w=Bi(P,R+4),d=!(w>>8),C=w>>8==3,h=J.subarray(c,I),F=Bi(P,R+32),Y=E+F,Q=J.subarray(E,Y),D=n,p=n,y=ci(P,R+38),S=y&O,G={readOnly:!!(1&S),hidden:!!(2&S),system:!!(4&S),directory:!!(16&S),archive:!!(32&S)},U=ci(P,R+42),T=si(e,A,"decodeText")||Tt,K=D?Lg:j||Ng,k=p?Lg:_||Ng;let x=T(h,K);x===$&&(x=Tt(h,K));let L=T(Q,k);L===$&&(L=Tt(Q,k)),t.assign(o,{index:r,versionMadeBy:w,msDosCompatible:d,compressedSize:0,uncompressedSize:0,commentLength:F,offset:U,diskNumberStart:Bi(P,R+34),internalFileAttributes:Bi(P,R+36),externalFileAttributes:y,msdosAttributesRaw:S,msdosAttributes:G,rawFilename:h,filenameUTF8:D,commentUTF8:p,rawExtraField:J.subarray(I,E),rawComment:Q,filename:x,comment:L}),Zg(o,o,P,R+6),o.offset+=b,m=s.min(o.offset,m),a&&(AA.has(o.filename)&&(eA=!0),AA.add(o.filename));const N=o.externalFileAttributes>>16&W;o.unixMode===$&&16877&N&&(o.unixMode=N);const H=!!(o.unixMode&X),v=!!(o.unixMode&Z),tA=!!(512&o.unixMode),gA=o.unixMode!==$?!!(73&o.unixMode):C&&!!(73&N),iA=o.unixMode!==$&&(61440&o.unixMode)==V,rA=(61440&N)==V;t.assign(o,{setuid:H,setgid:v,sticky:tA,unixExternalUpper:N,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:gA,directory:iA||rA||d&&G.directory||o.filename.endsWith(q)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const sA=new wg(o);sA.getData=(A,t)=>o.getData(A,sA,e.readRanges,t),sA.arrayBuffer=async A=>{const t=new f,[g]=await u.all([new B(t.readable).arrayBuffer(),o.getData(t,sA,e.readRanges,A)]);return g},R=Y;const{onprogress:aA}=A;if(aA)try{await aA(r+1,M,new wg(o))}catch{}yield sA}a&&R!=G&&ri("trailing central directory data"),eA&&ri("duplicate filename"),a&&(b||M&&m>0)&&ri("prepended data");const tA=si(e,A,"extractPrependedData"),gA=si(e,A,"extractAppendedData");return tA&&(e.prependedData=m>0?await Wt(g,0,m):new I),e.comment=Y?await Wt(g,F+N,Y):new I,gA&&(e.appendedData=Q<g.size?await Wt(g,Q,g.size-Q):new I),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Vg{constructor(A,e,g){t.assign(this,{reader:A,config:e,options:g})}async getData(A,e,g,i={}){const r=this,{reader:a,index:o,offset:n,diskNumberStart:B,extraFieldAES:c,extraFieldZip64:E,compressionMethod:w,config:d,bitFlag:C,signature:u,rawLastModDate:h,uncompressedSize:F,compressedSize:Y}=r,{dataDescriptor:Q}=C,D=e.localDirectory={},f=await Wt(a,n,v,B),p=Ii(f);let y=si(r,i,dg),S=si(r,i,Cg);const M=si(r,i,ug);if(y=y&&y.length&&y,S=S&&S.length&&S,c&&99!=c.originalCompressionMethod)throw new l(Rg);if(0!=w&&8!=w&&9!=w&&!M)throw new l(Rg);if(f.length<v||ci(p,0)!=T)throw new l(Wg);Xg(D,p,4);const{extraFieldLength:b,filenameLength:G}=D,U=_g(si(r,i,mg),si(r,i,Fg))==yg;let W=new I;if(U&&(G||b)){const A=await Wt(a,n+v,G+b,B);W=A.subarray(0,G),D.rawExtraField=A.subarray(G)}else D.rawExtraField=b?await Wt(a,n+v+G,b,B):new I;Zg(r,D,p,4,!0),U&&((A,e,t)=>{const{rawFilename:g}=A;(t.length!=g.length||t.some((A,e)=>A!=g[e]))&&ri("mismatched local file header (filename)"),(2057&e.rawBitFlag)!=(2057&A.rawBitFlag)&&ri("mismatched local file header (general purpose bit flag)"),e.compressionMethod!=A.compressionMethod&&ri("mismatched local file header (compression method)"),e.bitFlag.dataDescriptor||!(e.signature||e.compressedSize||e.uncompressedSize)||e.signature==A.signature&&e.compressedSize==A.compressedSize&&e.uncompressedSize==A.uncompressedSize||ri("mismatched local file header (signature or sizes)")})(r,D,W);const{lastAccessDate:K,creationDate:z}=D;K&&(e.lastAccessDate=K),z&&(e.creationDate=z);const k=r.encrypted&&D.encrypted&&!M,x=k&&!c;if(M||(e.zipCrypto=x),k){if(!x&&c.strength===$)throw new l(Kg);if(!y&&!S)throw new l(Tg)}const L=n+v+G+b,N=Y,H=a.readable;t.assign(H,{diskNumberStart:B,offset:L,size:N});const J=si(r,i,hg),P=si(r,i,"checkPasswordOnly");let V=si(r,i,"checkOverlappingEntry");const X=si(r,i,"checkOverlappingEntryOnly");X&&(V=!0);const{onstart:Z,onprogress:q,onend:j}=i,_=9==w;let AA=si(r,i,Qg);_&&(AA=!1);const eA={options:{codecType:pe,password:y,rawPassword:S,zipCrypto:x,encryptionStrength:c&&c.strength,signed:si(r,i,"checkSignature")&&!M,passwordVerification:x&&(Q?h>>>8&O:u>>>24&O),outputSize:M?Y:F,signature:u,compressed:0!=w&&!M,encrypted:k,useWebWorkers:si(r,i,Yg),useCompressionStream:AA,transferStreams:si(r,i,Dg),deflate64:_,checkPasswordOnly:P},config:d,streamOptions:{signal:J,size:N,onstart:Z,onprogress:q,onend:j}};let tA;V&&await(async({reader:A,fileEntry:e,index:t,offset:g,diskNumberStart:i,signature:r,compressedSize:a,uncompressedSize:o,dataOffset:n,dataDescriptor:B,extraFieldZip64:c,readRanges:I})=>{let E=0;if(i&&A.readers)for(let e=0;e<s.min(i,A.readers.length);e++)E+=A.readers[e].size;let w=0;if(B&&(w=c?20:12),w){const t=await Wt(A,n+a,w+4,i);if(t.length==w+4&&ci(Ii(t),0)==R){const A=ci(Ii(t),4);let g,i;c?(g=li(Ii(t),8),i=li(Ii(t),16)):(g=ci(Ii(t),8),i=ci(Ii(t),12)),(e.encrypted&&!e.zipCrypto||A==r)&&g==a&&i==o&&(w+=4)}}const d={start:E+g,end:E+n+a+w,fileEntry:e};for(const[A,e]of I)if(A!=t&&d.start<e.end&&e.start<d.end){const A=new l(kg);throw A.overlappingEntry=e.fileEntry,A}I.set(t,d)})({reader:a,fileEntry:e,index:o,offset:n,diskNumberStart:B,signature:u,compressedSize:Y,uncompressedSize:F,dataOffset:L,dataDescriptor:Q||D.bitFlag.dataDescriptor,extraFieldZip64:E||D.extraFieldZip64,readRanges:g});try{if(!X){P&&(A=new m),A=new Gt(A),await Ut(A,M?Y:F),({writable:tA}=A);const{outputSize:e}=await qe({readable:H,writable:tA},eA);if(A.size+=e,e!=(M?Y:F))throw new l(Ee)}}catch(e){if(e.outputSize!==$&&(A.size+=e.outputSize),!P||e.message!=bA)throw e}finally{si(r,i,fg)||!tA||tA.locked||await tA.getWriter().close()}return P||X?$:A.getData?A.getData():tA}}function Xg(A,e,g){const i=A.rawBitFlag=Bi(e,g+2),r=!(1&~i),s=ci(e,g+6);t.assign(A,{encrypted:r,version:Bi(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&P)==P},rawLastModDate:s,lastModDate:ai(s),filenameLength:Bi(e,g+22),extraFieldLength:Bi(e,g+24)})}function Zg(A,e,g,i,r){const{rawExtraField:s}=e,n=e.extraField=new o,B=Ii(new I(s));let c=0;try{for(;c<s.length;){const A=Bi(B,c),e=Bi(B,c+2);n.set(A,{type:A,data:s.slice(c+4,c+4+e)}),c+=4+e}}catch{}const E=Bi(g,i+4);t.assign(e,{signature:ci(g,i+10),compressedSize:ci(g,i+14),uncompressedSize:ci(g,i+18)});const w=n.get(1);w&&(((A,e)=>{e.zip64=!0;const t=Ii(A.data),g=Hg.filter(([A,t])=>e[A]==t),i=g.reduce((A,[,e])=>A+Jg[e].bytes,0);if(A.data.length<i)throw new l(Og);for(let i=0,r=0;i<g.length;i++){const[s,a]=g[i],o=Jg[a];e[s]=A[s]=o.getValue(t,r),r+=o.bytes}})(w,e),e.extraFieldZip64=w);const d=n.get(28789);d&&(qg(d,Kt,Rt,e,A),e.extraFieldUnicodePath=d);const C=n.get(25461);C&&(qg(C,zt,kt,e,A),e.extraFieldUnicodeComment=C);const u=n.get(39169);u&&u.data.length>=7?(((A,e,g)=>{const i=Ii(A.data),r=ni(i,4);t.assign(A,{vendorVersion:ni(i,0),vendorId:ni(i,2),strength:r,originalCompressionMethod:g,compressionMethod:Bi(i,5)}),e.compressionMethod=A.compressionMethod})(u,e,E),e.extraFieldAES=u):e.compressionMethod=E;const h=n.get(10);h&&(((A,e)=>{const g=Ii(A.data);let i,r=4;try{for(;r<A.data.length&&!i;){const e=Bi(g,r),t=Bi(g,r+2);1==e&&(i=A.data.slice(r+4,r+4+t)),r+=4+t}}catch{}try{if(i&&24==i.length){const g=Ii(i),r=g.getBigUint64(0,!0),s=g.getBigUint64(8,!0),a=g.getBigUint64(16,!0);t.assign(A,{rawLastModDate:r,rawLastAccessDate:s,rawCreationDate:a});const o={lastModDate:oi(r),lastAccessDate:oi(s),creationDate:oi(a)};t.assign(A,o),t.assign(e,o)}}catch{}})(h,e),e.extraFieldNTFS=h);const F=n.get(30805);if(F)vg(F,e,!1),e.extraFieldUnix=F;else{const A=n.get(30837);A&&(vg(A,e,!0),e.extraFieldInfoZip=A)}const Y=n.get(J);Y&&(((A,e,t)=>{if(!A.data.length)return;const g=Ii(A.data),i=ni(g,0),r=[],s=[];t?(1&~i||(r.push(Jt),s.push(Pt)),2&~i||(r.push(Vt),s.push("rawLastAccessDate")),4&~i||(r.push(Xt),s.push(Zt))):5>A.data.length||(r.push(Jt),s.push(Pt));let o=1;r.forEach((t,i)=>{if(A.data.length>=o+4){const r=ci(g,o);e[t]=A[t]=new a(1e3*(0|r));const n=s[i];A[n]=r}o+=4})})(Y,e,r),e.extraFieldExtendedTimestamp=Y);const Q=n.get(6534);Q&&(e.extraFieldUSDZ=Q)}function qg(A,e,g,i,r){if(5>A.data.length)return void(A.valid=!1);const s=Ii(A.data),a=new FA;a.append(r[g]);const o=Ii(new I(4));o.setUint32(0,a.get(),!0);const n=ci(s,1);t.assign(A,{version:ni(s,0),[e]:Tt(A.data.subarray(5)),valid:!r.bitFlag.languageEncodingFlag&&n==ci(o,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function vg(A,e,g){try{const i=Ii(new I(A.data));let r,s;if(g){let e=0;const g=ni(i,e++),a=ni(i,e++);r=jg(A.data.subarray(e,e+a)),e+=a;const o=ni(i,e++);s=jg(A.data.subarray(e,e+o)),t.assign(A,{version:g,uid:r,gid:s})}else 4>A.data.length||(r=Bi(i,0),s=Bi(i,2),t.assign(A,{uid:r,gid:s}));r!==$&&(e.uid=r),s!==$&&(e.gid=s)}catch{}}function jg(A){const e=new I(4);return e.set(A,0),new d(e.buffer,e.byteOffset,4).getUint32(0,!0)}function _g(A,e){return A===$?e?yg:"balanced":A}const $g=64,Ai=0,ei=1,ti=2;async function gi(A,e,t,g,i,r,s){const a=Bi(e,g+10),o=ci(e,g+12),n=ci(e,g+16);if(a==W||o==U||n==U)return await ii(A,e,t,i-H,r,s)==L?ti:Ai;if(!a&&!o)return ei;for(const g of[i-o,n])if(await ii(A,e,t,g,r,s)==z)return ti;return Ai}async function ii(A,e,t,g,i,r){return 0>g||g+4>i?$:t>g?r.count>0?(r.count--,ci(Ii(await Wt(A,g,4)),0)):$:ci(e,g-t)}function ri(A){const e=new l(xg);throw e.reason=A,e}function si(A,e,t){return e[t]===$?A.options[t]:e[t]}function ai(A){const e=(4294901760&A)>>16,t=A&W;try{return new a(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&t)>>11,(2016&t)>>5,2*(31&t),0)}catch{}}function oi(A){return new a(i(A/r(1e4)-r(116444736e5)))}function ni(A,e){return A.getUint8(e)}function Bi(A,e){return A.getUint16(e,!0)}function ci(A,e){return A.getUint32(e,!0)}function li(A,e){return i(A.getBigUint64(e,!0))}function Ii(A){return new d(A.buffer,A.byteOffset,A.byteLength)}const Ei="File already exists",wi="Zip file comment exceeds 64KB",di="File entry comment exceeds 64KB",Ci="File entry name exceeds 64KB",ui="Version exceeds 65535",hi="The strength must equal 1, 2, or 3",Fi="Extra field type exceeds 65535",Yi="Extra field data exceeds 64KB",Qi=-2147483648,Di=2147483647,fi="Zip64 is not supported (set the 'zip64' option to 'true')",pi="Undefined uncompressed size",mi="Undefined reader",yi="Zip file not empty",Si=new I([7,0,2,0,65,69,3,0,0]),Mi="infozip",bi="unix";let Gi=0;const Ui=[];class Wi{constructor(A,e={}){const g=(A=new Gt(A)).availableSize!==$&&A.availableSize>0&&A.availableSize!==AA&&A.maxSize!==$&&A.maxSize>0&&A.maxSize!==AA;t.assign(this,{writer:A,addSplitZipSignature:g,options:e,config:sA(),files:new o,filenames:new n,offset:e[pg]===$?A.size||A.writable.size||0:e[pg],initialOffset:e[pg]===$?0:e[pg]-(A.size||A.writable.size||0),pendingAddFileCalls:new n,bufferedWrites:0,lastFileEntry:$})}async prependZip(A){if(this.filenames.size)throw new l(yi);A=new bt(A),await Ut(A);const e=new Pg(A.readable),g=await e.getEntries();await e.close(),await Ut(this.writer),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new n(g.map(A=>A.filename)),this.files=new o(g.map(A=>{const{version:e,rawLastModDate:g,lastAccessDate:i,creationDate:r,rawFilename:s,bitFlag:a,encrypted:o,uncompressedSize:n,compressedSize:B,diskOffset:c,diskNumber:l,zip64:E}=A;let{compressionMethod:w,rawExtraFieldZip64:d,rawExtraFieldAES:C,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:Y}=A;const{level:Q,languageEncodingFlag:D,dataDescriptor:f}=a;d=d||new I,C=C||new I,u=u||new I,h=h||new I,F=F||new I,Y=Y||new I,A.extraFieldAES&&(w=99);const p=ji(d,C,u,h,F,Y),m=E&&n>=U,y=E&&B>=U,S=-7&$i(Q,D,f,o,w)|Q<<1,{headerArray:M,headerView:b}=_i({version:e,bitFlag:S,compressionMethod:w,uncompressedSize:n,compressedSize:B,rawLastModDate:g,rawFilename:s,zip64CompressedSize:y,zip64UncompressedSize:m,extraFieldLength:p}),{signature:G}=A;return G!==$&&Xi(b,10,G),t.assign(A,{zip64UncompressedSize:m,zip64CompressedSize:y,zip64Offset:E&&this.offset-c>=U,zip64DiskNumberStart:E&&l>=W,rawExtraFieldZip64:d,rawExtraFieldAES:C,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:h,rawExtraFieldUnix:F,rawExtraField:Y,extendedTimestamp:u.length>0||h.length>0,extraFieldExtendedTimestampFlag:1+(i?2:0)+(r?4:0),headerArray:M,headerView:b}),[A.filename,A]}))}async add(A="",e,g={}){const i=this;g=t.assign({},g);const{pendingAddFileCalls:s,config:o}=i;let n,B;Gi<o.maxWorkers?Gi++:await new u(A=>Ui.push(A));try{if(A=A.trim(),Ji(i,g,rg)&&!A.endsWith(q)&&(A+=q),i.filenames.has(A))throw new l(Ei);return i.filenames.add(A),B=!0,n=(async(A,e,g,i)=>{const s=((A,e,t)=>{e=e.trim();let g=Ji(A,t,$t),i=Ji(A,t,gg,g?20:768);const r=Ji(A,t,sg),s=Ji(A,t,"uid"),a=Ji(A,t,"gid");let o=Ji(A,t,Bg),n=Ji(A,t,"unixExtraFieldType"),B=Ji(A,t,cg),c=Ji(A,t,lg),I=Ji(A,t,Ig);if(s!==$&&(0>s||s>U))throw new l("Invalid uid (must be integer 0..2^32-1)");if(a!==$&&(0>a||a>U))throw new l("Invalid gid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>W))throw new l("Invalid UNIX mode (must be integer 0..65535)");if(n!==$&&n!==Mi&&n!==bi)throw new l("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(n===bi&&(s!==$&&s>W||a!==$&&a>W))throw new l("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");n!==$||s===$&&a===$||(n=Mi);let E=Ji(A,t,jt),w=Ji(A,t,_t);const d=E!==$||w!==$;if(s!==$||a!==$||o!==$||n?(g=!1,i=i&W|768):d&&(g=!0,i&=O),E!==$&&(0>E||E>O))throw new l("Invalid msdosAttributesRaw (must be integer 0..255)");if(w&&"object"!=typeof w)throw new l("Invalid msdosAttributes (must be an object with boolean flags)");if(i>W)throw new l(ui);let C=Ji(A,t,vt,0);!t[rg]&&e.endsWith(q)&&(t[rg]=!0);const u=Ji(A,t,rg);let h;return u?(e.endsWith(q)||(e+=q),0===C&&(C=16,g||(C|=16877<<16))):g||0!==C||(C=r?493<<16:27525120),g||(h=C>>16&W,o=o===$?h:o&W,B?o|=X:B=!!(o&X),c?o|=Z:c=!!(o&Z),I?o|=512:I=!!(512&o),u&&(o|=V),C=(o&W)<<16|C&O),({msdosAttributesRaw:E,msdosAttributes:w}=((A,e)=>{if(A!==$)A&=O;else if(e!==$){const{readOnly:t,hidden:g,system:i,directory:r,archive:s}=e;let a=0;t&&(a|=1),g&&(a|=2),i&&(a|=4),r&&(a|=16),s&&(a|=32),A=a&O}return e===$&&(e={readOnly:!!(1&A),hidden:!!(2&A),system:!!(4&A),directory:!!(16&A),archive:!!(32&A)}),{msdosAttributesRaw:A,msdosAttributes:e}})(E,w)),d&&(C=C&U|E&O),{name:e,resolvedOptions:{versionMadeBy:i,msDosCompatible:g,externalFileAttributes:C,unixExternalUpper:h,uid:s,gid:a,unixMode:o,unixExtraFieldType:n,setuid:B,setgid:c,sticky:I,msdosAttributesRaw:E,msdosAttributes:w}}})(A,e,i);({name:e}=s);const o=((A,e,t)=>{const g=Ji(A,t,"encodeText",QA);let i=g(e);if(i===$&&(i=QA(e)),ji(i)>W)throw new l(Ci);const r=t[zt]||"";let s=g(r);if(s===$&&(s=QA(r)),ji(s)>W)throw new l(di);const o=Ji(A,t,tg,20);if(o>W)throw new l(ui);const n=Ji(A,t,Jt,new a),B=Ji(A,t,Vt),c=Ji(A,t,Xt),E=Ji(A,t,qt,0),w=Ji(A,t,ug);let d,C;w||(d=Ji(A,t,dg),C=Ji(A,t,Cg));const u=Ji(A,t,"encryptionStrength",3),h=Ji(A,t,ig),F=Ji(A,t,"extendedTimestamp",!0),Y=Ji(A,t,"keepOrder",!0),Q=Ji(A,t,Yg),D=Ji(A,t,Dg,!0),f=Ji(A,t,"bufferedWrite"),p=Ji(A,t,"createTempStream"),m=Ji(A,t,"dataDescriptorSignature",!0),y=Ji(A,t,hg),S=Ji(A,t,"useUnicodeFileNames",!0),M=Ji(A,t,ag);if(!w&&M!==$&&0!==M&&8!==M)throw new l("Compression method not supported");let b=Ji(A,t,"level"),G=Ji(A,t,Qg),U=Ji(A,t,"dataDescriptor");f&&U===$&&(U=!1),(U===$||h)&&(U=!0),b!==$&&6!=b&&(G=!1),G||A.config.CompressionStream!==$||A.config.CompressionStreamZlib!==$||(b=0);const O=Ji(A,t,Ag);if(!h&&(d!==$||C!==$)&&(1>u||u>3))throw new l(hi);let T=new I;const K=t[ng];if(K){let A=0,e=0;K.forEach(e=>A+=4+ji(e)),T=new I(A);const t=vi(T);K.forEach((A,g)=>{if(g>W)throw new l(Fi);if(ji(A)>W)throw new l(Yi);Vi(t,e,g),Vi(t,e+2,ji(A)),qi(T,A,e+4),e+=4+ji(A)})}return{comment:r,resolvedOptions:{rawFilename:i,rawComment:s,version:o,lastModDate:n,lastAccessDate:B,creationDate:c,internalFileAttributes:E,passThrough:w,password:d,rawPassword:C,encryptionStrength:u,zipCrypto:h,extendedTimestamp:F,keepOrder:Y,useWebWorkers:Q,transferStreams:D,bufferedWrite:f,createTempStream:p,dataDescriptorSignature:m,signal:y,useUnicodeFileNames:S,compressionMethod:M,level:b,useCompressionStream:G,dataDescriptor:U,zip64:O,rawExtraField:T}}})(A,e,i),{comment:n}=o,B=i[ng];let c;A.files.set(e,$);try{const a=await(async(A,e,{resolvedOptions:t},g)=>{const{passThrough:i,zipCrypto:r,password:s,rawPassword:a,encryptionStrength:o}=t;let{dataDescriptor:n,zip64:B,level:c,compressionMethod:I}=t,E=0,w=0;if(i){if(!e)throw new l(mi);if(w=g[xt],w===$)throw new l(pi)}const d=!0===B,C=Ji(A,g,eg),u=!!e&&(!!(s&&ji(s)||a&&ji(a))||i&&C);e||(c=0,I=0);const h=u?r?12:16+4*o:0;e&&(e=new bt(e),await Ut(e),i?(g.uncompressedSize=w,E=Pi(w)+h):e.size===$?(n=!0,(B||B===$)&&(B=!0,w=E=4294967296)):(g.uncompressedSize=w=e.size,E=Pi(w)+h));const F=d||w>=U,Y=d||E>=U;if(F||Y){if(!1===B)throw new l(fi);B=!0}return B=B||!1,{reader:e,resolvedOptions:{dataDescriptor:n,zip64:B,zip64UncompressedSize:F,zip64CompressedSize:Y,uncompressedSize:w,level:c,compressionMethod:I,encrypted:u}}})(A,g,o,i);({reader:g}=a);const{diskOffset:n,diskNumber:B}=A.writer,E=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:o,dataDescriptor:n,directory:B,rawExtraField:c,encryptionStrength:E,extendedTimestamp:w,passThrough:d,encrypted:C,zip64UncompressedSize:u,zip64CompressedSize:h,uncompressedSize:F}=A;let{version:Y,compressionMethod:Q}=A;const D=!B&&(Q===$?r===$||r>0:0!==Q);let f;const p=d||!D,m=s&&(A.bufferedWrite||!n||!u&&!h||p),y=m||s&&n&&(u||h);if(s&&(u||h)){const A=20,e=Ri(A);if(e.uint16(1),e.uint16(A-4),f=e.array,m&&(e.uint64(F),p)){const A=C?a?12:16+4*E:0;e.uint64(d?0:F+A)}}else f=new I;let S,M,b,G,U;if(C&&!a){const A=Ri(ji(Si)+2);A.uint16(39169),A.bytes(Si),S=A.array,S[8]=E}else S=new I;if(w){const A=Li(t);if(Ni(A)){const e=9+(g?4:0)+(i?4:0),t=Ri(e);G=1+(g?2:0)+(i?4:0),t.uint16(J),t.uint16(e-4),t.uint8(G),t.uint32(A),g&&t.uint32(Hi(Li(g))),i&&t.uint32(Hi(Li(i))),b=t.array}else b=new I;try{const A=xi(t),e=Ri(36);e.uint16(10),e.uint16(32),e.skip(4),e.uint16(1),e.uint16(24),e.uint64(A),e.uint64(xi(g)||A),e.uint64(xi(i)||A),M=e.array}catch{M=new I}}else M=b=new I;try{const{uid:e,gid:t,unixExtraFieldType:g}=A;if(g!=Mi||e===$&&t===$)if(g!=bi||e===$&&t===$)U=new I;else{const A=Ri(8);A.uint16(30805),A.uint16(4),A.uint16((e===$?0:e)&W),A.uint16((t===$?0:t)&W),U=A.array}else{const A=Ki(e),g=Ki(t),i=3+A.length+g.length,r=Ri(4+i);r.uint16(30837),r.uint16(i),r.uint8(1),r.uint8(A.length),r.bytes(A),r.uint8(g.length),r.bytes(g),U=r.array}}catch{U=new I}Q===$&&(Q=D?8:0),s&&(Y=Y>45?Y:45),C&&!a&&(Y=Y>51?Y:51,S[9]=Q,Q=99);const O=y?ji(f):0,K=O+ji(S,b,M,U,c);if(K>W)throw new l(Yi);const{headerArray:R,headerView:z,rawLastModDate:k}=_i({version:Y,bitFlag:$i(r,o,n,C,Q),compressionMethod:Q,uncompressedSize:F,lastModDate:_>t?_:t>j?j:t,rawFilename:e,zip64CompressedSize:h,zip64UncompressedSize:u,extraFieldLength:K}),x=Ri(v+ji(e)+K),L=x.array,N=vi(L);return x.uint32(T),x.bytes(R),x.bytes(e),y&&x.bytes(f),x.bytes(S),x.bytes(b),x.bytes(M),x.bytes(U),x.bytes(c),n&&(h||Xi(N,18,0),u||Xi(N,22,0)),{localHeaderArray:L,localHeaderView:N,headerArray:R,headerView:z,lastModDate:t,rawLastModDate:k,encrypted:C,compressed:D,version:Y,compressionMethod:Q,extraFieldExtendedTimestampFlag:G,rawExtraFieldZip64:new I,localExtraFieldZip64Length:O,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:M,rawExtraFieldUnix:U,rawExtraFieldAES:S,extraFieldLength:K}})(i=t.assign({},i,s.resolvedOptions,o.resolvedOptions,a.resolvedOptions,{internalFileAttribute:o.resolvedOptions.internalFileAttributes,externalFileAttribute:s.resolvedOptions.externalFileAttributes,signature:i[og],offset:A.offset-n,diskNumberStart:B})),w=(({zip64:A,dataDescriptor:e,dataDescriptorSignature:t})=>{let g,i=new I,r=0,s=A?20:12;return t&&(s+=4),e&&(i=new I(s),g=vi(i),t&&(r=4,Xi(g,0,R))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:r}})(i),d=ji(E.localHeaderArray,w.dataDescriptorArray);c=await(async(A,e,g,i,s)=>{const{files:a,writer:o}=A,{keepOrder:n,dataDescriptor:B,signal:c}=s,{headerInfo:E}=i,w=A.options.usdz,d=A.lastFileEntry;let C,h,F,Y,Q,D,p,y={},S=0;a.set(e,y),A.lastFileEntry=y;try{let h;n&&(h=d&&d.lock,y.lock=new u(A=>F=A)),s.bufferedWrite||!n||A.writerLocked||A.bufferedWrites||!B?(C=!0,A.bufferedWrites++,p=s.createTempStream?await s.createTempStream():new f($,$,{highWaterMark:AA}),p.size=0,await Ut(o)):(p=o,await M()),await Ut(p);const{diskOffset:G}=o;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new I(4);Xi(vi(e),0,K),await ki(o,e),A.offset+=4}w&&!C&&Ti(i,A.offset-G);const{localHeaderArray:W}=E;C||(await h,await b());const T=o.diskNumber,R=zi(A,o);if(y.diskNumberStart=T,C||(Q=!0,D=o.size,await ki(p,W)),y=await(async(A,e,{diskNumberStart:g,lock:i},s,a,o)=>{const{headerInfo:n,dataDescriptorInfo:B,metadataSize:c}=s,{headerArray:I,headerView:E,lastModDate:w,rawLastModDate:d,encrypted:C,compressed:u,version:h,compressionMethod:F,rawExtraFieldZip64:Y,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,extraFieldExtendedTimestampFlag:f,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:y}=n,{dataDescriptorArray:S}=B,{rawFilename:M,lastAccessDate:b,creationDate:G,password:W,rawPassword:T,level:K,zip64:R,zip64UncompressedSize:z,zip64CompressedSize:k,zipCrypto:x,dataDescriptor:L,directory:N,executable:H,versionMadeBy:J,rawComment:P,rawExtraField:V,useWebWorkers:X,transferStreams:Z,onstart:q,onprogress:v,onend:j,signal:_,encryptionStrength:AA,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,uid:rA,gid:sA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:EA,useCompressionStream:wA,passThrough:dA}=o,CA={lock:i,versionMadeBy:J,zip64:R,directory:!!N,executable:!!H,filenameUTF8:!0,rawFilename:M,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:Y,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:y,rawExtraField:V,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,diskNumberStart:g,uid:rA,gid:sA,unixMode:oA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:lA,msdosAttributesRaw:IA,msdosAttributes:EA};let{signature:uA,uncompressedSize:hA}=o,FA=0;dA||(hA=0);const{writable:YA}=e;if(A){A.chunkSize=aA(a);const t=A.readable,g=A.size,i={options:{codecType:fe,level:K,rawPassword:T,password:W,encryptionStrength:AA,zipCrypto:C&&x,passwordVerification:C&&x&&d>>8&O,signed:!dA,compressed:u&&!dA,encrypted:C&&!dA,useWebWorkers:X,useCompressionStream:wA,transferStreams:Z},config:a,streamOptions:{signal:_,size:g,onstart:q,onprogress:v,onend:j}};try{const A=await qe({readable:t,writable:YA},i);if(FA=A.outputSize,e.size+=FA,dA||(hA=A.inputSize,uA=A.signature),!k&&FA>=U||!z&&hA>=U)throw new l(fi)}catch(A){throw A.outputSize!==$&&(e.size+=A.outputSize),A}}return(({signature:A,compressedSize:e,uncompressedSize:t,headerInfo:g,dataDescriptorInfo:i},{zip64:s,zipCrypto:a,dataDescriptor:o})=>{const{headerView:n,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:l}=i;B&&!a||A===$||(Xi(n,10,A),o&&Xi(c,l,A)),s?o&&(Zi(c,l+4,r(e)),Zi(c,l+12,r(t))):(Xi(n,14,e),Xi(n,18,t),o&&(Xi(c,l+4,e),Xi(c,l+8,t)))})({signature:uA,compressedSize:FA,uncompressedSize:hA,headerInfo:n,dataDescriptorInfo:B},o),L&&await ki(e,S),t.assign(CA,{uncompressedSize:hA,compressedSize:FA,lastModDate:w,rawLastModDate:d,creationDate:G,lastAccessDate:b,encrypted:C,zipCrypto:x,size:c+FA,compressionMethod:F,version:h,headerArray:I,headerView:E,signature:uA,extraFieldExtendedTimestampFlag:f,zip64UncompressedSize:z,zip64CompressedSize:k}),CA})(g,p,y,i,A.config,s),C||(Q=!1),a.set(e,y),y.filename=e,C){if(await u.all([p.writable.getWriter().close(),h]),await M(),Y=!0,D=o.size,await b(),y.diskNumberStart=o.diskNumber,y.offset=zi(A,o),w){const e=i.metadataSize;Ti(i,A.offset-o.diskOffset),y.size+=i.metadataSize-e}(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:s,uncompressedSize:a,zip64UncompressedSize:o,zip64CompressedSize:n},B,{dataDescriptor:c})=>{if(c||(e||Xi(B,14,i),n||Xi(B,18,s),o||Xi(B,22,a)),t&&g){const e=v+ji(A)+4;Zi(B,e,r(a)),Zi(B,e+8,r(s))}})(y,E.localHeaderView,s),await ki(o,E.localHeaderArray),await(async(A,e,t)=>{const g=e.writable.getWriter();try{await A.pipeTo(new m({async write(A){var e;await g.ready,await g.write(A),e=ji(A),S+=e}}),{preventClose:!0,preventAbort:!0,signal:t})}finally{g.releaseLock()}})(p.readable,o,c),o.size+=p.size,Y=!1}else y.diskNumberStart=T,y.offset=R;return A.offset+=y.size,y}catch(t){if(Y||Q){if(A.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}A.offset+=o.size-D,C&&(A.offset+=S)}throw a.delete(e),t}finally{if(C&&A.bufferedWrites--,F&&F(),h&&h(),C&&p&&p.dispose)try{await p.dispose()}catch{}}async function M(){A.writerLocked=!0;const{lockWriter:e}=A;A.lockWriter=new u(e=>h=()=>{A.writerLocked=!1,e()}),await e}async function b(){ji(E.localHeaderArray)>o.availableSize&&(o.availableSize=0,await ki(o,new I))}})(A,e,g,{headerInfo:E,dataDescriptorInfo:w,metadataSize:d},i)}catch(t){throw A.files.delete(e),t}return t.assign(c,{name:e,comment:n,extraField:B}),new wg(c)})(i,A,e,g),s.add(n),await n}catch(e){throw B&&i.filenames.delete(A),e}finally{s.delete(n);const A=Ui.shift();A?A():Gi--}}remove(A){const{filenames:e,files:t}=this;if("string"==typeof A&&(A=t.get(A)),A&&A.filename!==$){const{filename:g}=A;if(e.has(g)&&t.has(g))return e.delete(g),t.delete(g),!0}return!1}async close(A=new I,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:s}=i;if(ji(A)>W)throw new l(wi);for(;g.size;)await u.allSettled(e.from(g));return await(async(A,t,g)=>{const i=(A=>{let e=0;for(const[,t]of A){const{rawFilename:A,rawExtraFieldAES:g,rawComment:i,rawExtraFieldNTFS:r,rawExtraFieldUnix:s,rawExtraField:a,extendedTimestamp:o,extraFieldExtendedTimestampFlag:n,lastModDate:B,zip64UncompressedSize:c,zip64CompressedSize:E,uncompressedSize:w,compressedSize:d}=t,C=t.offset>=U,u=t.diskNumberStart>=W;let h,F;if(C||u||c||E){const A=4+(c?8:0)+(E?8:0)+(C?8:0)+(u?4:0),e=Ri(A);e.uint16(1),e.uint16(A-4),c&&e.uint64(w),E&&e.uint64(d),C&&e.uint64(t.offset),u&&e.uint32(t.diskNumberStart),h=e.array}else h=new I;t.rawExtraFieldZip64=h,t.zip64Offset=C,t.zip64DiskNumberStart=u;const Y=Li(B);if(o&&Ni(Y)){const A=Ri(9);A.uint16(J),A.uint16(5),A.uint8(n),A.uint32(Y),F=A.array}else F=new I;t.rawExtraFieldExtendedTimestamp=F;const Q=ji(h,g,r,s,F,a);if(Q>W)throw new l(Yi);e+=46+ji(A,i)+Q}return e})(A.files),{cdStartDiskNumber:s,cdStartDiskOffset:a}=await(async(A,t,g)=>{const{files:i,writer:r}=A,s=new I(t);await Ut(r);let a=0,o=0,n=r.diskNumber,B=r.diskOffset;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:c,rawExtraFieldZip64:l,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:w,rawExtraFieldNTFS:d,rawExtraFieldUnix:C,rawExtraField:u,rawComment:h,versionMadeBy:F,headerArray:Y,headerView:Q,zip64UncompressedSize:D,zip64CompressedSize:f,zip64DiskNumberStart:p,zip64Offset:m,internalFileAttributes:y,externalFileAttributes:S,diskNumberStart:M,uncompressedSize:b,compressedSize:G}=t,O=ji(l,E,w,d,C,u),T=46+ji(c,h)+O;a+T-o>r.availableSize&&(await ki(r,s.slice(o,a)),o=a,r.availableSize=0,await ki(r,new I)),0==A&&(n=r.diskNumber,B=r.diskOffset),D||Xi(Q,18,b),f||Xi(Q,14,G),(m||p)&&45>t.version&&Vi(Q,0,45);const K=Ri(T);if(K.uint32(z),K.uint16(F),K.bytes(Y.subarray(0,24)),K.uint16(O),K.uint16(ji(h)),K.uint16(p?W:M),K.uint16(y),K.uint32(S),K.uint32(m?U:e),K.bytes(c),K.bytes(l),K.bytes(E),K.bytes(w),K.bytes(d),K.bytes(C),K.bytes(u),K.bytes(h),qi(s,K.array,a),a+=T,g.onprogress)try{await g.onprogress(A+1,i.size,new wg(t))}catch{}}return await ki(r,o?s.slice(o):s),{cdStartDiskNumber:n,cdStartDiskOffset:B}})(A,i,g);await(async(A,e,t,g)=>{const{writer:i}=A,{cdStartDiskNumber:s,cdStartDiskOffset:a}=g;let{directoryDataLength:o}=g,n=A.files.size,B=s,c=A.offset-a-(s?A.initialOffset:0),E=i.diskNumber;i.availableSize<N&&E++;let w=Ji(A,t,Ag);if(!(U>c&&U>o&&W>n&&W>E)){if(!1===w)throw new l(fi);w=!0}const d=ji(e);if(d>W)throw new l(wi);const C=Ri(w?98:N);ji(C.array)+d>i.availableSize&&(i.availableSize=0,await ki(i,new I)),E=i.diskNumber,w&&(C.uint32(x),C.uint64(44),C.uint16(45),C.uint16(45),C.uint32(E),C.uint32(B),C.uint64(n),C.uint64(n),C.uint64(o),C.uint64(c),C.uint32(L),C.uint32(E),C.uint64(r(A.offset)+r(o)-r(i.diskOffset)-r(i.diskNumber?A.initialOffset:0)),C.uint32(E+1),Ji(A,t,"supportZip64SplitFile",!0)&&(E=W,B=W),n=W,c=U,o=U),C.uint32(k),C.uint16(E),C.uint16(B),C.uint16(n),C.uint16(n),C.uint32(o),C.uint32(c),C.uint16(d),await ki(i,C.array),d&&await ki(i,e)})(A,t,g,{cdStartDiskNumber:s,cdStartDiskOffset:a,directoryDataLength:i})})(this,A,t),Ji(this,t,fg)||await s.getWriter().close(),i.getData?i.getData():s}}function Oi(A,e,t){A.pendingAddFileCalls.add(e),e.catch(A=>{try{t(A)}catch{}})}function Ti(A,e){const{headerInfo:t}=A;let g,{localHeaderArray:i,extraFieldLength:r}=t,s=64-(e+ji(i))%64;4>s&&(s+=64);const a=new I(s),o=vi(a);Vi(o,0,6534),Vi(o,2,s-4);const n=i;t.localHeaderArray=i=new I(ji(n)+s),qi(i,n),qi(i,a,ji(n)),g=vi(i),Vi(g,28,r+s),t.localHeaderView=g,A.metadataSize+=s}function Ki(A){if(A===$)return new I;{const e=new I(4);vi(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function Ri(A){const e=new I(A),t=vi(e);let g=0;return{array:e,uint8:A=>{((A,e,t)=>{A.setUint8(e,t)})(t,g,A),g+=1},uint16:A=>{Vi(t,g,A),g+=2},uint32:A=>{Xi(t,g,A),g+=4},uint64:A=>{Zi(t,g,r(A)),g+=8},bytes:A=>{qi(e,A,g),g+=ji(A)},skip:A=>g+=A}}function zi(A,e){return A.offset-e.diskOffset-(e.diskNumber?A.initialOffset:0)}async function ki(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=ji(e),await g.write(e)}finally{g.releaseLock()}}function xi(A){if(A)return(r(A.getTime())+r(116444736e5))*r(1e4)}function Li(A){return s.floor(A.getTime()/1e3)}function Ni(A){return A>=Qi&&Di>=A}function Hi(A){return s.min(Di,s.max(Qi,A))}function Ji(A,e,t,g){const i=e[t]===$?A.options[t]:e[t];return i===$?g:i}function Pi(A){return A+5*(s.floor(A/16383)+1)}function Vi(A,e,t){A.setUint16(e,t,!0)}function Xi(A,e,t){A.setUint32(e,t,!0)}function Zi(A,e,t){A.setBigUint64(e,t,!0)}function qi(A,e,t){A.set(e,t)}function vi(A){return new d(A.buffer,A.byteOffset,A.byteLength)}function ji(...A){let e=0;return A.forEach(A=>A&&(e+=A.length)),e}function _i({version:A,bitFlag:e,compressionMethod:t,uncompressedSize:g,compressedSize:i,lastModDate:r,rawLastModDate:s,rawFilename:a,zip64CompressedSize:o,zip64UncompressedSize:n,extraFieldLength:B}){const c=Ri(26),l=c.array,I=vi(l);if(c.uint16(A),c.uint16(e),c.uint16(t),s===$){const A=new w(1),e=vi(A);Vi(e,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),Vi(e,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate()),s=A[0]}return c.uint32(s),c.skip(4),o||i!==$?c.uint32(o?U:i):c.skip(4),n||g!==$?c.uint32(n?U:g):c.skip(4),c.uint16(ji(a)),c.uint16(B),{headerArray:l,headerView:I,rawLastModDate:s}}function $i(A,e,t,g,i){let r=0;return e&&(r|=P),t&&(r|=8),8!=i&&9!=i||(0>A||A>3||(r|=6),A>3&&5>=A&&(r|=4),9==A&&(r|=2)),g&&(r|=1),r}const Ar=1048576,er=".zip.js-temp";try{oA({baseURI:void 0===Y&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===Y?location.href:G&&"SCRIPT"===G.tagName.toUpperCase()&&G.src||new c("zip-legacy.min.js",Y.baseURI).href})}catch{}oA({workerURI:A=>{const e="text/javascript",t=(A=>{A=(A=>{const e=(A=(A+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let g=0;e>g;g+=4){const e=BA.indexOf(A[g])<<18|BA.indexOf(A[g+1])<<12|(63&BA.indexOf(A[g+2]))<<6|63&BA.indexOf(A[g+3]);t.push(e>>16&255),"="!==A[g+2]&&t.push(e>>8&255),"="!==A[g+3]&&t.push(255&e)}return new I(t)})(A);let e=new I(1024),t=0;for(let i=0;i<A.length;){const r=A[i++];if(128&r){const s=3+(127&r),a=A[i++]<<8|A[i++],o=t-a;g(t+s);for(let A=0;s>A;A++)e[t++]=e[o+A]}else{const s=r;g(t+s);for(let g=0;s>g&&i<A.length;g++)e[t++]=A[i++]}}return(A=>{let e="";const t=A.length;let g=0;for(;t>g+2;g+=3){const t=A[g]<<16|A[g+1]<<8|A[g+2];e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+BA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=BA[t>>18&63]+BA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+"="}return e})(new I(e.buffer.slice(0,t)));function g(A){if(e.length<A){let g=2*e.length;for(;A>g;)g*=2;const i=new I(g);i.set(e.subarray(0,t)),e=i}}})("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");if(A){const A=atob(t),g=new C([A],{type:e});return c.createObjectURL(g)}return"data:"+e+";base64,"+t}}),A.BlobReader=lt,A.BlobWriter=It,A.Data64URIReader=class extends Bt{constructor(A){super();let e=A.length;for(;"="==A.charAt(e-1);)e--;const g=A.indexOf(",")+1;t.assign(this,{dataURI:A,dataStart:g,size:s.floor(.75*(e-g))})}readUint8Array(A,e){const{dataStart:t,dataURI:g}=this,i=new I(e),r=4*s.floor(A/3),a=atob(g.substring(r+t,4*s.ceil((A+e)/3)+t)),o=A-3*s.floor(r/4);let n=0;for(let A=o;o+e>A&&A<a.length;A++)i[A-o]=a.charCodeAt(A),n++;return n<i.length?i.subarray(0,n):i}},A.Data64URIWriter=class extends ct{constructor(A){super(),t.assign(this,{data:"data:"+(A||"")+";base64,",pending:[]})}writeUint8Array(A){const e=this;let t,i=e.pending;const r=e.pending.length;for(e.pending="",t=0;t<3*s.floor((r+A.length)/3)-r;t++)i+=g.fromCharCode(A[t]);for(;t<A.length;t++)e.pending+=g.fromCharCode(A[t]);i.length>2?e.data+=D(i):e.pending=i+e.pending}getData(){return this.data+D(this.pending)}},A.ERR_AMBIGUOUS_ARCHIVE=xg,A.ERR_BAD_FORMAT=Mg,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Ug,A.ERR_DUPLICATED_NAME=Ei,A.ERR_ENCRYPTED=Tg,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Gg,A.ERR_EOCDR_NOT_FOUND=bg,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Og,A.ERR_HTTP_RANGE=tt,A.ERR_INVALID_COMMENT=wi,A.ERR_INVALID_COMPRESSED_DATA=we,A.ERR_INVALID_ENCRYPTION_STRENGTH=hi,A.ERR_INVALID_ENTRY_COMMENT=di,A.ERR_INVALID_ENTRY_NAME=Ci,A.ERR_INVALID_EXTRAFIELD_DATA=Yi,A.ERR_INVALID_EXTRAFIELD_TYPE=Fi,A.ERR_INVALID_PASSWORD=SA,A.ERR_INVALID_SIGNATURE=MA,A.ERR_INVALID_UNCOMPRESSED_SIZE=Ee,A.ERR_INVALID_VERSION=ui,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Wg,A.ERR_OVERLAPPING_ENTRY=kg,A.ERR_SPLIT_ZIP_FILE=zg,A.ERR_UNDEFINED_READER=mi,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=pi,A.ERR_UNSUPPORTED_COMPRESSION=Rg,A.ERR_UNSUPPORTED_ENCRYPTION=Kg,A.ERR_UNSUPPORTED_FORMAT=fi,A.ERR_ZIP_NOT_EMPTY=yi,A.HttpRangeReader=class extends yt{constructor(A,e={}){super(A,t.assign({},e,{useRangeHeader:!0}))}},A.HttpReader=yt,A.Reader=Bt,A.SplitDataReader=St,A.SplitDataWriter=Mt,A.TextReader=class extends lt{constructor(A){super(new C([A],{type:"text/plain"}))}},A.TextWriter=class extends It{constructor(A){super(A),t.assign(this,{encoding:A,utf8:!A||"utf-8"==A.toLowerCase()})}async getData(){const{encoding:A,utf8:e}=this,g=await super.getData();if(g.text&&e)return g.text();{const e=new FileReader;return new u((i,r)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>r(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends Bt{constructor(A){super(),A=new I(A.buffer,A.byteOffset,A.byteLength),t.assign(this,{array:A,size:A.length})}readUint8Array(A,e){return this.array.slice(A,A+e)}},A.Uint8ArrayWriter=class extends ct{constructor(A){super(),this.defaultBufferSize=A||262144}init(A=0){t.assign(this,{offset:0,array:new I(A>0?A:this.defaultBufferSize)}),super.init()}writeUint8Array(A){const e=this,t=e.offset+A.length;if(t>e.array.length){let A=e.array.length?2*e.array.length:e.defaultBufferSize;for(;t>A;)A*=2;const g=e.array;e.array=new I(A),e.array.set(g)}e.array.set(A,e.offset),e.offset+=A.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},A.Writer=ct,A.ZipReader=Pg,A.ZipReaderStream=class{constructor(A={}){const{readable:e,writable:t}=new f,g=new Pg(e,A).getEntriesGenerator();this.readable=new p({async pull(A){const{done:e,value:t}=await g.next();if(e)return A.close();const i={...t,readable:(()=>{const{readable:A,writable:e}=new f;if(t.getData)return(async()=>{try{await t.getData(e)}catch(A){try{await e.abort(A)}catch{}}})(),A})()};delete i.getData,A.enqueue(i)}}),this.writable=t}},A.ZipWriter=Wi,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new f;this.readable=e,this.zipWriter=new Wi(t,A),this.pendingAddFileCalls=new n}transform(A){const e=this.zipWriter;let t;const{readable:g,writable:i}=new f({start(A){t=A},flush:()=>{(async()=>{try{await e.close()}catch(A){try{await e.writer.writable.abort(A)}catch{}}})()}});return Oi(this,this.zipWriter.add(A,g),A=>t.error(A)),{readable:this.readable,writable:i}}writable(A){let e;const{readable:t,writable:g}=new f({start(A){e=A}});return Oi(this,this.zipWriter.add(A,t),A=>e.error(A)),g}async close(A,t={}){return await u.all(e.from(this.pendingAddFileCalls)),this.zipWriter.close(A,t)}},A.configure=oA,A.createOPFSTempStream=(A={})=>{const{thresholdBytes:e=Ar,directoryName:t=er,getDirectory:g=()=>M.storage.getDirectory()}=A;let i;function r(){return i||(i=u.resolve(g()).then(A=>A.getDirectoryHandle(t,{create:!0}))),i}return async()=>{const A=[];let t,g,i,s,a=0,o=!1;const n=new m({async write(s){o?await i.write(s):(A.push(s),a+=s.length,a>e&&await(async()=>{const e=await r();t=Q.randomUUID(),g=await e.getFileHandle(t,{create:!0}),i=(await g.createWritable()).getWriter(),o=!0;for(const e of A)await i.write(e);A.length=0})())},async close(){i&&(await i.close(),i=null)}});let B=0;return{writable:n,readable:new p({async pull(e){if(o){if(!s){const A=await g.getFile();s=A.stream().getReader()}const{value:A,done:t}=await s.read();t?e.close():e.enqueue(A)}else B<A.length?e.enqueue(A[B++]):e.close()},async cancel(A){s&&await s.cancel(A)}},{highWaterMark:0}),dispose:async()=>{if(i){try{await i.close()}catch{}i=null}if(t){try{const A=await r();await A.removeEntry(t)}catch{}g=t=null}A.length=0}}}},A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await u.allSettled(Je.map(A=>(At(A),A.terminate())))}});
1
+ ((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).t={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:w,Error:u,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:x,TextEncoder:b,TextDecoder:g,document:F,crypto:z,btoa:S,TransformStream:v,ReadableStream:E,WritableStream:k,CompressionStream:R,DecompressionStream:U,navigator:L,Worker:C}="undefined"!=typeof globalThis?globalThis:this||self;var T=void 0!==F?F.currentScript:null;const W=4294967295,D=65535,I=255,q=67324752,N=134695760,O=N,Z=33639248,V=101010256,P=101075792,j=117853008,G=22,K=20,M=21589,X=2048,A=16384,H=2048,Y=1024,B="/",J=30,Q=new o(2107,11,31),_=new o(1980,0,1),$=void 0,ee=1/0,te="undefined",re="function",ne=new f;let se=2;try{typeof L!=te&&L.hardwareConcurrency&&(se=L.hardwareConcurrency)}catch{}const ae={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof R!=te&&R,DecompressionStream:typeof U!=te&&U},ie=["baseURI","wasmURI","workerURI","chunkSize","maxWorkers","terminateWorkerTimeout","workerStarvationTimeout","useCompressionStream","useWebWorkers","CompressionStream","DecompressionStream","CompressionStreamZlib","DecompressionStreamZlib"],oe=r.assign({},ae);function ce(){return oe}function le(e){return i.max(e.chunkSize,64)}function de(e){for(const t of ie){const r=e[t];r!==$&&(oe[t]=r)}}const we=[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],ue=[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],fe=[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],pe=[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],he=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],me=new f(288);me.fill(8,0,144),me.fill(9,144,256),me.fill(7,256,280),me.fill(8,280,288);const ye=new f(30).fill(5);function xe(e){const t=new p(16);for(const r of e)t[r]++;t[0]=0;const r=new p(17);for(let e=1;15>=e;e++)r[e+1]=r[e]+t[e];const n=new p(e.length);for(let t=0;t<e.length;t++)e[t]&&(n[r[e[t]]++]=t);return{i:t,symbols:n}}const be="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ge=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;ge[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=ge[t-1][e];ge[t][e]=r>>>8^ge[0][255&r]}const[Fe,ze,Se,ve,Ee,ke,Re,Ue]=ge;class Le{constructor(e){this.o=e||-1}append(e){let t=0|this.o;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),a=r-8;for(;a>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=Ue[255&e]^Re[e>>>8&255]^ke[e>>>16&255]^Ee[e>>>24&255]^ve[255&r]^Se[r>>>8&255]^ze[r>>>16&255]^Fe[r>>>24&255]}}for(;r>n;n++)t=t>>>8^Fe[255&(t^e[n])];this.o=t}get(){return~this.o}}class Ce extends v{constructor(){let e;const t=new Le;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function Te(e){if(typeof b==te){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const We={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=We.l(r);return 32===n?e.concat(t):We.u(t,n,0|r,e.slice(0,e.length-1))},p(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+We.l(r)},h(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=We.m(t,e[r-1]&2147483648>>t-1,1)),e},m:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,l:e=>i.round(e/1099511627776)||32,u(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=We.l(s);return n.push(We.m(t+a&31,t+a>32?r:n.pop(),1)),n}},De={bytes:{F(e){const t=We.p(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},S(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(We.m(8*(3&r),n)),t}}},Ie=class{constructor(e){const t=this;t.blockSize=512,t.v=[1732584193,4023233417,2562383102,271733878,3285377520],t.k=[1518500249,1859775393,2400959708,3395469782],e?(t.R=e.R.slice(0),t.U=e.U.slice(0),t.L=e.L):t.reset()}reset(){const e=this;return e.R=e.v.slice(0),e.U=[],e.L=0,e}update(e){const t=this;"string"==typeof e&&(e=De.C.S(e));const r=t.U=We.concat(t.U,e),n=t.L,s=t.L=n+We.p(e);if(s>9007199254740991)throw new u("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.T(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}W(){const e=this;let t=e.U;const r=e.R;t=We.concat(t,[We.m(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e.L/4294967296)),t.push(0|e.L);t.length;)e.T(t.splice(0,16));return e.reset(),r}D(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}I(e,t){return t<<e|t>>>32-e}T(e){const r=this,n=r.R,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=n[0],o=n[1],c=n[2],l=n[3],d=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r.I(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r.I(5,a)+r.D(e,o,c,l)+d+s[e]+r.k[i.floor(e/20)]|0;d=l,l=c,c=r.I(30,o),o=a,a=t}n[0]=n[0]+a|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+l|0,n[4]=n[4]+d|0}},qe={importKey:e=>new qe.q(De.bytes.S(e)),N(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new u("invalid params to pbkdf2");const s=1+(n>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(s),w=new m(d);let f=0;const p=We;for(t=De.bytes.S(t),l=1;(s||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>f&&o<a.length;o++)w.setInt32(f,a[o]),f+=4}return d.slice(0,n/8)},q:class{constructor(e){const t=this,r=t.O=Ie,n=[[],[]];t.Z=[new r,new r];const s=t.Z[0].blockSize/32;e.length>s&&(e=(new r).update(e).W());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.Z[0].update(n[0]),t.Z[1].update(n[1]),t.V=new r(t.Z[0])}reset(){const e=this;e.V=new e.O(e.Z[0]),e.P=!1}update(e){this.P=!0,this.V.update(e)}digest(){const e=this,t=e.V.W(),r=new e.O(e.Z[1]).update(t).W();return e.reset(),r}encrypt(e){if(this.P)throw new u("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Ne=typeof z!=te&&typeof z.getRandomValues==re,Oe="Invalid password",Ze="Invalid signature",Ve="zipjs-abort-check-password";function Pe(e){if(Ne)return z.getRandomValues(e);throw new u("Crypto API not supported")}const je=16,Ge={name:"PBKDF2"},Ke=r.assign({hash:{name:"HMAC"}},Ge),Me=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Ge),Xe=["deriveBits"],Ae=[8,12,16],He=[16,24,32],Ye=10,Be=[0,0,0,0],Je=typeof z!=te,Qe=Je&&z.subtle,_e=Je&&typeof Qe!=te,$e=De.bytes,et=class{constructor(e){const t=this;t.j=[[[],[],[],[],[]],[[],[],[],[],[]]],t.j[0][0][0]||t.G();const r=t.j[0][4],n=t.j[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new u("invalid aes key size");for(t.k=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s===0||8===s&&a%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.K(e,0)}decrypt(e){return this.K(e,1)}G(){const e=this.j[0],t=this.j[1],r=e[4],n=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,n[a]=d,l=s[c=s[o=s[d]]];let w=16843009*l^65537*c^257*o^16843008*d,u=257*s[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=u=u<<24^u>>>8,t[r][a]=w=w<<24^w>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}K(e,t){if(4!==e.length)throw new u("invalid aes block size");const r=this.k[t],n=r.length/4-2,s=[0,0,0,0],a=this.j[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let w,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],x=e[t?1:3]^r[3],b=4;for(let e=0;n>e;e++)w=i[h>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&x]^r[b],f=i[m>>>24]^o[y>>16&255]^c[x>>8&255]^l[255&h]^r[b+1],p=i[y>>>24]^o[x>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],x=i[x>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&y]^r[b+3],b+=4,h=w,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[y>>8&255]<<8^d[255&x]^r[b++],w=h,h=m,m=y,y=x,x=w;return s}},tt=class{constructor(e,t){this.M=e,this.X=t,this.A=t}reset(){this.A=this.X}update(e){return this.H(this.M,e,this.A)}Y(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}B(e){0===(e[0]=this.Y(e[0]))&&(e[1]=this.Y(e[1]))}H(e,t,r){let n;if(!(n=t.length))return[];const s=We.p(t);for(let s=0;n>s;s+=4){this.B(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return We.h(t,s)}},rt=qe.q;let nt=Je&&_e&&typeof Qe.importKey==re,st=Je&&_e&&typeof Qe.deriveBits==re;class at extends v{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n}){super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:a,J:i,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await lt(e,t,r,ut(n,0,Ae[t])),a=ut(n,Ae[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new u(Oe)})(r,a,s,ut(e,0,Ae[a]+2)),e=ut(e,Ae[a]+2),n?t.error(new u(Ve)):i()):await o;const c=new f(e.length-Ye-(e.length-Ye)%je);t.enqueue(ct(r,e,c,0,Ye,!0))},async flush(e){const{_:t,$:r,pending:n,ready:s}=this;if(r&&t){await s;const a=ut(n,0,n.length-Ye),i=ut(n,n.length-Ye);let o=ne;if(a.length){const e=pt($e,a);r.update(e);const n=t.update(e);o=ft($e,n)}const c=ut(ft($e,r.digest()),0,Ye);let l=n.length<Ye?1:0;for(let e=0;Ye>e;e++)l|=c[e]^i[e];if(l)throw new u(Ze);e.enqueue(o)}}})}}class it extends v{constructor({password:e,rawPassword:t,encryptionStrength:r}){let n;super({start(){ot(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,J:a,ready:i}=r;let o=ne;n?(o=await(async(e,t,r)=>{const n=Pe(new f(Ae[t]));return wt(n,await lt(e,t,r,n))})(r,s,n),a()):await i;const c=new f(o.length+e.length-e.length%je);c.set(o,0),t.enqueue(ct(r,e,c,o.length,0))},async flush(e){const{_:t,$:r,pending:s,ready:a}=this;if(r&&t){await a;let i=ne;if(s.length){const e=t.update(pt($e,s));r.update(e),i=ft($e,e)}n.signature=ft($e,r.digest()).slice(0,Ye),e.enqueue(wt(i,n.signature))}}}),n=this}}function ot(e,t,n,s){r.assign(e,{ready:new x(t=>e.J=t),password:dt(t,n),strength:s-1,pending:ne})}function ct(e,t,r,n,s,a){const{_:i,$:o,pending:c}=e;c.length&&(t=wt(c,t));const l=t.length-s;let d;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(l-l%je)),d=0;l-je>=d;d+=je){const e=pt($e,ut(t,d,d+je));a&&o.update(e);const s=i.update(e);a||o.update(s),r.set(ft($e,s),d+n)}return e.pending=ut(t,d),r}async function lt(e,n,s,a){e.password=null;const i=await(async(e,t,r,n,s)=>{if(!nt)return qe.importKey(t);try{return await Qe.importKey("raw",t,r,!1,s)}catch{return nt=!1,qe.importKey(t)}})(0,s,Ke,0,Xe),o=await(async(e,t,r)=>{if(!st)return qe.N(t,e.salt,Me.iterations,r);try{return await Qe.deriveBits(e,t,r)}catch{return st=!1,qe.N(t,e.salt,Me.iterations,r)}})(r.assign({salt:a},Me),i,8*(2*He[n]+2)),c=new f(o),l=pt($e,ut(c,0,He[n])),d=pt($e,ut(c,He[n],2*He[n])),w=ut(c,2*He[n]);return r.assign(e,{keys:{key:l,ee:d,passwordVerification:w},_:new tt(new et(l),t.from(Be)),$:new rt(d)}),w}function dt(e,t){return t===$?Te(e):t}function wt(e,t){let r=e;return e.length+t.length&&(r=new f(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function ut(e,t,r){return e.subarray(t,r)}function ft(e,t){return e.F(t)}function pt(e,t){return e.S(t)}class ht extends v{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=xt(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new u(Oe);e=e.subarray(12)}n?t.error(new u(Ve)):t.enqueue(xt(r,e))}})}}class mt extends v{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){yt(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=Pe(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(bt(r,t),0),s=12}else n=new f(e.length),s=0;n.set(bt(r,e),s),t.enqueue(n)}})}}function yt(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,te:new Le(s[0]),re:new Le(s[2])}),n)for(let t=0;t<n.length;t++)gt(e,n[t]);else for(let r=0;r<t.length;r++)gt(e,t.charCodeAt(r))})(e,t,n)}function xt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Ft(e)^t[n],gt(e,r[n]);return r}function bt(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=Ft(e)^t[n],gt(e,t[n]);return r}function gt(e,t){let[,r]=e.keys;e.te.append([t]);const n=~e.te.get();r=St(i.imul(St(r+zt(n)),134775813)+1),e.re.append([r>>>24]);const s=~e.re.get();e.keys=[n,r,s]}function Ft(e){const t=2|e.keys[2];return zt(i.imul(t,1^t)>>>8)}function zt(e){return 255&e}function St(e){return 4294967295&e}const vt="Invalid uncompressed size",Et="Invalid compressed data";class kt extends v{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:n}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l,deflate64:d}=e,w=this;let u,f,p,h=super.readable;const y=c&&s&&!d&&(!a||o)&&!(!i||!n);a&&!o||!c||y||(u=new Ce,h=Tt(h,u)),s&&(y?(p=new Rt,h=Wt(h,new n("gzip")),h=Tt(h,p)):h=Ct(h,i,{level:l,chunkSize:t},n,r,n)),a&&(o?h=Tt(h,new mt(e)):(f=new it(e),h=Tt(h,f))),Lt(w,h,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=y?p.signature:new m(u.value.buffer).getUint32(0)),w.signature=e})}}class Rt extends v{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=i.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s){const t=new f(s);return t.set(r),t.set(e,r.length),void(r=t)}const a=s-8,o=new f(a),c=i.min(a,r.length);o.set(r.subarray(0,c),0),a>c&&o.set(e.subarray(0,a-c),c),n.enqueue(o);const l=new f(8),d=r.length-c;d&&l.set(r.subarray(c),0),l.set(e.subarray(a-c),d),r=l},flush(){const t=new m(r.buffer,r.byteOffset,r.byteLength);e.signature=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class Ut extends v{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let w,f,p=super.readable;a&&(s?p=Tt(p,new ht(e)):(f=new at(e),p=Tt(p,f))),c&&(p=Ct(p,l,{chunkSize:t,deflate64:d},n,r,n),p=(e=>{const t=e.getReader();return new E({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new u(Et);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(p)),a&&!s||!i||(w=new Ce,p=Tt(p,w)),Lt(this,p,()=>{if((!a||s)&&i){const e=new m(w.value.buffer);if(o!=e.getUint32(0,!1))throw new u(Ze)}})}}function Lt(e,t,n){t=Tt(t,new v({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function Ct(e,t,r,n,s,a){const i=t&&n?n:s||a,o=r.deflate64?"deflate64-raw":"deflate-raw";let c;try{c=new i(o,r)}catch(e){if(!t)throw e;if(s)c=new s(o,r);else{if(!a)throw e;c=new a(o,r)}}return Wt(e,c)}function Tt(e,t){return e.pipeThrough(t)}function Wt(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const Dt="data",It="deflate",qt="inflate";class Nt extends v{constructor(e,t){super({});const n=this,{codecType:s}=e;let a;s.startsWith(It)?a=kt:s.startsWith(qt)&&(a=Ut),n.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new v({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:i})}}),d=new v({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==$&&n.outputSize>e.outputSize))throw new u(vt)},flush(){const{signature:e}=o;r.assign(n,{signature:e,inputSize:i})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class Ot extends v{constructor(e){let t;1>e&&(e=65536),super({transform:(r,n)=>{if(t){const e=new f(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}let s=0;for(;r.length-s>e;)n.enqueue(r.slice(s,s+e)),s+=e;t=s?r.slice(s):r},flush(e){t&&t.length&&e.enqueue(t)}})}}const Zt={type:"module"},Vt="error";let Pt,jt,Gt,Kt,Mt=!0;try{Mt=typeof structuredClone==re&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class Xt{constructor(e,{readable:t,writable:n},{options:s,config:a,ne:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:w}=i;return r.assign(e,{se:!0,ae:(e.ae||0)+1,readable:t.pipeThrough(new Ot(le(a))).pipeThrough(new At(i),{signal:w}),writable:n,options:r.assign({},s),workerURI:l,transferStreams:c,terminate:()=>new x(t=>{const{ie:r,se:n}=e;r?(n?e.oe=t:(r.terminate(),t()),e.ce=null):t()}),le(){if(e.se){const{oe:t}=e;t&&(e.oe=null,e.de=!0,e.ie.terminate(),t()),e.se=!1,d(e)}}}),Pt===$&&(Pt=typeof C!=te),(o&&Pt?Bt:Yt)(e,a)}}class At extends v{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await Ht(e,r)},async transform(e,n){s+=e.length,t&&await Ht(t,s,r),n.enqueue(e)},async flush(){n&&await Ht(n,s)}})}}async function Ht(e,...t){try{await e(...t)}catch{}}function Yt(e,t){return{run:()=>(async({options:e,readable:t,writable:r,le:n},s)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{const t=e.codecType.startsWith(It)?s.CompressionStreamZlib:s.DecompressionStreamZlib;t&&!t.we||(e.useCompressionStream=!0)}a=new Nt(e,s),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:n,inputSize:i,outputSize:o}=a;return{signature:n,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{n()}})(e,t)}}function Bt(e,t){const{baseURI:n,chunkSize:s}=t;let{wasmURI:a}=t;if(!e.ce){let i;typeof a==re&&(a=a());try{i=Qt(e.workerURI,n,e)}catch{return Pt=!1,Yt(e,t)}r.assign(e,{ie:i,de:!1,ce:{run:()=>(async(e,t)=>{let n,s;const a=new x((e,t)=>{n=e,s=t});r.assign(e,{reader:null,writer:null,ue:n,fe:s,result:a});const{readable:i,options:o}=e,{writable:c,closed:l,pe:d}=(e=>{const t=new AbortController,{writable:r,readable:n}=new v,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,pe:()=>t.abort()}})(e.writable);let w;try{w=$t({type:"start",options:o,config:t,readable:i,writable:c},e)}catch(t){d();try{await l}catch{}throw e.le(),t}w||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});try{const e=await a;return await u(),await l,e}catch(e){await u(),d();try{await l}catch{}throw e}async function u(){if(!w&&!c.locked)try{await c.getWriter().close()}catch{}}})(e,{chunkSize:s,wasmURI:a,baseURI:n})}})}return e.ce}function Jt(e){const{ie:t}=e;if(t)try{t.terminate()}catch{}e.ce=null}function Qt(e,t,n,s,a=!0){let i,o,c;if(Gt===$||jt!==e){const r=typeof e==re;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){s===$&&(s=!1),s&&(c=Zt);try{i=new C(o,c)}catch(a){if(d)try{w.revokeObjectURL(o)}catch{}if(r&&d)return Qt(e,t,n,s,!1);if(s)throw a;return Qt(e,t,n,!0,!1)}}else{s===$&&(s=!0),s&&(c=Zt);try{o=new w(o,t)}catch{}try{i=new C(o,c)}catch(r){if(s)throw r;return Qt(e,t,n,!1,a)}}jt=e,Gt=o,Kt=c}else i=new C(Gt,Kt);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:n,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,ue:d,fe:w,le:p,ae:h}=t,m=()=>t.ae!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:a}=o,i=new u(e);r.assign(i,{stack:t,code:n,name:s,outputSize:a}),y(i)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||$t({type:Dt,value:e,done:r,messageId:a},t)}n==Dt&&(await l.ready,await l.write(new f(s)),m()||$t({type:"ack",messageId:a},t)),"close"==n&&y(null,i)}}catch(o){m()||(Jt(t),y(o))}function y(e,t){m()||(e?w(e):d(t),l&&l.releaseLock(),p())}})(e,n)),i.addEventListener(Vt,e=>_t(e,n)),i.addEventListener("messageerror",e=>_t(e,n)),i}function _t(e,t){e.preventDefault&&e.preventDefault();const{fe:r,writer:n,le:s}=t;Jt(t),r&&(r(e.error||new u(e.message||Vt)),n&&n.releaseLock(),s())}function $t(e,{ie:t,writer:r,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r.byteOffset||r.byteLength!=r.buffer.byteLength?new f(r):r,i.push(e.value.buffer)),n&&Mt?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{Mt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let er=[];const tr=[];let rr,nr,sr=0;async function ar(e,t){const{options:r,config:n}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:w,maxWorkers:u}=n;t.transferStreams=a||a===$;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===$&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&w?w:$,r.useCompressionStream=o||o===$&&n.useCompressionStream,(await(async()=>{const r=er.find(e=>!e.se);if(r)return dr(r),new Xt(r,e,t,p);if(er.length<u){const r={he:sr};return sr++,er.push(r),new Xt(r,e,t,p)}return new x(r=>{tr.push({resolve:r,stream:e,me:t}),nr=n.workerStarvationTimeout,ir()})})()).run();function p(e){if(or(),tr.length){const[{resolve:t,stream:r,me:n}]=tr.splice(0,1);t(new Xt(e,r,n,p)),ir()}else e.ie?(dr(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.de?e.de=!1:e.ye=setTimeout(async()=>{er=er.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):er=er.filter(t=>t!=e)}}function ir(){!rr&&tr.length&&s.isFinite(nr)&&nr>=0&&(rr=setTimeout(cr,nr))}function or(){rr&&(clearTimeout(rr),rr=null)}function cr(){if(rr=null,tr.length){const[{resolve:e,stream:t,me:n}]=tr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:$});e(new Xt({},t,s,lr)),ir()}}function lr(){or(),ir()}function dr(e){const{ye:t}=e;t&&(clearTimeout(t),e.ye=null)}const wr="HTTP error ",ur="HTTP Range not supported",fr="Writer iterator completed too soon",pr="Writer not initialized",hr="Content-Range",mr="Range",yr="GET",xr="bytes",br="writable";class gr{constructor(){this.size=0}init(){this.initialized=!0}}class Fr extends gr{get readable(){return this.xe()}xe({offset:e=0,size:t,diskNumberStart:r,chunkSize:n=65536}={}){const s=this;let a=0;return new E({async pull(o){const c=t===$?n:i.min(n,t-a),l=await Mr(s,e+a,c,r);o.enqueue(l),a+n>t||t===$&&!l.length&&c?o.close():a+=n}})}}class zr extends gr{constructor(){super();const e=this,t=new k({write(t){if(!e.initialized)throw new u(pr);return e.writeUint8Array(t)}});r.defineProperty(e,br,{get:()=>t})}writeUint8Array(){}}class Sr extends Fr{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,n)),new f(a)}}class vr extends gr{constructor(e){super();const t=this,n=new v,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(t,br,{get:()=>n.writable}),t.blob=new d(n.readable,{headers:s}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class Er extends Fr{constructor(e,t){super(),Rr(this,e,t)}async init(){await Ur(this,Nr,Wr),super.init()}readUint8Array(e,t){return Lr(this,e,t,Nr,Wr)}}class kr extends Fr{constructor(e,t){super(),Rr(this,e,t)}async init(){await Ur(this,Or,Dr),super.init()}readUint8Array(e,t){return Lr(this,e,t,Or,Dr)}}function Rr(e,t,n){const{preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o,fetch:c})}async function Ur(e,t,r){const{url:n,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ce(),{protocol:r}=new w(e,t);return"http:"==r||"https:"==r})(n)&&(i||o)&&(void 0===a||a)){const n=await t(yr,e,Cr(e,c?-22:void 0)),a=n.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==xr))throw new u(ur);{if(c){const t=new f(await n.arrayBuffer());206==n.status&&t.length==G&&(e.be=t)}let a;const i=n.headers.get(hr);if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=s(t))}}a===$?await qr(e,t,r):e.size=a}}else await qr(e,t,r)}async function Lr(e,t,r,n,a){const{useRangeHeader:i,forceRangeRequests:o,be:c,size:l,options:d}=e;if(i||o){if(c&&t==l-G&&r==G)return c;if(l>t&&0!==r){t+r>l&&(r=l-t);const a=await n(yr,e,Cr(e,t,r));if(206!=a.status)throw new u(ur);const i=a.headers.get(hr);if(i){const e=s(i.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new u(ur)}const o=new f(await a.arrayBuffer());if(o.length!=r)throw new u(ur);return o}return ne}{const{data:n}=e;return n||await a(e,d),new f(e.data.subarray(t,t+r))}}function Cr(e,t=0,n=1){return r.assign({},Tr(e),{[mr]:xr+"="+(0>t?t:t+"-"+(t+n-1))})}function Tr({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Wr(e){await Ir(e,Nr)}async function Dr(e){await Ir(e,Or)}async function Ir(e,t){const r=await t(yr,e,Tr(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function qr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,Tr(e)),a=n.headers.get("Content-Length");a&&!n.headers.get("Content-Encoding")?e.size=s(a):await r(e,e.options)}}async function Nr(e,{fetch:t=fetch,options:n,url:s},a){const i=await t(s,r.assign({},n,{method:e,headers:a}));if(400>i.status)return i;throw 416==i.status?new u(ur):new u(wr+(i.statusText||i.status))}function Or(e,{url:t},n){return new x((s,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new u(ur):new u(wr+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new u("Network error")),!1),i.open(e,t),n)for(const e of r.entries(n))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class Zr extends Fr{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new kr(e,t):new Er(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Vr extends Fr{constructor(e){super(),this.ge=e}async init(){const e=this,{ge:t}=e;e.Fe=0,e.ze=0,await x.all(t.map(async(r,n)=>{await Kr(r),n!=t.length-1&&(e.ze+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const n=this,{ge:s}=this;let a,o=r;-1==o&&(o=s.length-1);let c=e;for(;s[o]&&c>=s[o].size;)c-=s[o].size,o++;const l=s[o];if(l){const s=l.size;if(c+t>s){const i=s-c;a=new f(t);const o=await Mr(l,c,i);a.set(o,0);const d=await n.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await Mr(l,c,t)}else a=ne;return n.Fe=i.max(o,n.Fe),a}}class Pr extends gr{constructor(e,t=4294967295){super();const n=this;let s,a,i;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new k({async write(t){const{availableSize:r}=n;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),n.diskOffset+=s.size,n.diskNumber++,i=null,n.availableSize=n.maxSize,t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new u(fr);s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await Kr(s),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){i&&(await i.ready,await l())},async abort(e){i&&await i.abort(e)}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),s.size+=t,n.availableSize-=t)}async function l(){await i.close()}r.defineProperty(n,br,{get:()=>o})}}class jr{constructor(e){return t.isArray(e)&&(e=new Vr(e)),e instanceof E&&(e={readable:e}),e}}class Gr{constructor(e){return e.writable===$&&typeof e.next==re&&(e=new Pr(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof Pr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:ee,maxSize:ee}),e}}async function Kr(e,t){if(!e.init||e.initialized)return x.resolve();await e.init(t)}function Mr(e,t,r,n){return e.readUint8Array(t,r,n)}const Xr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Ar(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=Xr[e[r]];return t}})(e):new g(t,{ignoreBOM:!0}).decode(e)}const Hr="filename",Yr="rawFilename",Br="comment",Jr="rawComment",Qr="uncompressedSize",_r="compressedSize",$r="offset",en="diskNumberStart",tn="lastModDate",rn="rawLastModDate",nn="lastAccessDate",sn="creationDate",an="rawCreationDate",on="internalFileAttributes",cn="externalFileAttributes",ln="msdosAttributesRaw",dn="msdosAttributes",wn="msDosCompatible",un="zip64",fn="encrypted",pn="version",hn="versionMadeBy",mn="zipCrypto",yn="directory",xn="executable",bn="compressionMethod",gn="signature",Fn="extraField",zn="unixMode",Sn="setuid",vn="setgid",En="sticky",kn=[Hr,Yr,Qr,_r,tn,rn,Br,Jr,nn,sn,an,$r,en,on,cn,ln,dn,wn,un,fn,pn,hn,mn,yn,xn,bn,gn,Fn,"extraFieldUnix","extraFieldInfoZip","uid","gid",zn,Sn,vn,En,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Rn{constructor(e){kn.forEach(t=>this[t]=e[t])}}const Un="password",Ln="rawPassword",Cn="passThrough",Tn="signal",Wn="checkAmbiguity",Dn="useWebWorkers",In="useCompressionStream",qn="transferStreams",Nn="preventClose",On="offset",Zn="strictness",Vn="strict",Pn="tolerant",jn="File format is not recognized",Gn="End of central directory not found",Kn="End of Zip64 central directory locator not found",Mn="Central directory header not found",Xn="Local file header not found",An="Zip64 extra field not found",Hn="File contains encrypted entry",Yn="Encryption method not supported",Bn="Compression method not supported",Jn="Split zip file",Qn="Overlapping entry found",_n="Ambiguous archive",$n="utf-8",es="cp437",ts=[[Qr,W],[_r,W],[$r,W],[en,D]],rs={[D]:{Se:Es,bytes:4},[W]:{Se:ks,bytes:8}};class ns{constructor(e,t={}){r.assign(this,{reader:new jr(e),options:t,config:ce(),ve:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await Kr(n),n.size!==$&&n.readUint8Array||(n=new Sr(await new d(n.readable).blob()),await Kr(n)),n.size<G)throw new u(jn);const a=ds(gs(t,e,Zn),gs(t,e,Wn)),o=a==Vn,c=a!=Pn,w=((e,t)=>e!==$?e:t==Vn?0:t==Pn?1/0:D)(gs(t,e,"maxAppendedDataSize"),a),{Ee:f,ke:p}=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,65557),a={count:ws};let o,c,l=0;for await(const[r,i,d,w,u]of hs(e,s)){const s=vs(r,w+20);if(u+G+s==n){const s=await ys(e,r,i,w,u,n,a);if(s==ps){if(o||(o=ms(d,w,u)),l++,!t||l>1)break}else s!=fs||c||(c=ms(d,w,u))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=i.min(n,t==1/0?n:65557+t);let a,o;for await(const[t,i,c,l,d]of hs(e,s)){const s=ms(c,l,d);a||(a=s);const w=await ys(e,t,i,l,d,n,r);if(w==ps)return s;w!=fs||o||(o=s)}return o||a})(e,r,a)),{Ee:o,ke:l}})(n,c,w);if(!f)throw Es(Rs(await Mr(n,0,4)))==N?new u(Jn):new u(Gn);c&&p>1&&bs("multiple end of central directory records");const h=Rs(f);let m=Es(h,12),y=Es(h,16);const b=f.offset,g=vs(h,20),F=b+G+g;n.size-F>w&&bs("appended data");let z=vs(h,4);const S=n.Fe||0;let E,k,R=vs(h,6),U=vs(h,10),L=0;if(y==W||m==W||U==D||R==D){const e=f.offset<K?ne:await Mr(n,f.offset-K,K),t=Rs(e);if(e.length==K&&Es(t,0)==j){y=ks(t,8);let e=await Mr(n,y,56,-1),r=Rs(e);const s=f.offset-K-56-(n.ze||0);if((56>e.length||Es(r,0)!=P)&&y!=s&&s>=0){const t=y;y=s,y>t&&(L=y-t),e=await Mr(n,y,56,-1),r=Rs(e)}if(56>e.length||Es(r,0)!=P)throw new u(Kn);k=!0,z==D?z=Es(r,16):o&&z!=Es(r,16)&&bs("mismatched zip64 end of central directory record"),R==D?R=Es(r,20):o&&R!=Es(r,20)&&bs("mismatched zip64 end of central directory record"),U==D?U=ks(r,32):o&&U!=ks(r,32)&&bs("mismatched zip64 end of central directory record"),m==W?m=ks(r,40):o&&m!=ks(r,40)&&bs("mismatched zip64 end of central directory record"),y=ks(r,48)+L}}const C=m,T=f.offset-(k?76:0);if(y<n.size||(L=n.size-y-m-G,y=n.size-m-G),S!=z)throw new u(Jn);if(0>y)throw new u(jn);let q=0,O=await Mr(n,y,m,R),V=Rs(O);if(m){if(4>O.length)throw new u(jn);const e=T-m-(n.ze||0);if(y!=e&&R==z){let t=!(Es(V,q)==Z);if(t||0>e||e+4>n.size||(t=Es(Rs(await Mr(n,e,4,R)),0)==Z),t){const t=y;y=e,y>t&&(L+=y-t),O=await Mr(n,y,m,R),V=Rs(O)}}}const M=T-y-(n.ze||0);if(m==M||0>M||R!=z||(m=M,O=await Mr(n,y,m,R),V=Rs(O)),0>y||y>=n.size)throw new u(jn);E=y;const X=gs(t,e,"filenameEncoding"),J=gs(t,e,"commentEncoding"),Q=o?new l:$;let _;for(let a=0;U>a;a++){const c=new ss(n,s,t.options);if(q+46>O.length||Es(V,q)!=Z)throw new u(Mn);as(c,V,q+6);const l=!!c.bitFlag.languageEncodingFlag,w=q+46,f=w+c.filenameLength,p=f+c.extraFieldLength,h=vs(V,q+4),m=!(h>>8),y=h>>8==3,b=O.subarray(w,f),g=vs(V,q+32),F=p+g,z=O.subarray(p,F),S=l,k=l,R=Es(V,q+38),C=R&I,T={readOnly:!!(1&C),hidden:!!(2&C),system:!!(4&C),directory:!!(16&C),archive:!!(32&C)},W=Es(V,q+42),N=gs(t,e,"decodeText")||Ar,P=S?$n:X||es,j=k?$n:J||es;let G=N(b,P);G===$&&(G=Ar(b,P));let K=N(z,j);K===$&&(K=Ar(z,j)),r.assign(c,{index:a,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Re:g,offset:W,diskNumberStart:vs(V,q+34),internalFileAttributes:vs(V,q+36),externalFileAttributes:R,msdosAttributesRaw:C,msdosAttributes:T,rawFilename:b,filenameUTF8:S,commentUTF8:k,rawExtraField:O.subarray(f,p),rawComment:z,filename:G,comment:K}),is(c,c,V,q+6),c.offset+=L,E=i.min(c.offset,E),o&&(Q.has(c.filename)&&(_=!0),Q.add(c.filename));const M=c.externalFileAttributes>>16&D;c.unixMode===$&&16877&M&&(c.unixMode=M);const ee=!!(c.unixMode&H),te=!!(c.unixMode&Y),re=!!(512&c.unixMode),ne=c.unixMode!==$?!!(73&c.unixMode):y&&!!(73&M),se=c.unixMode!==$&&(61440&c.unixMode)==A,ae=(61440&M)==A;r.assign(c,{setuid:ee,setgid:te,sticky:re,unixExternalUpper:M,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:ne,directory:se||ae||m&&T.directory||c.filename.endsWith(B)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const ie=new Rn(c);ie.getData=(e,r)=>c.getData(e,ie,t.ve,r),ie.arrayBuffer=async e=>{const r=new v,[n]=await x.all([new d(r.readable).arrayBuffer(),c.getData(r,ie,t.ve,e)]);return n},q=F;const{onprogress:oe}=e;if(oe)try{await oe(a+1,U,new Rn(c))}catch{}yield ie}o&&q!=C&&bs("trailing central directory data"),_&&bs("duplicate filename"),o&&(L||U&&E>0)&&bs("prepended data");const ee=gs(t,e,"extractPrependedData"),te=gs(t,e,"extractAppendedData");return ee&&(t.prependedData=E>0?await Mr(n,0,E):ne),t.comment=g?await Mr(n,b+G,g):ne,te&&(t.appendedData=F<n.size?await Mr(n,F,n.size-F):ne),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class ss{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:a,index:o,offset:c,diskNumberStart:l,extraFieldAES:d,extraFieldZip64:w,compressionMethod:f,config:p,bitFlag:h,signature:m,rawLastModDate:y,uncompressedSize:x,compressedSize:b}=s,{dataDescriptor:g}=h,F=t.localDirectory={},z=await Mr(a,c,J,l),S=Rs(z);let v=gs(s,n,Un),E=gs(s,n,Ln);const R=gs(s,n,Cn);if(v=v&&v.length&&v,E=E&&E.length&&E,d&&99!=d.originalCompressionMethod)throw new u(Bn);if(0!=f&&8!=f&&9!=f&&!R)throw new u(Bn);if(z.length<J||Es(S,0)!=q)throw new u(Xn);as(F,S,4);const{extraFieldLength:U,filenameLength:L}=F,C=ds(gs(s,n,Zn),gs(s,n,Wn))==Vn;let T=ne;if(C&&(L||U)){const e=await Mr(a,c+J,L+U,l);T=e.subarray(0,L),F.rawExtraField=e.subarray(L)}else F.rawExtraField=U?await Mr(a,c+J+L,U,l):ne;is(s,F,S,4,!0),C&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&bs("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&bs("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&bs("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.signature||t.compressedSize||t.uncompressedSize)||t.signature==e.signature&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||bs("mismatched local file header (signature or sizes)")})(s,F,T);const{lastAccessDate:W,creationDate:D}=F;W&&(t.lastAccessDate=W),D&&(t.creationDate=D);const N=s.encrypted&&F.encrypted&&!R,Z=N&&!d;if(R||(t.zipCrypto=Z),N){if(!Z&&d.strength===$)throw new u(Yn);if(!v&&!E)throw new u(Hn)}const V=c+J+L+U,P=b,j=a.xe({offset:V,size:P,diskNumberStart:l,chunkSize:le(p)}),G=gs(s,n,Tn),K=gs(s,n,"checkPasswordOnly");let M=gs(s,n,"checkOverlappingEntry");const X=gs(s,n,"checkOverlappingEntryOnly");X&&(M=!0);const{onstart:A,onprogress:H,onend:Y}=n,B=9==f;let Q=gs(s,n,In);B&&(Q=!1);const _={options:{codecType:qt,password:v,rawPassword:E,zipCrypto:Z,encryptionStrength:d&&d.strength,signed:gs(s,n,"checkSignature")&&!R,passwordVerification:Z&&(g?y>>>8&I:m>>>24&I),outputSize:R?b:x,signature:m,compressed:0!=f&&!R,encrypted:N,useWebWorkers:gs(s,n,Dn),useCompressionStream:Q,transferStreams:gs(s,n,qn),deflate64:B,checkPasswordOnly:K},config:p,ne:{signal:G,size:P,onstart:A,onprogress:H,onend:Y}};let ee;M&&await(async({reader:e,Ue:t,index:r,offset:n,diskNumberStart:s,signature:a,compressedSize:o,uncompressedSize:c,Le:l,dataDescriptor:d,extraFieldZip64:w,ve:f})=>{let p=0;if(s&&e.ge)for(let t=0;t<i.min(s,e.ge.length);t++)p+=e.ge[t].size;let h=0;if(d&&(h=w?20:12),h){const r=await Mr(e,l+o,h+4,s);if(r.length==h+4&&Es(Rs(r),0)==O){const e=Es(Rs(r),4);let n,s;w?(n=ks(Rs(r),8),s=ks(Rs(r),16)):(n=Es(Rs(r),8),s=Es(Rs(r),12)),(t.encrypted&&!t.zipCrypto||e==a)&&n==o&&s==c&&(h+=4)}}const m={start:p+n,end:p+l+o+h,Ue:t};for(const[e,t]of f)if(e!=r&&m.start<t.end&&t.start<m.end){const e=new u(Qn);throw e.Ce=t.Ue,e}f.set(r,m)})({reader:a,Ue:t,index:o,offset:c,diskNumberStart:l,signature:m,compressedSize:b,uncompressedSize:x,Le:V,dataDescriptor:g||F.bitFlag.dataDescriptor,extraFieldZip64:w||F.extraFieldZip64,ve:r});try{if(!X){K&&(e=new k),e=new Gr(e),await Kr(e,R?b:x),({writable:ee}=e);const{outputSize:t}=await ar({readable:j,writable:ee},_);if(e.size+=t,t!=(R?b:x))throw new u(vt)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!K||t.message!=Ve)throw t}finally{gs(s,n,Nn)||!ee||ee.locked||await ee.getWriter().close()}return K||X?$:e.getData?e.getData():ee}}function as(e,t,n){const s=e.rawBitFlag=vs(t,n+2),a=!(1&~s),i=Es(t,n+6);r.assign(e,{encrypted:a,version:vs(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&X)==X},rawLastModDate:i,lastModDate:Fs(i),filenameLength:vs(t,n+22),extraFieldLength:vs(t,n+24)})}function is(e,t,n,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Rs(new f(i));let w=0;try{for(;w<i.length;){const e=vs(d,w),t=vs(d,w+2);l.set(e,{type:e,data:i.slice(w+4,w+4+t)}),w+=4+t}}catch{}const p=vs(n,s+4);r.assign(t,{signature:Es(n,s+10),compressedSize:Es(n,s+14),uncompressedSize:Es(n,s+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=Rs(e.data),n=ts.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+rs[t].bytes,0);if(e.data.length<s)throw new u(An);for(let s=0,a=0;s<n.length;s++){const[i,o]=n[s],c=rs[o];t[i]=e[i]=c.Se(r,a),a+=c.bytes}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(os(m,Hr,Yr,t,e),t.extraFieldUnicodePath=m);const y=l.get(25461);y&&(os(y,Br,Jr,t,e),t.extraFieldUnicodeComment=y);const x=l.get(39169);x&&x.data.length>=7?(((e,t,n)=>{const s=Rs(e.data),a=Ss(s,4);r.assign(e,{Te:Ss(s,0),vendorId:Ss(s,2),strength:a,originalCompressionMethod:n,compressionMethod:vs(s,5)}),t.compressionMethod=e.compressionMethod})(x,t,p),t.extraFieldAES=x):t.compressionMethod=p;const b=l.get(10);b&&(((e,t)=>{const n=Rs(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=vs(n,a),r=vs(n,a+2);1==t&&(s=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(s&&24==s.length){const n=Rs(s),a=n.getBigUint64(0,!0),i=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:zs(a),lastAccessDate:zs(i),creationDate:zs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const g=l.get(30805);if(g)cs(g,t,!1),t.extraFieldUnix=g;else{const e=l.get(30837);e&&(cs(e,t,!0),t.extraFieldInfoZip=e)}const F=l.get(M);F&&(((e,t,r)=>{if(!e.data.length)return;const n=Rs(e.data),s=Ss(n,0),a=[],i=[];r?(1&~s||(a.push(tn),i.push(rn)),2&~s||(a.push(nn),i.push("rawLastAccessDate")),4&~s||(a.push(sn),i.push(an))):5>e.data.length||(a.push(tn),i.push(rn));let c=1;a.forEach((r,s)=>{if(e.data.length>=c+4){const a=Es(n,c);t[r]=e[r]=new o(1e3*(0|a));const l=i[s];e[l]=a}c+=4})})(F,t,a),t.extraFieldExtendedTimestamp=F);const z=l.get(6534);z&&(t.extraFieldUSDZ=z)}function os(e,t,n,s,a){if(5>e.data.length)return void(e.valid=!1);const i=Rs(e.data),o=new Le;o.append(a[n]);const c=Rs(new f(4));c.setUint32(0,o.get(),!0);const l=Es(i,1);r.assign(e,{version:Ss(i,0),[t]:Ar(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Es(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function cs(e,t,n){try{const s=Rs(new f(e.data));let a,i;if(n){let t=0;const n=Ss(s,t++),o=Ss(s,t++);a=ls(e.data.subarray(t,t+o)),t+=o;const c=Ss(s,t++);i=ls(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:a,gid:i})}else 4>e.data.length||(a=vs(s,0),i=vs(s,2),r.assign(e,{uid:a,gid:i}));a!==$&&(t.uid=a),i!==$&&(t.gid=i)}catch{}}function ls(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function ds(e,t){return e===$?t?Vn:"balanced":e}const ws=64,us=0,fs=1,ps=2;async function*hs(e,t){const r=e.size-t,n=await Mr(e,r,t),s=Rs(n);for(let e=n.length-G;e>=0;e--)Es(s,e)==V&&(yield[s,r,n,e,r+e])}function ms(e,t,r){return{offset:r,buffer:e.slice(t,t+G).buffer}}async function ys(e,t,r,n,s,a,i){const o=vs(t,n+10),c=Es(t,n+12),l=Es(t,n+16);if(o==D||c==W||l==W)return await xs(e,t,r,s-K,a,i)==j?ps:us;if(!o&&!c)return fs;for(const n of[s-c,l])if(await xs(e,t,r,n,a,i)==Z)return ps;return us}async function xs(e,t,r,n,s,a){return 0>n||n+4>s?$:r>n?a.count>0?(a.count--,Es(Rs(await Mr(e,n,4)),0)):$:Es(t,n-r)}function bs(e){const t=new u(_n);throw t.reason=e,t}function gs(e,t,r){return t[r]===$?e.options[r]:t[r]}function Fs(e){const t=(4294901760&e)>>16,r=e&D;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function zs(e){return new o(s(e/a(1e4)-a(116444736e5)))}function Ss(e,t){return e.getUint8(t)}function vs(e,t){return e.getUint16(t,!0)}function Es(e,t){return e.getUint32(t,!0)}function ks(e,t){return s(e.getBigUint64(t,!0))}function Rs(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const Us="File already exists",Ls="Zip file comment exceeds 64KB",Cs="File entry comment exceeds 64KB",Ts="File entry name exceeds 64KB",Ws="Version exceeds 65535",Ds="The strength must equal 1, 2, or 3",Is="Extra field type exceeds 65535",qs="Extra field data exceeds 64KB",Ns=-2147483648,Os=2147483647,Zs="Zip64 is not supported (set the 'zip64' option to 'true')",Vs="Undefined uncompressed size",Ps="Undefined reader",js="Zip file not empty",Gs=new f([7,0,2,0,65,69,3,0,0]),Ks="infozip",Ms="unix";let Xs=0;const As=[];class Hs{constructor(e,t={}){const n=(e=new Gr(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==ee&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==ee;r.assign(this,{writer:e,We:n,options:t,config:ce(),files:new c,De:new l,offset:t[On]===$?e.size||e.writable.size||0:t[On],Ie:t[On]===$?0:t[On]-(e.size||e.writable.size||0),qe:new l,Ne:0,Oe:$})}async prependZip(e){if(this.De.size)throw new u(js);e=new jr(e),await Kr(e);const t=new ns(e.readable),n=await t.getEntries();await t.close(),await Kr(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.De=new l(n.map(e=>e.filename)),this.files=new c(n.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:a,rawFilename:i,bitFlag:o,encrypted:c,uncompressedSize:l,compressedSize:d,diskOffset:w,diskNumber:u,zip64:f}=e;let{compressionMethod:p,Ze:h,Ve:m,Pe:y,je:x,Ge:b,rawExtraField:g}=e;const{level:F,languageEncodingFlag:z,dataDescriptor:S}=o;h=h||ne,m=m||ne,y=y||ne,x=x||ne,b=b||ne,g=g||ne,e.extraFieldAES&&(p=99);const v=wa(h,m,y,x,b,g),E=f&&l>=W,k=f&&d>=W,R=-7&fa(F,z,S,c,p)|F<<1,{Ke:U,Me:L}=ua({version:t,bitFlag:R,compressionMethod:p,uncompressedSize:l,compressedSize:d,rawLastModDate:n,rawFilename:i,Xe:k,Ae:E,extraFieldLength:v}),{signature:C}=e;return C!==$&&oa(L,10,C),r.assign(e,{Ae:E,Xe:k,He:f&&this.offset-w>=W,Ye:f&&u>=D,Ze:h,Ve:m,Pe:y,je:x,Ge:b,rawExtraField:g,extendedTimestamp:y.length>0||x.length>0,Be:1+(s?2:0)+(a?4:0),Ke:U,Me:L}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{qe:i,config:c}=s;let l,d;Xs<c.maxWorkers?Xs++:await new x(e=>As.push(e));try{if(e=e.trim(),sa(s,n,yn)&&!e.endsWith(B)&&(e+=B),s.De.has(e))throw new u(Us);return s.De.add(e),d=!0,l=(async(e,t,n,s)=>{const i=((e,t,r)=>{t=t.trim();let n=sa(e,r,wn),s=sa(e,r,hn,n?20:768);const a=sa(e,r,xn),i=sa(e,r,"uid"),o=sa(e,r,"gid");let c=sa(e,r,zn),l=sa(e,r,"unixExtraFieldType"),d=sa(e,r,Sn),w=sa(e,r,vn),f=sa(e,r,En);if(i!==$&&(0>i||i>W))throw new u("Invalid uid (must be integer 0..2^32-1)");if(o!==$&&(0>o||o>W))throw new u("Invalid gid (must be integer 0..2^32-1)");if(c!==$&&(0>c||c>D))throw new u("Invalid UNIX mode (must be integer 0..65535)");if(l!==$&&l!==Ks&&l!==Ms)throw new u("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(l===Ms&&(i!==$&&i>D||o!==$&&o>D))throw new u("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");l!==$||i===$&&o===$||(l=Ks);let p=sa(e,r,ln),h=sa(e,r,dn);const m=p!==$||h!==$;if(i!==$||o!==$||c!==$||l?(n=!1,s=s&D|768):m&&(n=!0,s&=I),p!==$&&(0>p||p>I))throw new u("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new u("Invalid msdosAttributes (must be an object with boolean flags)");if(s>D)throw new u(Ws);let y=sa(e,r,cn,0);!r[yn]&&t.endsWith(B)&&(r[yn]=!0);const x=sa(e,r,yn);let b;return x?(t.endsWith(B)||(t+=B),0===y&&(y=16,n||(y|=16877<<16))):n||0!==y||(y=a?493<<16:27525120),n||(b=y>>16&D,c=c===$?b:c&D,d?c|=H:d=!!(c&H),w?c|=Y:w=!!(c&Y),f?c|=512:f=!!(512&c),x&&(c|=A),y=(c&D)<<16|y&I),({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==$)e&=I;else if(t!==$){const{readOnly:r,hidden:n,system:s,directory:a,archive:i}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&I}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&W|p&I),{name:t,Je:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:b,uid:i,gid:o,unixMode:c,unixExtraFieldType:l,setuid:d,setgid:w,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=i);const c=((e,t,r)=>{const n=sa(e,r,"encodeText",Te);let s=n(t);if(s===$&&(s=Te(t)),wa(s)>D)throw new u(Ts);const a=r[Br]||"";let i=n(a);if(i===$&&(i=Te(a)),wa(i)>D)throw new u(Cs);const c=sa(e,r,pn,20);if(c>D)throw new u(Ws);const l=sa(e,r,tn,new o),d=sa(e,r,nn),w=sa(e,r,sn),p=sa(e,r,on,0),h=sa(e,r,Cn);let m,y;h||(m=sa(e,r,Un),y=sa(e,r,Ln));const x=sa(e,r,"encryptionStrength",3),b=sa(e,r,mn),g=sa(e,r,"extendedTimestamp",!0),F=sa(e,r,"keepOrder",!0),z=sa(e,r,Dn),S=sa(e,r,qn,!0),v=sa(e,r,"bufferedWrite"),E=sa(e,r,"createTempStream"),k=sa(e,r,"dataDescriptorSignature",!0),R=sa(e,r,Tn),U=sa(e,r,"useUnicodeFileNames",!0),L=sa(e,r,bn);if(!h&&L!==$&&0!==L&&8!==L)throw new u("Compression method not supported");let C=sa(e,r,"level"),T=sa(e,r,In),W=sa(e,r,"dataDescriptor");v&&W===$&&(W=!1),(W===$||b)&&(W=!0),C!==$&&6!=C&&(T=!1),T||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(C=0);const I=sa(e,r,un);if(!b&&(m!==$||y!==$)&&(1>x||x>3))throw new u(Ds);let q=ne;const N=r[Fn];if(N){let e=0,t=0;N.forEach(t=>e+=4+wa(t)),q=new f(e);const r=da(q);N.forEach((e,n)=>{if(n>D)throw new u(Is);if(wa(e)>D)throw new u(qs);ia(r,t,n),ia(r,t+2,wa(e)),la(q,e,t+4),t+=4+wa(e)})}return{comment:a,Je:{rawFilename:s,rawComment:i,version:c,lastModDate:l,lastAccessDate:d,creationDate:w,internalFileAttributes:p,passThrough:h,password:m,rawPassword:y,encryptionStrength:x,zipCrypto:b,extendedTimestamp:g,keepOrder:F,useWebWorkers:z,transferStreams:S,bufferedWrite:v,createTempStream:E,dataDescriptorSignature:k,signal:R,useUnicodeFileNames:U,compressionMethod:L,level:C,useCompressionStream:T,dataDescriptor:W,zip64:I,rawExtraField:q}}})(e,t,s),{comment:l}=c,d=s[Fn];let w;e.files.set(t,$);try{const o=await(async(e,t,{Je:r},n)=>{const{passThrough:s,zipCrypto:a,password:i,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:l,zip64:d,level:w,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new u(Ps);if(h=n[Qr],h===$)throw new u(Vs)}const m=!0===d,y=sa(e,n,fn),x=!!t&&(!!(i&&wa(i)||o&&wa(o))||s&&y);t||(w=0,f=0);const b=x?a?12:16+4*c:0;t&&(t=new jr(t),await Kr(t),s?(n.uncompressedSize=h,p=aa(h)+b):t.size===$?(l=!0,(d||d===$)&&(d=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=aa(h)+b));const g=m||h>=W,F=m||p>=W;if(g||F){if(!1===d)throw new u(Zs);d=!0}return d=d||!1,{reader:t,Je:{dataDescriptor:l,zip64:d,Ae:g,Xe:F,uncompressedSize:h,level:w,compressionMethod:f,encrypted:x}}})(e,n,c,s);({reader:n}=o);const{diskOffset:l,diskNumber:d}=e.writer,p=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:a,zip64:i,zipCrypto:o,useUnicodeFileNames:c,dataDescriptor:l,directory:d,rawExtraField:w,encryptionStrength:f,extendedTimestamp:p,passThrough:h,encrypted:m,Ae:y,Xe:x,uncompressedSize:b}=e;let{version:g,compressionMethod:F}=e;const z=!d&&(F===$?a===$||a>0:0!==F);let S;const v=h||!z,E=i&&(e.bufferedWrite||!l||!y&&!x||v),k=E||i&&l&&(y||x);if(i&&(y||x)){const e=20,t=Qs(e);if(t.uint16(1),t.uint16(e-4),S=t.array,E&&(t.Qe(b),v)){const e=m?o?12:16+4*f:0;t.Qe(h?0:b+e)}}else S=ne;let R,U,L,C,T;if(m&&!o){const e=Qs(wa(Gs)+2);e.uint16(39169),e.bytes(Gs),R=e.array,R[8]=f}else R=ne;if(p){const e=ta(r);if(ra(e)){const t=9+(n?4:0)+(s?4:0),r=Qs(t);C=1+(n?2:0)+(s?4:0),r.uint16(M),r.uint16(t-4),r.uint8(C),r.uint32(e),n&&r.uint32(na(ta(n))),s&&r.uint32(na(ta(s))),L=r.array}else L=ne;try{const e=ea(r),t=Qs(36);t.uint16(10),t.uint16(32),t._e(4),t.uint16(1),t.uint16(24),t.Qe(e),t.Qe(ea(n)||e),t.Qe(ea(s)||e),U=t.array}catch{U=ne}}else U=L=ne;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Ks||t===$&&r===$)if(n!=Ms||t===$&&r===$)T=ne;else{const e=Qs(8);e.uint16(30805),e.uint16(4),e.uint16((t===$?0:t)&D),e.uint16((r===$?0:r)&D),T=e.array}else{const e=Js(t),n=Js(r),s=3+e.length+n.length,a=Qs(4+s);a.uint16(30837),a.uint16(s),a.uint8(1),a.uint8(e.length),a.bytes(e),a.uint8(n.length),a.bytes(n),T=a.array}}catch{T=ne}F===$&&(F=z?8:0),i&&(g=g>45?g:45),m&&!o&&(g=g>51?g:51,R[9]=F,F=99);const W=k?wa(S):0,I=W+wa(R,L,U,T,w);if(I>D)throw new u(qs);const{Ke:N,Me:O,rawLastModDate:Z}=ua({version:g,bitFlag:fa(a,c,l,m,F),compressionMethod:F,uncompressedSize:b,lastModDate:_>r?_:r>Q?Q:r,rawFilename:t,Xe:x,Ae:y,extraFieldLength:I}),V=Qs(J+wa(t)+I),P=V.array,j=da(P);return V.uint32(q),V.bytes(N),V.bytes(t),k&&V.bytes(S),V.bytes(R),V.bytes(L),V.bytes(U),V.bytes(T),V.bytes(w),l&&(x||oa(j,18,0),y||oa(j,22,0)),{$e:P,et:j,Ke:N,Me:O,lastModDate:r,rawLastModDate:Z,encrypted:m,compressed:z,version:g,compressionMethod:F,Be:C,Ze:ne,tt:W,Pe:L,je:U,Ge:T,Ve:R,extraFieldLength:I}})(s=r.assign({},s,i.Je,c.Je,o.Je,{internalFileAttribute:c.Je.internalFileAttributes,externalFileAttribute:i.Je.externalFileAttributes,signature:s[gn],offset:e.offset-l,diskNumberStart:d})),h=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=ne,a=0,i=e?20:12;return r&&(i+=4),t&&(s=new f(i),n=da(s),r&&(a=4,oa(n,0,O))),{rt:s,nt:n,st:a}})(s),m=wa(p.$e,h.rt);w=await(async(e,t,n,s,i)=>{const{files:o,writer:c}=e,{keepOrder:l,dataDescriptor:d,signal:w}=i,{it:p}=s,h=e.options.usdz,m=e.Oe;let y,b,g,F,z,S,E,R={},U=0;o.set(t,R),e.Oe=R;try{let b;l&&(b=m&&m.lock,R.lock=new x(e=>g=e)),i.bufferedWrite||!l||e.ot||e.Ne||!d?(y=!0,e.Ne++,E=i.createTempStream?await i.createTempStream():new v($,$,{highWaterMark:ee}),E.size=0,await Kr(c)):(E=c,await L()),await Kr(E);const{diskOffset:T}=c;if(e.We){delete e.We;const t=new f(4);oa(da(t),0,N),await $s(c,t),e.offset+=4}h&&!y&&Bs(s,e.offset-T);const{$e:D}=p;y||(await b,await C());const q=c.diskNumber,O=_s(e,c);if(R.diskNumberStart=q,y||(z=!0,S=c.size,await $s(E,D)),R=await(async(e,t,{diskNumberStart:n,lock:s},i,o,c)=>{const{it:l,ct:d,lt:w}=i,{Ke:f,Me:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:x,version:b,compressionMethod:g,Ze:F,tt:z,Pe:S,Be:v,je:E,Ge:k,Ve:R}=l,{rt:U}=d,{rawFilename:L,lastAccessDate:C,creationDate:T,password:D,rawPassword:q,level:N,zip64:O,Ae:Z,Xe:V,zipCrypto:P,dataDescriptor:j,directory:G,executable:K,versionMadeBy:M,rawComment:X,rawExtraField:A,useWebWorkers:H,transferStreams:Y,onstart:B,onprogress:J,onend:Q,signal:_,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:we,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe,useCompressionStream:he,passThrough:me}=c,ye={lock:s,versionMadeBy:M,zip64:O,directory:!!G,executable:!!K,filenameUTF8:!0,rawFilename:L,commentUTF8:!0,rawComment:X,Ze:F,tt:z,Pe:S,je:E,Ge:k,Ve:R,rawExtraField:A,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ae,gid:ie,unixMode:oe,setuid:ce,setgid:de,sticky:we,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe};let{signature:xe,uncompressedSize:be}=c,ge=0;me||(be=0);const{writable:Fe}=t;if(e){const r=e.xe?e.xe({chunkSize:le(o)}):e.readable,n=e.size,s={options:{codecType:It,level:N,rawPassword:q,password:D,encryptionStrength:ee,zipCrypto:y&&P,passwordVerification:y&&P&&m>>8&I,signed:!me,compressed:x&&!me,encrypted:y&&!me,useWebWorkers:H,useCompressionStream:he,transferStreams:Y},config:o,ne:{signal:_,size:n,onstart:B,onprogress:J,onend:Q}};try{const e=await ar({readable:r,writable:Fe},s);if(ge=e.outputSize,t.size+=ge,me||(be=e.inputSize,xe=e.signature),!V&&ge>=W||!Z&&be>=W)throw new u(Zs)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,it:n,ct:s},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{Me:l,encrypted:d}=n,{nt:w,st:u}=s;d&&!o||e===$||(oa(l,10,e),c&&oa(w,u,e)),i?c&&(ca(w,u+4,a(t)),ca(w,u+12,a(r))):(oa(l,14,t),oa(l,18,r),c&&(oa(w,u+4,t),oa(w,u+8,r)))})({signature:xe,compressedSize:ge,uncompressedSize:be,it:l,ct:d},c),j&&await $s(t,U),r.assign(ye,{uncompressedSize:be,compressedSize:ge,lastModDate:h,rawLastModDate:m,creationDate:T,lastAccessDate:C,encrypted:y,zipCrypto:P,size:w+ge,compressionMethod:g,version:b,Ke:f,Me:p,signature:xe,Be:v,Ae:Z,Xe:V}),ye})(n,E,R,s,e.config,i),y||(z=!1),o.set(t,R),R.filename=t,y){if(await x.all([E.writable.getWriter().close(),b]),await L(),F=!0,S=c.size,await C(),R.diskNumberStart=c.diskNumber,R.offset=_s(e,c),h){const t=s.lt;Bs(s,e.offset-c.diskOffset),R.size+=s.lt-t}(({rawFilename:e,encrypted:t,zip64:r,tt:n,signature:s,compressedSize:i,uncompressedSize:o,Ae:c,Xe:l},d,{dataDescriptor:w})=>{if(w||(t||oa(d,14,s),l||oa(d,18,i),c||oa(d,22,o)),r&&n){const t=J+wa(e)+4;ca(d,t,a(o)),ca(d,t+8,a(i))}})(R,p.et,i),await $s(c,p.$e),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new k({async write(e){var t;await n.ready,await n.write(e),t=wa(e),U+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(E.readable,c,w),c.size+=E.size,F=!1}else R.diskNumberStart=q,R.offset=O;return e.offset+=R.size,R}catch(r){if(F||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-S,y&&(e.offset+=U)}throw o.delete(t),r}finally{if(y&&e.Ne--,g&&g(),b&&b(),y&&E&&E.dispose)try{await E.dispose()}catch{}}async function L(){e.ot=!0;const{dt:t}=e;e.dt=new x(t=>b=()=>{e.ot=!1,t()}),await t}async function C(){wa(p.$e)>c.availableSize&&(c.availableSize=0,await $s(c,ne))}})(e,t,n,{it:p,ct:h,lt:m},s)}catch(r){throw e.files.delete(t),r}return r.assign(w,{name:t,comment:l,extraField:d}),new Rn(w)})(s,e,t,n),i.add(l),await l}catch(t){throw d&&s.De.delete(e),t}finally{i.delete(l);const e=As.shift();e?e():Xs--}}remove(e){const{De:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=ne,r={}){const{qe:n,writer:s}=this,{writable:i}=s;if(wa(e)>D)throw new u(Ls);for(;n.size;)await x.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Ve:n,rawComment:s,je:a,Ge:i,rawExtraField:o,extendedTimestamp:c,Be:l,lastModDate:d,Ae:w,Xe:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=W,y=r.diskNumberStart>=D;let x,b;if(m||y||w||f){const e=4+(w?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=Qs(e);t.uint16(1),t.uint16(e-4),w&&t.Qe(p),f&&t.Qe(h),m&&t.Qe(r.offset),y&&t.uint32(r.diskNumberStart),x=t.array}else x=ne;r.Ze=x,r.He=m,r.Ye=y;const g=ta(d);if(c&&ra(g)){const e=Qs(9);e.uint16(M),e.uint16(5),e.uint8(l),e.uint32(g),b=e.array}else b=ne;r.Pe=b;const F=wa(x,n,a,i,b,o);if(F>D)throw new u(qs);t+=46+wa(e,s)+F}return t})(e.files),{wt:i,ut:o}=await(async(e,r,n)=>{const{files:s,writer:a}=e,i=new f(r);await Kr(a);let o=0,c=0,l=a.diskNumber,d=a.diskOffset;for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:w,Ze:u,Ve:f,Pe:p,je:h,Ge:m,rawExtraField:y,rawComment:x,versionMadeBy:b,Ke:g,Me:F,Ae:z,Xe:S,Ye:v,He:E,internalFileAttributes:k,externalFileAttributes:R,diskNumberStart:U,uncompressedSize:L,compressedSize:C}=r,T=wa(u,f,p,h,m,y),I=46+wa(w,x)+T;o+I-c>a.availableSize&&(await $s(a,i.slice(c,o)),c=o,a.availableSize=0,await $s(a,ne)),0==e&&(l=a.diskNumber,d=a.diskOffset),z||oa(F,18,L),S||oa(F,14,C),(E||v)&&45>r.version&&ia(F,0,45);const q=Qs(I);if(q.uint32(Z),q.uint16(b),q.bytes(g.subarray(0,24)),q.uint16(T),q.uint16(wa(x)),q.uint16(v?D:U),q.uint16(k),q.uint32(R),q.uint32(E?W:t),q.bytes(w),q.bytes(u),q.bytes(f),q.bytes(p),q.bytes(h),q.bytes(m),q.bytes(y),q.bytes(x),la(i,q.array,o),o+=I,n.onprogress)try{await n.onprogress(e+1,s.size,new Rn(r))}catch{}}return await $s(a,c?i.slice(c):i),{wt:l,ut:d}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{wt:i,ut:o}=n;let{ft:c}=n,l=e.files.size,d=i,w=e.offset-o-(i?e.Ie:0),f=s.diskNumber;s.availableSize<G&&f++;let p=sa(e,r,un);if(!(W>w&&W>c&&D>l&&D>f)){if(!1===p)throw new u(Zs);p=!0}const h=wa(t);if(h>D)throw new u(Ls);const m=Qs(p?98:G);wa(m.array)+h>s.availableSize&&(s.availableSize=0,await $s(s,ne)),f=s.diskNumber,p&&(m.uint32(P),m.Qe(44),m.uint16(45),m.uint16(45),m.uint32(f),m.uint32(d),m.Qe(l),m.Qe(l),m.Qe(c),m.Qe(w),m.uint32(j),m.uint32(f),m.Qe(a(e.offset)+a(c)-a(s.diskOffset)-a(s.diskNumber?e.Ie:0)),m.uint32(f+1),sa(e,r,"supportZip64SplitFile",!0)&&(f=D,d=D),l=D,w=W,c=W),m.uint32(V),m.uint16(f),m.uint16(d),m.uint16(l),m.uint16(l),m.uint32(c),m.uint32(w),m.uint16(h),await $s(s,m.array),h&&await $s(s,t)})(e,r,n,{wt:i,ut:o,ft:s})})(this,e,r),sa(this,r,Nn)||await i.getWriter().close(),s.getData?s.getData():i}}function Ys(e,t,r){e.qe.add(t),t.catch(e=>{try{r(e)}catch{}})}function Bs(e,t){const{it:r}=e;let{$e:n,extraFieldLength:s}=r,a=64-(t+wa(n))%64;4>a&&(a+=64);const i=new f(a),o=da(i);ia(o,0,6534),ia(o,2,a-4);const c=n;r.$e=n=new f(wa(c)+a),la(n,c),la(n,i,wa(c));const l=da(n);ia(l,28,s+a),r.et=l,e.lt+=a}function Js(e){if(e===$)return ne;{const t=new f(4);da(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Qs(e){const t=new f(e),r=da(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{ia(r,n,e),n+=2},uint32:e=>{oa(r,n,e),n+=4},Qe:e=>{ca(r,n,a(e)),n+=8},bytes:e=>{la(t,e,n),n+=wa(e)},_e:e=>n+=e}}function _s(e,t){return e.offset-t.diskOffset-(t.diskNumber?e.Ie:0)}async function $s(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=wa(t),await n.write(t)}finally{n.releaseLock()}}function ea(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function ta(e){return i.floor(e.getTime()/1e3)}function ra(e){return e>=Ns&&Os>=e}function na(e){return i.min(Os,i.max(Ns,e))}function sa(e,t,r,n){const s=t[r]===$?e.options[r]:t[r];return s===$?n:s}function aa(e){return e+5*(i.floor(e/16383)+1)}function ia(e,t,r){e.setUint16(t,r,!0)}function oa(e,t,r){e.setUint32(t,r,!0)}function ca(e,t,r){e.setBigUint64(t,r,!0)}function la(e,t,r){e.set(t,r)}function da(e){return new m(e.buffer,e.byteOffset,e.byteLength)}function wa(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function ua({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:a,rawLastModDate:i,rawFilename:o,Xe:c,Ae:l,extraFieldLength:d}){const w=Qs(26),u=w.array,f=da(u);if(w.uint16(e),w.uint16(t),w.uint16(r),i===$){const e=new h(1),t=da(e);ia(t,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),ia(t,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate()),i=e[0]}return w.uint32(i),w._e(4),c||s!==$?w.uint32(c?W:s):w._e(4),l||n!==$?w.uint32(l?W:n):w._e(4),w.uint16(wa(o)),w.uint16(d),{Ke:u,Me:f,rawLastModDate:i}}function fa(e,t,r,n,s){let a=0;return t&&(a|=X),r&&(a|=8),8!=s&&9!=s||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),n&&(a|=1),a}const pa=1048576,ha=".zip.js-temp",ma=1048576,ya=1048576,xa=".zip.js-temp";try{de({baseURI:void 0===F&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===F?location.href:T&&"SCRIPT"===T.tagName.toUpperCase()&&T.src||new w("zip-legacy.min.js",F.baseURI).href})}catch{}de({workerURI:e=>{const t="text/javascript",r=(e=>{let t=0,r=0,n=0,s=new f(1024),a=0,i=0;for(;!i;){i=c(1);const e=c(2);if(0==e)l();else if(1==e)d(xe(me),xe(ye));else{if(2!=e)throw u("invalid deflate block type");d(...w())}}return s.subarray(0,a);function o(){if(t>=e.length)throw u("unexpected end of deflate data");return e[t++]}function c(e){for(;e>n;)r|=o()<<n,n+=8;const t=r&(1<<e)-1;return r>>>=e,n-=e,t}function l(){r=0,n=0;const e=o()|o()<<8;t+=2,h(a+e);for(let t=0;e>t;t++)s[a++]=o()}function d(e,t){let r=p(e);for(;256!=r;){if(256>r)h(a+1),s[a++]=r;else{const e=r-257,n=we[e]+c(ue[e]),i=p(t),o=fe[i]+c(pe[i]);h(a+n);const l=a-o;for(let e=0;n>e;e++)s[a++]=s[l+e]}r=p(e)}}function w(){const e=c(5)+257,t=c(5)+1,r=c(4)+4,n=new f(19);for(let e=0;r>e;e++)n[he[e]]=c(3);const s=xe(n),a=new f(e+t);let i=0;for(;i<a.length;){const e=p(s);if(16>e)a[i++]=e;else if(16==e){const e=a[i-1];let t=c(2)+3;for(;t--;)a[i++]=e}else i+=17==e?c(3)+3:c(7)+11}return[xe(a.subarray(0,e)),xe(a.subarray(e))]}function p(e){const{i:t,symbols:r}=e;let n=0,s=0,a=0;for(let e=1;15>=e;e++){n|=c(1);const i=t[e];if(i>n-s)return r[a+(n-s)];a+=i,s=s+i<<1,n<<=1}throw u("invalid huffman code")}function h(e){if(s.length<e){let t=2*s.length;for(;e>t;)t*=2;const r=new f(t);r.set(s.subarray(0,a)),s=r}}})((e=>{const t=(e=(e+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let n=0;t>n;n+=4){const t=be.indexOf(e[n])<<18|be.indexOf(e[n+1])<<12|(63&be.indexOf(e[n+2]))<<6|63&be.indexOf(e[n+3]);r.push(t>>16&255),"="!==e[n+2]&&r.push(t>>8&255),"="!==e[n+3]&&r.push(255&t)}return new f(r)})("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"));if(e){const e=new y([r],{type:t});return w.createObjectURL(e)}return"data:"+t+";base64,"+(e=>{let t="";const r=e.length;let n=0;for(;r>n+2;n+=3){const r=e[n]<<16|e[n+1]<<8|e[n+2];t+=be[r>>18&63]+be[r>>12&63]+be[r>>6&63]+be[63&r]}const s=r-n;if(1===s){const r=e[n]<<16;t+=be[r>>18&63]+be[r>>12&63]+"=="}else if(2===s){const r=e[n]<<16|e[n+1]<<8;t+=be[r>>18&63]+be[r>>12&63]+be[r>>6&63]+"="}return t})(r)}}),e.BlobReader=Sr,e.BlobWriter=vr,e.Data64URIReader=class extends Fr{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,ht:n,size:i.floor(.75*(t-n))})}readUint8Array(e,t){const{ht:r,dataURI:n}=this,s=new f(t),a=4*i.floor(e/3),o=atob(n.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),l++;return l<s.length?s.subarray(0,l):s}},e.Data64URIWriter=class extends zr{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=S(s):t.pending=s+t.pending}getData(){return this.data+S(this.pending)}},e.ERR_AMBIGUOUS_ARCHIVE=_n,e.ERR_BAD_FORMAT=jn,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Mn,e.ERR_DUPLICATED_NAME=Us,e.ERR_ENCRYPTED=Hn,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Kn,e.ERR_EOCDR_NOT_FOUND=Gn,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=An,e.ERR_HTTP_RANGE=ur,e.ERR_INVALID_COMMENT=Ls,e.ERR_INVALID_COMPRESSED_DATA=Et,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ds,e.ERR_INVALID_ENTRY_COMMENT=Cs,e.ERR_INVALID_ENTRY_NAME=Ts,e.ERR_INVALID_EXTRAFIELD_DATA=qs,e.ERR_INVALID_EXTRAFIELD_TYPE=Is,e.ERR_INVALID_PASSWORD=Oe,e.ERR_INVALID_SIGNATURE=Ze,e.ERR_INVALID_UNCOMPRESSED_SIZE=vt,e.ERR_INVALID_VERSION=Ws,e.ERR_ITERATOR_COMPLETED_TOO_SOON=fr,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Xn,e.ERR_OVERLAPPING_ENTRY=Qn,e.ERR_SPLIT_ZIP_FILE=Jn,e.ERR_UNDEFINED_READER=Ps,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Vs,e.ERR_UNSUPPORTED_COMPRESSION=Bn,e.ERR_UNSUPPORTED_ENCRYPTION=Yn,e.ERR_UNSUPPORTED_FORMAT=Zs,e.ERR_WRITER_NOT_INITIALIZED=pr,e.ERR_ZIP_NOT_EMPTY=js,e.HttpRangeReader=class extends Zr{constructor(e,t={}){super(e,r.assign({},t,{useRangeHeader:!0}))}},e.HttpReader=Zr,e.Reader=Fr,e.SplitDataReader=Vr,e.SplitDataWriter=Pr,e.TextReader=class extends Sr{constructor(e){super(new y([e],{type:"text/plain"}))}},e.TextWriter=class extends vr{constructor(e){super(e),r.assign(this,{encoding:e,yt:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,yt:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new x((s,a)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(n,e)})}}},e.Uint8ArrayReader=class extends Fr{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends zr{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=zr,e.ZipReader=ns,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new v,n=new ns(t,e).getEntriesGenerator();this.readable=new E({async pull(e){const{done:t,value:r}=await n.next();if(t)return e.close();const s={...r,readable:(()=>{const{readable:e,writable:t}=new v;if(r.getData)return(async()=>{try{await r.getData(t)}catch(e){try{await t.abort(e)}catch{}}})(),e})()};delete s.getData,e.enqueue(s)}}),this.writable=r}},e.ZipWriter=Hs,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new v;this.readable=t,this.zipWriter=new Hs(r,e),this.qe=new l}transform(e){const t=this.zipWriter;let r;const{readable:n,writable:s}=new v({start(e){r=e},flush:()=>{(async()=>{try{await t.close()}catch(e){try{await t.writer.writable.abort(e)}catch{}}})()}});return Ys(this,this.zipWriter.add(e,n),e=>r.error(e)),{readable:this.readable,writable:s}}writable(e){let t;const{readable:r,writable:n}=new v({start(e){t=e}});return Ys(this,this.zipWriter.add(e,r),e=>t.error(e)),n}async close(e,r={}){return await x.all(t.from(this.qe)),this.zipWriter.close(e,r)}},e.configure=de,e.createBlobTempStream=(e={})=>{const{thresholdBytes:t=ma}=e;return()=>{const e=[];let r,n,s,a=0,i=!1;const o=new k({async write(s){i?await r.write(s):(e.push(s),a+=s.length,a>t&&await(async()=>{const t=new v;n=new d(t.readable).blob(),r=t.writable.getWriter(),i=!0;for(const t of e)await r.write(t);e.length=0})())},async close(){r&&(await r.close(),r=null)}});let c=0;return{writable:o,readable:new E({async pull(t){if(i){if(!s){const e=await n;s=e.stream().getReader()}const{value:e,done:r}=await s.read();r?t.close():t.enqueue(e)}else c<e.length?t.enqueue(e[c++]):t.close()},async cancel(e){s&&await s.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(r){try{await r.abort()}catch{}r=null}n&&(n.catch(()=>{}),n=null),e.length=0}}}},e.createOPFSTempStream=(e={})=>{const{thresholdBytes:t=pa,directoryName:r=ha,getDirectory:n=()=>L.storage.getDirectory()}=e;let s;function a(){return s||(s=x.resolve(n()).then(e=>e.getDirectoryHandle(r,{create:!0}))),s}return()=>{const e=[];let r,n,s,i,o=0,c=!1;const l=new k({async write(i){c?await s.write(i):(e.push(i),o+=i.length,o>t&&await(async()=>{const t=await a();r=z.randomUUID(),n=await t.getFileHandle(r,{create:!0}),s=(await n.createWritable()).getWriter(),c=!0;for(const t of e)await s.write(t);e.length=0})())},async close(){s&&(await s.close(),s=null)}});let d=0;return{writable:l,readable:new E({async pull(t){if(c){if(!i){const e=await n.getFile();i=e.stream().getReader()}const{value:e,done:r}=await i.read();r?t.close():t.enqueue(e)}else d<e.length?t.enqueue(e[d++]):t.close()},async cancel(e){i&&await i.cancel(e)}},{highWaterMark:0}),dispose:async()=>{if(s){try{await s.close()}catch{}s=null}if(r){try{const e=await a();await e.removeEntry(r)}catch{}n=r=null}e.length=0}}}},e.createSyncAccessHandleTempStream=(e={})=>{const{thresholdBytes:t=ya,directoryName:r=xa,getDirectory:n}=e;if(!(n||"undefined"!=typeof FileSystemFileHandle&&FileSystemFileHandle.prototype.xt))throw new u("createSyncAccessHandle is only available in dedicated workers");const s=n||(()=>L.storage.getDirectory());let a;function o(){return a||(a=x.resolve(s()).then(e=>e.getDirectoryHandle(r,{create:!0}))),a}return()=>{const e=[];let r,n,s=0,a=!1,c=0,l=0;const d=new k({async write(i){a?(n.write(i,{at:c}),c+=i.length):(e.push(i),s+=i.length,s>t&&await(async()=>{const t=await o();r=z.randomUUID();const s=await t.getFileHandle(r,{create:!0});n=await s.xt(),a=!0;for(const t of e)n.write(t,{at:c}),c+=t.length;e.length=0})())},close(){n&&n.flush()}});let w=0;return{writable:d,readable:new E({pull(t){if(a){const e=c-l;if(0>=e)return void t.close();const r=new f(i.min(524288,e)),s=n.read(r,{at:l});s?(l+=s,t.enqueue(r.subarray(0,s))):t.close()}else w<e.length?t.enqueue(e[w++]):t.close()}},{highWaterMark:0}),dispose:async()=>{if(n){try{n.close()}catch{}n=null}if(r){try{const e=await o();await e.removeEntry(r)}catch{}r=null}e.length=0}}}},e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await x.allSettled(er.map(e=>(dr(e),e.terminate())))}});
Binary file