@zip.js/zip.js 2.8.11 → 2.8.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -7
- package/dist/zip-core.js +18 -14
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +18 -14
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +18 -14
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +18 -14
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +18 -14
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +18 -14
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +18 -14
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +18 -14
- package/index-native.min.js +1 -1
- package/index.cjs +18 -14
- package/index.d.ts +13 -2
- package/index.min.js +1 -1
- package/lib/core/zip-writer.js +18 -14
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -19,8 +19,15 @@ See here for more info: https://gildas-lormeau.github.io/zip.js/
|
|
|
19
19
|
## Hello world
|
|
20
20
|
|
|
21
21
|
```js
|
|
22
|
-
import {
|
|
23
|
-
|
|
22
|
+
import {
|
|
23
|
+
BlobReader,
|
|
24
|
+
BlobWriter,
|
|
25
|
+
TextReader,
|
|
26
|
+
TextWriter,
|
|
27
|
+
ZipReader,
|
|
28
|
+
ZipWriter
|
|
29
|
+
} from "@zip-js/zip-js";
|
|
30
|
+
// Prefix "@zip-js/zip-js" with "jsr:" for Deno
|
|
24
31
|
|
|
25
32
|
// ----
|
|
26
33
|
// Write the zip file
|
|
@@ -65,13 +72,17 @@ await zipReader.close();
|
|
|
65
72
|
console.log(helloWorldText);
|
|
66
73
|
```
|
|
67
74
|
|
|
68
|
-
Run the code on JSFiddle: https://jsfiddle.net/
|
|
75
|
+
Run the code on JSFiddle: https://jsfiddle.net/tm9fhvab/
|
|
69
76
|
|
|
70
77
|
## Hello world with Streams
|
|
71
78
|
|
|
72
79
|
```js
|
|
73
|
-
import {
|
|
74
|
-
|
|
80
|
+
import {
|
|
81
|
+
BlobReader,
|
|
82
|
+
ZipReader,
|
|
83
|
+
ZipWriter
|
|
84
|
+
} from "@zip-js/zip-js";
|
|
85
|
+
// Prefix "@zip-js/zip-js" with "jsr:" for Deno
|
|
75
86
|
|
|
76
87
|
// ----
|
|
77
88
|
// Write the zip file
|
|
@@ -123,7 +134,7 @@ const helloWorldText = await helloWorldTextPromise;
|
|
|
123
134
|
console.log(helloWorldText);
|
|
124
135
|
```
|
|
125
136
|
|
|
126
|
-
Run the code on JSFiddle: https://jsfiddle.net/
|
|
137
|
+
Run the code on JSFiddle: https://jsfiddle.net/aw3d6f4o/
|
|
127
138
|
|
|
128
139
|
## Adding concurrently multiple entries in a zip file
|
|
129
140
|
|
|
@@ -133,7 +144,8 @@ import {
|
|
|
133
144
|
HttpReader,
|
|
134
145
|
TextReader,
|
|
135
146
|
ZipWriter,
|
|
136
|
-
} from "
|
|
147
|
+
} from "@zip-js/zip-js";
|
|
148
|
+
// Prefix "@zip-js/zip-js" with "jsr:" for Deno
|
|
137
149
|
|
|
138
150
|
const README_URL = "https://unpkg.com/@zip.js/zip.js/README.md";
|
|
139
151
|
getZipFileBlob()
|
package/dist/zip-core.js
CHANGED
|
@@ -5189,15 +5189,19 @@
|
|
|
5189
5189
|
let { version, compressionMethod } = options;
|
|
5190
5190
|
const compressed = !directory && (level > 0 || (level === UNDEFINED_VALUE && compressionMethod !== 0));
|
|
5191
5191
|
let rawExtraFieldZip64;
|
|
5192
|
+
let rawLocalExtraFieldZip64;
|
|
5192
5193
|
const uncompressedFile = passThrough || !compressed;
|
|
5193
5194
|
const zip64ExtraFieldComplete = zip64 && (options.bufferedWrite || ((!zip64UncompressedSize && !zip64CompressedSize) || uncompressedFile));
|
|
5194
5195
|
if (zip64) {
|
|
5195
5196
|
let rawExtraFieldZip64Length = 4;
|
|
5197
|
+
let rawLocalExtraFieldZip64Length = 4;
|
|
5196
5198
|
if (zip64UncompressedSize) {
|
|
5197
5199
|
rawExtraFieldZip64Length += 8;
|
|
5200
|
+
rawLocalExtraFieldZip64Length += 8;
|
|
5198
5201
|
}
|
|
5199
5202
|
if (zip64CompressedSize) {
|
|
5200
5203
|
rawExtraFieldZip64Length += 8;
|
|
5204
|
+
rawLocalExtraFieldZip64Length += 8;
|
|
5201
5205
|
}
|
|
5202
5206
|
if (zip64Offset) {
|
|
5203
5207
|
rawExtraFieldZip64Length += 8;
|
|
@@ -5207,18 +5211,28 @@
|
|
|
5207
5211
|
}
|
|
5208
5212
|
rawExtraFieldZip64 = new Uint8Array(rawExtraFieldZip64Length);
|
|
5209
5213
|
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5214
|
+
rawLocalExtraFieldZip64 = new Uint8Array(rawLocalExtraFieldZip64Length);
|
|
5215
|
+
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5210
5216
|
setUint16(rawExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5211
5217
|
setUint16(rawExtraFieldZip64View, 2, getLength(rawExtraFieldZip64) - 4);
|
|
5218
|
+
setUint16(rawLocalExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5219
|
+
setUint16(rawLocalExtraFieldZip64View, 2, getLength(rawLocalExtraFieldZip64) - 4);
|
|
5212
5220
|
if (zip64ExtraFieldComplete) {
|
|
5213
5221
|
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5222
|
+
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5214
5223
|
let rawExtraFieldZip64Offset = 4;
|
|
5224
|
+
let rawLocalExtraFieldZip64Offset = 4;
|
|
5215
5225
|
if (zip64UncompressedSize) {
|
|
5216
5226
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5217
5227
|
rawExtraFieldZip64Offset += 8;
|
|
5228
|
+
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5229
|
+
rawLocalExtraFieldZip64Offset += 8;
|
|
5218
5230
|
}
|
|
5219
5231
|
if (zip64CompressedSize && uncompressedFile) {
|
|
5220
5232
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5221
5233
|
rawExtraFieldZip64Offset += 8;
|
|
5234
|
+
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5235
|
+
rawLocalExtraFieldZip64Offset += 8;
|
|
5222
5236
|
}
|
|
5223
5237
|
if (zip64Offset) {
|
|
5224
5238
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset));
|
|
@@ -5231,6 +5245,7 @@
|
|
|
5231
5245
|
}
|
|
5232
5246
|
} else {
|
|
5233
5247
|
rawExtraFieldZip64 = new Uint8Array();
|
|
5248
|
+
rawLocalExtraFieldZip64 = new Uint8Array();
|
|
5234
5249
|
}
|
|
5235
5250
|
let rawExtraFieldAES;
|
|
5236
5251
|
if (encrypted && !zipCrypto) {
|
|
@@ -5333,7 +5348,7 @@
|
|
|
5333
5348
|
rawExtraFieldAES[9] = compressionMethod;
|
|
5334
5349
|
compressionMethod = COMPRESSION_METHOD_AES;
|
|
5335
5350
|
}
|
|
5336
|
-
const localExtraFieldZip64Length = zip64ExtraFieldComplete ? getLength(
|
|
5351
|
+
const localExtraFieldZip64Length = zip64ExtraFieldComplete ? getLength(rawLocalExtraFieldZip64) : 0;
|
|
5337
5352
|
const extraFieldLength = localExtraFieldZip64Length + getLength(rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField);
|
|
5338
5353
|
const {
|
|
5339
5354
|
headerArray,
|
|
@@ -5358,7 +5373,7 @@
|
|
|
5358
5373
|
arraySet(localHeaderArray, rawFilename, localHeaderOffset);
|
|
5359
5374
|
localHeaderOffset += getLength(rawFilename);
|
|
5360
5375
|
if (zip64ExtraFieldComplete) {
|
|
5361
|
-
arraySet(localHeaderArray,
|
|
5376
|
+
arraySet(localHeaderArray, rawLocalExtraFieldZip64, localHeaderOffset);
|
|
5362
5377
|
}
|
|
5363
5378
|
localHeaderOffset += localExtraFieldZip64Length;
|
|
5364
5379
|
arraySet(localHeaderArray, rawExtraFieldAES, localHeaderOffset);
|
|
@@ -5531,12 +5546,8 @@
|
|
|
5531
5546
|
signature,
|
|
5532
5547
|
compressedSize,
|
|
5533
5548
|
uncompressedSize,
|
|
5534
|
-
offset,
|
|
5535
|
-
diskNumberStart,
|
|
5536
5549
|
zip64UncompressedSize,
|
|
5537
|
-
zip64CompressedSize
|
|
5538
|
-
zip64Offset,
|
|
5539
|
-
zip64DiskNumberStart
|
|
5550
|
+
zip64CompressedSize
|
|
5540
5551
|
}, localHeaderView, { dataDescriptor }) {
|
|
5541
5552
|
if (!dataDescriptor) {
|
|
5542
5553
|
if (!encrypted) {
|
|
@@ -5558,13 +5569,6 @@
|
|
|
5558
5569
|
setBigUint64(localHeaderView, localHeaderOffset, BigInt(compressedSize));
|
|
5559
5570
|
localHeaderOffset += 8;
|
|
5560
5571
|
}
|
|
5561
|
-
if (zip64Offset) {
|
|
5562
|
-
setBigUint64(localHeaderView, localHeaderOffset, BigInt(offset));
|
|
5563
|
-
localHeaderOffset += 8;
|
|
5564
|
-
}
|
|
5565
|
-
if (zip64DiskNumberStart) {
|
|
5566
|
-
setUint32(localHeaderView, localHeaderOffset, diskNumberStart);
|
|
5567
|
-
}
|
|
5568
5572
|
}
|
|
5569
5573
|
}
|
|
5570
5574
|
}
|
package/dist/zip-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:E,TransformStream:F,ReadableStream:R,WritableStream:k,CompressionStream:D,DecompressionStream:_,navigator:A,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var U=void 0!==S?S.currentScript:null;const v=4294967295,C=65535,N=255,I=67324752,O=134695760,W=O,M=33639248,L=101010256,P=101075792,Z=117853008,H=22,V=21589,B=2048,q=16384,K=2048,Y=1024,j=512,G="/",X=30,J=new o(2107,11,31),Q=new o(1980,0,1),$=void 0,ee="undefined",te="function";let re=2;try{typeof A!=ee&&A.hardwareConcurrency&&(re=A.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof _!=ee&&_},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,useCompressionStream:a,useWebWorkers:i,CompressionStream:o,DecompressionStream:c,CompressionStreamZlib:l,DecompressionStreamZlib:d,workerURI:u,wasmURI:p}=e;ce("baseURI",t),ce("wasmURI",p),ce("workerURI",u),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("useCompressionStream",a),ce("useWebWorkers",i),ce("CompressionStream",o),ce("DecompressionStream",c),ce("CompressionStreamZlib",l),ce("DecompressionStreamZlib",d)}function ce(e,t){t!==$&&(ne[e]=t)}const le=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;le[e]=t}class de{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;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 pe(e){if(typeof b==ee){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 fe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=fe.getPartial(r);return 32===s?e.concat(t):fe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+fe.getPartial(r)},clamp(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]=fe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=fe.getPartial(n);return s.push(fe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=fe.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(fe.partial(8*(3&r),s)),t}}},he=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=we.utf8String.toBits(e));const r=t._buffer=fe.concat(t._buffer,e),s=t._length,n=t._length=s+fe.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=fe.concat(t,[fe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},me={getRandomValues(e){const t=new h(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},ge={importKey:e=>new ge.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const w=fe;for(t=we.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(w.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;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ye=typeof x!=ee&&typeof x.getRandomValues==te,be="Invalid password",ze="Invalid signature",Se="zipjs-abort-check-password";function xe(e){return ye?x.getRandomValues(e):me.getRandomValues(e)}const Ee=16,Fe={name:"PBKDF2"},Re=r.assign({hash:{name:"HMAC"}},Fe),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Fe),De=["deriveBits"],_e=[8,12,16],Ae=[16,24,32],Te=10,Ue=[0,0,0,0],ve=typeof x!=ee,Ce=ve&&x.subtle,Ne=ve&&typeof Ce!=ee,Ie=we.bytes,Oe=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[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,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,w,h=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=f,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},We=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=fe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return fe.clamp(t,n)}},Me=ge.hmacSha1;let Le=ve&&Ne&&typeof Ce.importKey==te,Pe=ve&&Ne&&typeof Ce.deriveBits==te;class Ze extends F{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Be(e,t,r,Ye(s,0,_e[t])),a=Ye(s,_e[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(be)})(r,n,s,Ye(e,0,_e[n]+2)),e=Ye(e,_e[n]+2),a?t.error(new p(Se)):i()):await o;const c=new f(e.length-Te-(e.length-Te)%Ee);t.enqueue(Ve(r,e,c,0,Te,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=Ye(n,0,n.length-Te),o=Ye(n,n.length-Te);let c=new f;if(i.length){const e=Ge(Ie,i);s.update(e);const t=r.update(e);c=je(Ie,t)}if(t){const e=Ye(je(Ie,s.digest()),0,Te);for(let t=0;Te>t;t++)if(e[t]!=o[t])throw new p(ze)}e.enqueue(c)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=xe(new f(_e[t]));return Ke(s,await Be(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%Ee);c.set(o,0),t.enqueue(Ve(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Ge(Ie,s));r.update(e),i=je(Ie,e)}n.signature=je(Ie,r.digest()).slice(0,Te),e.enqueue(Ke(i,n.signature))}}}),n=this}}function Ve(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=Ke(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%Ee)),d=0;l-Ee>=d;d+=Ee){const e=Ge(Ie,Ye(t,d,d+Ee));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(je(Ie,n),d+s)}return e.pending=Ye(t,d),r}async function Be(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!Le)return ge.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return Le=!1,ge.importKey(t)}})(0,n,Re,0,De),o=await(async(e,t,r)=>{if(!Pe)return ge.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Pe=!1,ge.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new f(o),l=Ge(Ie,Ye(c,0,Ae[s])),d=Ge(Ie,Ye(c,Ae[s],2*Ae[s])),u=Ye(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new We(new Oe(l),t.from(Ue)),hmac:new Me(d)}),u}function qe(e,t){return t===$?pe(e):t}function Ke(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 Ye(e,t,r){return e.subarray(t,r)}function je(e,t){return e.fromBits(t)}function Ge(e,t){return e.toBits(t)}class Xe extends F{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;if(r.password){const t=Qe(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(be);e=e.subarray(12)}s?t.error(new p(Se)):t.enqueue(Qe(r,e))}})}}class Je extends F{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=xe(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set($e(r,t),0),n=12}else s=new f(e.length),n=0;s.set($e(r,e),n),t.enqueue(s)}})}}function Qe(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,r[s]);return r}function $e(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,t[s]);return r}function et(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new de(s[0]),crcKey2:new de(s[2])});for(let r=0;r<t.length;r++)tt(e,t.charCodeAt(r))}function tt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=nt(i.imul(nt(s+st(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function rt(e){const t=2|e.keys[2];return st(i.imul(t,1^t)>>>8)}function st(e){return 255&e}function nt(e){return 4294967295&e}const at="Invalid uncompressed size";class it extends F{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new ue,f=dt(f,u)),n&&(f=lt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=dt(f,new Je(e)):(p=new He(e),f=dt(f,p))),ct(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,w=super.readable;a&&(n?w=dt(w,new Xe(e)):(f=new Ze(e),w=dt(w,f))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(ze)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=dt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=dt(e,new n(o,r));else{if(!a)throw s;e=dt(e,new a(o,r))}}return e}function dt(e,t){return e.pipeThrough(t)}const ut="data",pt="close",ft="deflate",wt="inflate";class ht extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(ft)?a=it:n.startsWith(wt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==$&&s.outputSize>e.outputSize))throw new p(at)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class mt extends F{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let gt=typeof T!=ee;class yt{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new mt(a.chunkSize)).pipeThrough(new bt(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),(o&>?xt:St)(e,a)}}class bt extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await zt(e,r)},async transform(e,s){n+=e.length,t&&await zt(t,n,r),s.enqueue(e)},async flush(){s&&await zt(s,n)}})}}async function zt(e,...t){try{await e(...t)}catch{}}function St(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new ht(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function xt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=((e,t,s)=>{const n={type:"module"};let a,i;if(typeof e==te&&(e=e()),e.startsWith("data:")||e.startsWith("blob:"))try{i=new T(e)}catch{i=new T(e,n)}else{try{a=new u(e,t)}catch{a=e}i=new T(a,n)}return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:w}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),h(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();Ft({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new f(n)),Ft({type:"ack",messageId:a},t)),s==pt&&h(null,i)}}catch(o){Ft({type:pt,messageId:a},t),h(o)}function h(e,t){e?u(e):d(t),l&&l.releaseLock(),w()}})(e,s)),i})(e.workerURI,s,e)}catch{return gt=!1,St(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new k({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=Ft({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}let Et=!0;function Ft(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&Et?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{Et=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let Rt=[];const kt=[];let Dt=0;async function _t(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===$;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===$&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:$,r.useCompressionStream=o||o===$&&s.useCompressionStream,(await(async()=>{const r=Rt.find(e=>!e.busy);if(r)return At(r),new yt(r,e,t,w);if(Rt.length<p){const r={indexWorker:Dt};return Dt++,Rt.push(r),new yt(r,e,t,w)}return new y(r=>kt.push({resolve:r,stream:e,workerOptions:t}))})()).run();function w(e){if(kt.length){const[{resolve:t,stream:r,workerOptions:s}]=kt.splice(0,1);t(new yt(e,r,s,w))}else e.worker?(At(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{Rt=Rt.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):Rt=Rt.filter(t=>t!=e)}}function At(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Tt="HTTP error ",Ut="HTTP Range not supported",vt="Range",Ct="GET",Nt="bytes",It=65536,Ot="writable";class Wt{constructor(){this.size=0}init(){this.initialized=!0}}class Mt extends Wt{get readable(){const e=this,{chunkSize:t=It}=e,r=new R({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===$?t:i.min(t,a-c),d=await or(e,n+c,l,o);s.enqueue(d),c+t>a||a===$&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class Lt extends Wt{constructor(){super();const e=this,t=new k({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Ot,{get:()=>t})}writeUint8Array(){}}class Pt extends Mt{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class Zt extends Wt{constructor(e){super();const t=new F,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,Ot,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class Ht extends Mt{constructor(e,t){super(),Bt(this,e,t)}async init(){await qt(this,$t,Gt),super.init()}readUint8Array(e,t){return Kt(this,e,t,$t,Gt)}}class Vt extends Mt{constructor(e,t){super(),Bt(this,e,t)}async init(){await qt(this,er,Xt),super.init()}readUint8Array(e,t){return Kt(this,e,t,er,Xt)}}function Bt(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function qt(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Ct,e,Yt(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Nt))throw new p(Ut);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===$?await Qt(e,t,r):e.size=a}}else await Qt(e,t,r)}async function Kt(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(Ct,e,Yt(e,t,r));if(206!=n.status)throw new p(Ut);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function Yt(e,t=0,s=1){return r.assign({},jt(e),{[vt]:Nt+"="+(0>t?t:t+"-"+(t+s-1))})}function jt({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Gt(e){await Jt(e,$t)}async function Xt(e){await Jt(e,er)}async function Jt(e,t){const r=await t(Ct,e,jt(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Qt(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,jt(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function $t(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(Ut):new p(Tt+(a.statusText||a.status))}function er(e,{url:t},s){return new y((n,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)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(Ut):new p(Tt+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class tr extends Mt{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Vt(e,t):new Ht(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 rr extends Mt{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await or(l,c,i);a.set(o,0);const d=await s.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 or(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class sr extends Wt{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new k({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await ir(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,Ot,{get:()=>o})}}class nr{constructor(e){return t.isArray(e)&&(e=new rr(e)),e instanceof R&&(e={readable:e}),e}}class ar{constructor(e){return e.writable===$&&typeof e.next==te&&(e=new sr(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof sr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function ir(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function or(e,t,r,s){return e.readUint8Array(t,r,s)}const cr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function lr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=cr[e[r]];return t}})(e):new z(t).decode(e)}const dr="filename",ur="rawFilename",pr="comment",fr="rawComment",wr="uncompressedSize",hr="compressedSize",mr="offset",gr="diskNumberStart",yr="lastModDate",br="rawLastModDate",zr="lastAccessDate",Sr="creationDate",xr="rawCreationDate",Er="internalFileAttributes",Fr="externalFileAttributes",Rr="msdosAttributesRaw",kr="msdosAttributes",Dr="msDosCompatible",_r="zip64",Ar="encrypted",Tr="version",Ur="versionMadeBy",vr="zipCrypto",Cr="directory",Nr="executable",Ir="compressionMethod",Or="signature",Wr="extraField",Mr="unixMode",Lr="setuid",Pr="setgid",Zr="sticky",Hr=[dr,ur,wr,hr,yr,br,pr,fr,zr,Sr,xr,mr,gr,Er,Fr,Rr,kr,Dr,_r,Ar,Tr,Ur,vr,Cr,Nr,Ir,Or,Wr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Mr,Lr,Pr,Zr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Vr{constructor(e){Hr.forEach(t=>this[t]=e[t])}}const Br="password",qr="rawPassword",Kr="passThrough",Yr="signal",jr="useWebWorkers",Gr="useCompressionStream",Xr="preventClose",Jr="supportZip64SplitFile",Qr="offset",$r="usdz",es="File format is not recognized",ts="End of central directory not found",rs="End of Zip64 central directory locator not found",ss="Central directory header not found",ns="Local file header not found",as="Zip64 extra field not found",is="File contains encrypted entry",os="Encryption method not supported",cs="Compression method not supported",ls="Split zip file",ds="Overlapping entry found",us="utf-8",ps="cp437",fs=[[wr,v],[hr,v],[mr,v],[gr,C]],ws={[C]:{getValue:Ds,bytes:4},[v]:{getValue:_s,bytes:8}};class hs{constructor(e,t={}){r.assign(this,{reader:new nr(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await ir(s),s.size!==$&&s.readUint8Array||(s=new Pt(await new d(s.readable).blob()),await ir(s)),s.size<H)throw new p(es);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,As(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await or(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,L,s.size);if(!a)throw Ds(As(await or(s,0,4)))==O?new p(ls):new p(ts);const o=As(a);let c=Ds(o,12),l=Ds(o,16);const u=a.offset,w=ks(o,20),h=u+H+w;let m=ks(o,4);const g=s.lastDiskNumber||0;let b=ks(o,6),z=ks(o,8),S=0,x=0;if(l==v||c==v||z==C||b==C){const e=As(await or(s,a.offset-20,20));if(Ds(e,0)==Z){l=_s(e,8);let t=await or(s,l,56,-1),r=As(t);const n=a.offset-20-56;if(Ds(r,0)!=P&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await or(s,l,56,-1),r=As(t)}if(Ds(r,0)!=P)throw new p(rs);m==C&&(m=Ds(r,16)),b==C&&(b=Ds(r,20)),z==C&&(z=_s(r,32)),c==v&&(c=_s(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new p(ls);if(0>l)throw new p(es);let E=0,R=await or(s,l,c,b),k=As(R);if(c){const e=a.offset-c;if(Ds(k,E)!=M&&l!=e){const t=l;l=e,l>t&&(S+=l-t),R=await or(s,l,c,b),k=As(R)}}const D=a.offset-l-(s.lastDiskOffset||0);if(c==D||0>D||(c=D,R=await or(s,l,c,b),k=As(R)),0>l||l>=s.size)throw new p(es);const _=xs(t,e,"filenameEncoding"),A=xs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new ms(s,n,t.options);if(Ds(k,E)!=M)throw new p(ss);gs(o,k,E+6);const c=!!o.bitFlag.languageEncodingFlag,l=E+46,u=l+o.filenameLength,f=u+o.extraFieldLength,w=ks(k,E+4),h=!(w>>8),m=w>>8==3,g=R.subarray(l,u),b=ks(k,E+32),D=f+b,T=R.subarray(f,D),U=c,v=c,I=Ds(k,E+38),O=I&N,W={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},L=Ds(k,E+42)+S,P=xs(t,e,"decodeText")||lr,Z=U?us:_||ps,H=v?us:A||ps;let V=P(g,Z);V===$&&(V=lr(g,Z));let B=P(T,H);B===$&&(B=lr(T,H)),r.assign(o,{versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:b,offset:L,diskNumberStart:ks(k,E+34),internalFileAttributes:ks(k,E+36),externalFileAttributes:I,msdosAttributesRaw:O,msdosAttributes:W,rawFilename:g,filenameUTF8:U,commentUTF8:v,rawExtraField:R.subarray(u,f),rawComment:T,filename:V,comment:B}),x=i.max(L,x),ys(o,o,k,E+6);const X=o.externalFileAttributes>>16&C;o.unixMode===$&&16877&X&&(o.unixMode=X);const J=!!(o.unixMode&K),Q=!!(o.unixMode&Y),ee=!!(o.unixMode&j),te=o.unixMode!==$?!!(73&o.unixMode):m&&!!(73&X),re=o.unixMode!==$&&(61440&o.unixMode)==q,se=(61440&X)==q;r.assign(o,{setuid:J,setgid:Q,sticky:ee,unixExternalUpper:X,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||h&&W.directory||V.endsWith(G)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Vr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},E=D;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Vr(o))}catch{}yield ne}const T=xs(t,e,"extractPrependedData"),U=xs(t,e,"extractAppendedData");return T&&(t.prependedData=x>0?await or(s,0,x):new f),t.comment=w?await or(s,u+H,w):new f,U&&(t.appendedData=h<s.size?await or(s,h,s.size-h):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class ms{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:w,bitFlag:h,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=h,S=t.localDirectory={},x=As(await or(i,o,X,c));let E=xs(a,n,Br),F=xs(a,n,qr);const R=xs(a,n,Kr);if(E=E&&E.length&&E,F=F&&F.length&&F,l&&99!=l.originalCompressionMethod)throw new p(cs);if(0!=u&&8!=u&&9!=u&&!R)throw new p(cs);if(Ds(x,0)!=I)throw new p(ns);gs(S,x,4);const{extraFieldLength:D,filenameLength:_,lastAccessDate:A,creationDate:T}=S;S.rawExtraField=D?await or(i,o+X+_,D,c):new f,ys(a,S,x,4,!0),r.assign(t,{lastAccessDate:A,creationDate:T});const U=a.encrypted&&S.encrypted&&!R,v=U&&!l;if(R||(t.zipCrypto=v),U){if(!v&&l.strength===$)throw new p(os);if(!E&&!F)throw new p(is)}const C=o+X+_+D,O=b,M=i.readable;r.assign(M,{diskNumberStart:c,offset:C,size:O});const L=xs(a,n,Yr),P=xs(a,n,"checkPasswordOnly");let Z=xs(a,n,"checkOverlappingEntry");const H=xs(a,n,"checkOverlappingEntryOnly");H&&(Z=!0);const{onstart:V,onprogress:B,onend:q}=n,K=9==u;let Y=xs(a,n,Gr);K&&(Y=!1);const j={options:{codecType:wt,password:E,rawPassword:F,zipCrypto:v,encryptionStrength:l&&l.strength,signed:xs(a,n,"checkSignature")&&!R,passwordVerification:v&&(z?g>>>8&N:m>>>24&N),outputSize:R?b:y,signature:m,compressed:0!=u&&!R,encrypted:a.encrypted&&!R,useWebWorkers:xs(a,n,jr),useCompressionStream:Y,transferStreams:xs(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:P},config:w,streamOptions:{signal:L,size:O,onstart:V,onprogress:B,onend:q}};let G;Z&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await or(e,o+a,f+4,s);if(Ds(As(r),0)==W){const e=Ds(As(r),4);let s,o;l?(s=_s(As(r),8),o=_s(As(r),16)):(s=Ds(As(r),8),o=Ds(As(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const w={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&w.start>=e.start&&w.start<e.end){const t=new p(ds);throw t.overlappingEntry=e.fileEntry,t}d.push(w)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:C,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!H){P&&(e=new k),e=new ar(e),await ir(e,R?b:y),({writable:G}=e);const{outputSize:t}=await _t({readable:M,writable:G},j);if(e.size+=t,t!=(R?b:y))throw new p(at)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!P||t.message!=Se)throw t}finally{xs(a,n,Xr)||!G||G.locked||await G.getWriter().close()}return P||H?$:e.getData?e.getData():G}}function gs(e,t,s){const n=e.rawBitFlag=ks(t,s+2),a=!(1&~n),i=Ds(t,s+6);r.assign(e,{encrypted:a,version:ks(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&B)==B},rawLastModDate:i,lastModDate:Es(i),filenameLength:ks(t,s+22),extraFieldLength:ks(t,s+24)})}function ys(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=As(new f(i));let u=0;try{for(;u<i.length;){const e=ks(d,u),t=ks(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=ks(s,n+4);r.assign(t,{signature:Ds(s,n+10),compressedSize:Ds(s,n+14),uncompressedSize:Ds(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=As(e.data),s=fs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=ws[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p(as)}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(bs(m,dr,ur,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(bs(g,pr,fr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=As(e.data),a=Rs(n,4);r.assign(e,{vendorVersion:Rs(n,0),vendorId:Rs(n,2),strength:a,originalCompressionMethod:s,compressionMethod:ks(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=As(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=ks(s,a),r=ks(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=As(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Fs(a),lastAccessDate:Fs(i),creationDate:Fs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)zs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(zs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(V);S&&(((e,t,r)=>{const s=As(e.data),n=Rs(s,0),a=[],i=[];r?(1&~n||(a.push(yr),i.push(br)),2&~n||(a.push(zr),i.push("rawLastAccessDate")),4&~n||(a.push(Sr),i.push(xr))):5>e.data.length||(a.push(yr),i.push(br));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Ds(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function bs(e,t,s,n,a){const i=As(e.data),o=new de;o.append(a[s]);const c=As(new f(4));c.setUint32(0,o.get(),!0);const l=Ds(i,1);r.assign(e,{version:Rs(i,0),[t]:lr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Ds(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function zs(e,t,s){try{const n=As(new f(e.data));let a=0;const i=Rs(n,a++),o=Rs(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=Ss(c),d=Rs(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=Ss(u);let w=$;if(!s&&a+2<=e.data.length){const t=e.data;w=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:w}),l!==$&&(t.uid=l),p!==$&&(t.gid=p),w!==$&&(t.unixMode=w)}catch{}}function Ss(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function xs(e,t,r){return t[r]===$?e.options[r]:t[r]}function Es(e){const t=(4294901760&e)>>16,r=e&C;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 Fs(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Rs(e,t){return e.getUint8(t)}function ks(e,t){return e.getUint16(t,!0)}function Ds(e,t){return e.getUint32(t,!0)}function _s(e,t){return n(e.getBigUint64(t,!0))}function As(e){return new m(e.buffer)}const Ts="File already exists",Us="Zip file comment exceeds 64KB",vs="File entry comment exceeds 64KB",Cs="File entry name exceeds 64KB",Ns="Version exceeds 65535",Is="The strength must equal 1, 2, or 3",Os="Extra field type exceeds 65535",Ws="Extra field data exceeds 64KB",Ms="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Ls="Undefined uncompressed size",Ps="Zip file not empty",Zs=new f([7,0,2,0,65,69,3,0,0]),Hs="infozip",Vs="unix";let Bs=0;const qs=[];class Ks{constructor(e,t={}){const s=(e=new ar(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[Qr]===$?e.size||e.writable.size||0:t[Qr],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p(Ps);e=new nr(e);const t=new hs(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:w,zip64:h}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=c;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const R=an(m,g,y,b,z,S),k=h&&d>v,D=h&&u>v,{headerArray:_,headerView:A}=on({version:t,bitFlag:cn(x,E,F,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:D,zip64UncompressedSize:k,extraFieldLength:R});return r.assign(e,{zip64UncompressedSize:k,zip64CompressedSize:D,zip64Offset:h&&this.offset-p>v,zip64DiskNumberStart:h&&w>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:_,headerView:A}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:u}=c;let h;Bs<u.maxWorkers?Bs++:await new y(e=>qs.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p(Ts);return c.filenames.add(e),h=(async(e,s,n,c)=>{s=s.trim();let l=Js(e,c,Dr),u=Js(e,c,Ur,l?20:768);const h=Js(e,c,Nr),g=Js(e,c,"uid"),b=Js(e,c,"gid");let z=Js(e,c,Mr);const S=Js(e,c,"unixExtraFieldType");let x=Js(e,c,Lr),E=Js(e,c,Pr),R=Js(e,c,Zr);if(g!==$&&(0>g||g>v))throw new p("Invalid uid (must be integer 0..2^32-1)");if(b!==$&&(0>b||b>v))throw new p("Invalid gid (must be integer 0..2^32-1)");if(z!==$&&(0>z||z>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(S!==$&&S!==Hs&&S!==Vs)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let k=Js(e,c,Rr),D=Js(e,c,kr);const _=k!==$||D!==$;if(g!==$||b!==$||z!==$||S?(l=!1,u=u&C|768):_&&(l=!0,u&=N),k!==$&&(0>k||k>N))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(D&&"object"!=typeof D)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(u>C)throw new p(Ns);let A=Js(e,c,Fr,0);!c[Cr]&&s.endsWith(G)&&(c[Cr]=!0);const T=Js(e,c,Cr);let U;T?(s.endsWith(G)||(s+=G),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=h?493<<16:27525120),l||(U=A>>16&C,z=z===$?U:z&C,x?z|=K:x=!!(z&K),E?z|=Y:E=!!(z&Y),R?z|=j:R=!!(z&j),T&&(z|=q),A=(z&C)<<16|A&N),({msdosAttributesRaw:k,msdosAttributes:D}=((e,t)=>{if(e!==$)e&=N;else if(t!==$){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&N}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(k,D)),_&&(A=A&v|k&N);const M=Js(e,c,"encodeText",pe);let L=M(s);if(L===$&&(L=pe(s)),an(L)>C)throw new p(Cs);const P=c[pr]||"";let Z=M(P);if(Z===$&&(Z=pe(P)),an(Z)>C)throw new p(vs);const H=Js(e,c,Tr,20);if(H>C)throw new p(Ns);const B=Js(e,c,yr,new o),ee=Js(e,c,zr),te=Js(e,c,Sr),re=Js(e,c,Er,0),se=Js(e,c,Kr);let ne,ae;se||(ne=Js(e,c,Br),ae=Js(e,c,qr));const oe=Js(e,c,"encryptionStrength",3),ce=Js(e,c,vr),le=Js(e,c,"extendedTimestamp",!0),de=Js(e,c,"keepOrder",!0),ue=Js(e,c,jr),fe=Js(e,c,"bufferedWrite"),we=Js(e,c,"dataDescriptorSignature",!1),he=Js(e,c,Yr),me=Js(e,c,"useUnicodeFileNames",!0),ge=Js(e,c,Ir);let ye=Js(e,c,"level"),be=Js(e,c,Gr),ze=Js(e,c,"dataDescriptor");fe&&ze===$&&(ze=!1),(ze===$||ce)&&(ze=!0),ye!==$&&6!=ye&&(be=!1),be||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(ye=0);let Se=Js(e,c,_r);if(!ce&&(ne!==$||ae!==$)&&(1>oe||oe>3))throw new p(Is);let xe=new f;const Ee=c[Wr];if(Ee){let e=0,t=0;Ee.forEach(t=>e+=4+an(t)),xe=new f(e),Ee.forEach((e,r)=>{if(r>C)throw new p(Os);if(an(e)>C)throw new p(Ws);sn(xe,new w([r]),t),sn(xe,new w([an(e)]),t+2),sn(xe,e,t+4),t+=4+an(e)})}let Fe=0,Re=0,ke=0;if(se&&(ke=c[wr],ke===$))throw new p(Ls);const De=!0===Se;n&&(n=new nr(n),await ir(n),se?(c.uncompressedSize=ke,Fe=Qs(ke)):n.size===$?(ze=!0,(Se||Se===$)&&(Se=!0,ke=Fe=4294967296)):(c.uncompressedSize=ke=n.size,Fe=Qs(ke)));const{diskOffset:_e,diskNumber:Ae,maxSize:Te}=e.writer,Ue=De||ke>v,ve=De||Fe>v,Ce=De||e.offset+e.pendingEntriesSize-_e>v,Ne=Js(e,c,Jr,!0)&&De||Ae+i.ceil(e.pendingEntriesSize/Te)>C;if(Ce||Ue||ve||Ne){if(!1===Se||!de)throw new p(Ms);Se=!0}Se=Se||!1;const Ie=Js(e,c,Ar),Oe=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:w,encryptionStrength:h,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:E,uncompressedSize:F,offset:R,diskNumberStart:k}=e;let{version:D,compressionMethod:_}=e;const A=!p&&(o>0||o===$&&0!==_);let T;const U=y||!A,v=c&&(e.bufferedWrite||!z&&!S||U);if(c){let e=4;z&&(e+=8),S&&(e+=8),x&&(e+=8),E&&(e+=4),T=new f(e);const t=nn(T);if(en(t,0,1),en(t,2,an(T)-4),v){const e=nn(T);let t=4;z&&(rn(e,t,a(F)),t+=8),S&&U&&(rn(e,t,a(F)),t+=8),x&&(rn(e,t,a(R)),t+=8),E&&(tn(e,t,k),t+=4)}}else T=new f;let N,O,W,M,L;if(b&&!l){N=new f(an(Zs)+2);const e=nn(N);en(e,0,39169),sn(N,Zs,2),$s(e,8,h)}else N=new f;if(g){W=new f(9+(s?4:0)+(n?4:0));const e=nn(W);en(e,0,V),en(e,2,an(W)-4),M=1+(s?2:0)+(n?4:0),$s(e,4,M);let t=5;tn(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(tn(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&tn(e,t,i.floor(n.getTime()/1e3));try{O=new f(36);const e=nn(O),t=Xs(r);en(e,0,10),en(e,2,32),en(e,8,1),en(e,10,24),rn(e,12,t),rn(e,20,Xs(s)||t),rn(e,28,Xs(n)||t)}catch{O=new f}}else O=W=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===$&&r===$&&s===$)L=new f;else{const e=Ys(t),c=Ys(r);let l=new f;if(o==Vs&&s!==$){let e=s&C;n&&(e|=K),a&&(e|=Y),i&&(e|=j),l=new f(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;L=new f(4+d);const u=nn(L);en(u,0,o==Hs?30837:30805),en(u,2,d),$s(u,4,1),$s(u,5,e.length);let p=6;sn(L,e,p),p+=e.length,$s(u,p,c.length),p++,sn(L,c,p),p+=c.length,sn(L,l,p)}}catch{L=new f}_===$&&(_=A?8:0),c&&(D=D>45?D:45),b&&!l&&(D=D>51?D:51,N[9]=_,_=99);const P=v?an(T):0,Z=P+an(N,W,O,L,w),{headerArray:H,headerView:B,rawLastModDate:q}=on({version:D,bitFlag:cn(o,d,u,b,_),compressionMethod:_,uncompressedSize:F,lastModDate:Q>r?Q:r>J?J:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:Z});let G=X;const ee=new f(G+an(t)+Z),te=nn(ee);return tn(te,0,I),sn(ee,H,4),sn(ee,t,G),G+=an(t),v&&sn(ee,T,G),G+=P,sn(ee,N,G),G+=an(N),sn(ee,W,G),G+=an(W),sn(ee,O,G),G+=an(O),sn(ee,L,G),G+=an(L),sn(ee,w,G),u&&(tn(te,18,0),tn(te,22,0)),{localHeaderArray:ee,localHeaderView:te,headerArray:H,headerView:B,lastModDate:r,rawLastModDate:q,encrypted:b,compressed:A,version:D,compressionMethod:_,extraFieldExtendedTimestampFlag:M,rawExtraFieldZip64:T,localExtraFieldZip64Length:P,rawExtraFieldExtendedTimestamp:W,rawExtraFieldNTFS:O,rawExtraFieldUnix:L,rawExtraFieldAES:N,extraFieldLength:Z}})(c=r.assign({},c,{rawFilename:L,rawComment:Z,version:H,versionMadeBy:u,lastModDate:B,lastAccessDate:ee,creationDate:te,rawExtraField:xe,zip64:Se,zip64UncompressedSize:Ue,zip64CompressedSize:ve,zip64Offset:Ce,zip64DiskNumberStart:Ne,password:ne,rawPassword:ae,level:ye,useWebWorkers:ue,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:fe,keepOrder:de,useUnicodeFileNames:me,dataDescriptor:ze,dataDescriptorSignature:we,signal:he,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:be,passThrough:se,encrypted:!!(ne&&an(ne)||ae&&an(ae))||se&&Ie,signature:c[Or],compressionMethod:ge,uncompressedSize:ke,offset:e.offset-_e,diskNumberStart:Ae,uid:g,gid:b,setuid:x,setgid:E,sticky:R,unixMode:z,msdosAttributesRaw:k,msdosAttributes:D,unixExternalUpper:U})),We=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=nn(n),r&&(a=4,tn(s,0,W))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Me=an(Oe.localHeaderArray,We.dataDescriptorArray);let Le;Re=Me+Fe,e.options[$r]&&(Re+=Re+64),e.pendingEntriesSize+=Re;try{Le=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:u,dataDescriptor:w,signal:h}=o,{headerInfo:m}=i,g=e.options[$r],b=t.from(c.values()).pop();let z,S,x,E,R,k,D,_={};c.set(s,_);try{let t;u&&(t=b&&b.lock,_.lock=new y(e=>x=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&u)&&w||g?(k=l,await A()):(k=new F,k.size=0,z=!0,e.bufferedWrites++,await ir(l)),await ir(k);const{writable:S,diskOffset:U}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);tn(nn(t),0,O),await Gs(l,t),e.offset+=4}g&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=nn(s),i=64-(t+an(s))%64;4>i&&(i+=64);const o=new f(i),c=nn(o);en(c,0,6534),en(c,2,i-2);const l=s;r.localHeaderArray=s=new f(an(l)+i),sn(s,l),sn(s,o,an(l)),a=nn(s),en(a,28,n+i),e.metadataSize+=i})(i,e.offset-U);const{localHeaderView:C,localHeaderArray:I}=m;z||(await t,await T(S));const{diskNumber:W}=l;R=!0,_.diskNumberStart=W,z?D=new d(k.readable).blob():await Gs(k,I),_=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:w,rawLastModDate:h,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:E,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k}=l,{dataDescriptorArray:D}=d,{rawFilename:_,lastAccessDate:A,creationDate:T,password:U,rawPassword:v,level:C,zip64:I,zip64UncompressedSize:O,zip64CompressedSize:W,zip64Offset:M,zip64DiskNumberStart:L,zipCrypto:P,dataDescriptor:Z,directory:H,executable:V,versionMadeBy:B,rawComment:q,rawExtraField:K,useWebWorkers:Y,onstart:j,onprogress:G,onend:X,signal:J,encryptionStrength:Q,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe,useCompressionStream:we,passThrough:he}=c,me={lock:n,versionMadeBy:B,zip64:I,directory:!!H,executable:!!V,filenameUTF8:!0,rawFilename:_,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe};let{signature:ge,uncompressedSize:ye}=c,be=0;he||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:ft,level:C,rawPassword:v,password:U,encryptionStrength:Q,zipCrypto:m&&P,passwordVerification:m&&P&&h>>8&N,signed:!he,compressed:g&&!he,encrypted:m&&!he,useWebWorkers:Y,useCompressionStream:we,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:j,onprogress:G,onend:X}};try{const e=await _t({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,he||(ye=e.inputSize,ge=e.signature)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===$||(tn(l,10,e),c&&tn(u,p,e)),i?c&&(rn(u,p+4,a(t)),rn(u,p+12,a(r))):(tn(l,14,t),tn(l,18,r),c&&(tn(u,p+4,t),tn(u,p+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),Z&&await Gs(t,D),r.assign(me,{uncompressedSize:ye,compressedSize:be,lastModDate:w,rawLastModDate:h,creationDate:T,lastAccessDate:A,encrypted:m,zipCrypto:P,size:u+be,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:ge,extraFieldExtendedTimestampFlag:E,zip64UncompressedSize:O,zip64CompressedSize:W,zip64Offset:M,zip64DiskNumberStart:L}),me})(n,k,_,i,e.config,o);const{zip64:M}=_;if(R=!1,c.set(s,_),_.filename=s,z){const[r]=await y.all([D,k.writable.getWriter().close(),t]);await A(),E=!0,_.diskNumberStart=l.diskNumber,_.offset=e.offset-l.diskOffset,M&&js(_),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,offset:c,diskNumberStart:l,zip64UncompressedSize:d,zip64CompressedSize:u,zip64Offset:p,zip64DiskNumberStart:f},w,{dataDescriptor:h})=>{if(h||(t||tn(w,14,n),r||(tn(w,18,i),tn(w,22,o))),r&&s){let t=X+an(e)+4;d&&(rn(w,t,a(o)),t+=8),u&&(rn(w,t,a(i)),t+=8),p&&(rn(w,t,a(c)),t+=8),f&&tn(w,t,l)}})(_,C,o),await T(S),await Gs(l,I),await r.stream().pipeTo(S,{preventClose:!0,preventAbort:!0,signal:h}),l.size+=k.size,E=!1}else _.offset=e.offset-U,M&&js(_);if(_.offset>v&&!M)throw new p(Ms);return e.offset+=_.size,_}catch(t){if(z&&E||!z&&R){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}z?e.offset+=k.size:e.offset=k.size}throw c.delete(s),t}finally{z&&e.bufferedWrites--,x&&x(),S&&S()}async function A(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>S=()=>{e.writerLocked=!1,t()}),await t}async function T(e){an(m.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Gs(e,new f))}})(e,s,n,{headerInfo:Oe,dataDescriptorInfo:We,metadataSize:Me},c)}finally{e.pendingEntriesSize-=Re}return r.assign(Le,{name:s,comment:P,extraField:Ee}),new Vr(Le)})(c,e,s,n),l.add(h),await h}catch(t){throw c.filenames.delete(e),t}finally{l.delete(h);const e=qs.shift();e?e():Bs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,w=e.offset-c,h=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p}=e;let w;if(l){w=new f(9);const e=nn(w);en(e,0,V),en(e,2,5),$s(e,4,d),tn(e,5,i.floor(p.getTime()/1e3))}else w=new f;e.rawExtraFieldExtendedTimestamp=w,u+=46+an(t,n,r,s,a,o,w,c)}const m=new f(u),g=nn(m);await ir(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:w,versionMadeBy:h,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:E,zip64DiskNumberStart:F,zip64Offset:R,internalFileAttributes:k,externalFileAttributes:D,diskNumberStart:_,uncompressedSize:A,compressedSize:T}=r,U=an(i,c,l,u,p,f);tn(g,d,M),en(g,d+4,h),x||tn(z,18,A),E||tn(z,14,T),sn(m,b,d+6);let N=d+X;if(en(g,N,U),N+=2,en(g,N,an(w)),N+=2,en(g,N,S&&F?C:_),N+=2,en(g,N,k),N+=2,D&&tn(g,N,D),N+=4,tn(g,N,S&&R?v:t),N+=4,sn(m,a,N),N+=an(a),sn(m,i,N),N+=an(i),sn(m,c,N),N+=an(c),sn(m,l,N),N+=an(l),sn(m,u,N),N+=an(u),sn(m,p,N),N+=an(p),sn(m,f,N),N+=an(f),sn(m,w,N),N+=an(w),d-y>o.availableSize&&(o.availableSize=0,await Gs(o,m.slice(y,d)),y=d),d=N,s.onprogress)try{await s.onprogress(e+1,n.size,new Vr(r))}catch{}}await Gs(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Js(e,s,_r);if(w>v||u>v||h>C||b>C){if(!1===S)throw new p(Ms);S=!0}const x=new f(S?98:H),E=nn(x);d=0,S&&(tn(E,0,P),rn(E,4,a(44)),en(E,12,45),en(E,14,45),tn(E,16,b),tn(E,20,l),rn(E,24,a(h)),rn(E,32,a(h)),rn(E,40,a(u)),rn(E,48,a(w)),tn(E,56,Z),rn(E,64,a(w)+a(u)),tn(E,72,b+1),Js(e,s,Jr,!0)&&(b=C,l=C),h=C,w=v,u=v,d+=76),tn(E,d,L),en(E,d+4,b),en(E,d+6,l),en(E,d+8,h),en(E,d+10,h),tn(E,d+12,u),tn(E,d+16,w);const F=an(r);if(F){if(F>C)throw new p(Us);en(E,d+20,F)}await Gs(o,x),F&&await Gs(o,r)})(this,e,r),Js(this,r,Xr)||await o.getWriter().close(),n.getData?n.getData():o}}function Ys(e){if(e===$)return new f;{const t=new f(4);nn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function js({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=nn(l);let u=4;n&&(rn(d,u,a(t)),u+=8),i&&(rn(d,u,a(e)),u+=8),o&&(rn(d,u,a(r)),u+=8),c&&tn(d,u,s)}async function Gs(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=an(t),await s.write(t)}finally{s.releaseLock()}}function Xs(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Js(e,t,r,s){const n=t[r]===$?e.options[r]:t[r];return n===$?s:n}function Qs(e){return e+5*(i.floor(e/16383)+1)}function $s(e,t,r){e.setUint8(t,r)}function en(e,t,r){e.setUint16(t,r,!0)}function tn(e,t,r){e.setUint32(t,r,!0)}function rn(e,t,r){e.setBigUint64(t,r,!0)}function sn(e,t,r){e.set(t,r)}function nn(e){return new m(e.buffer)}function an(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function on({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=nn(d);en(u,0,e),en(u,2,t),en(u,4,r);const p=new h(1),w=nn(p);en(w,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),en(w,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=p[0];return tn(u,6,m),(o||n!==$)&&tn(u,14,o?v:n),(c||s!==$)&&tn(u,18,c?v:s),en(u,22,an(i)),en(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function cn(e,t,r,s,n){let a=0;return t&&(a|=B),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}try{oe({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:U&&"SCRIPT"===U.tagName.toUpperCase()&&U.src||new u("zip-core.min.js",S.baseURI).href})}catch{}e.BlobReader=Pt,e.BlobWriter=Zt,e.Data64URIReader=class extends Mt{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.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++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}},e.Data64URIWriter=class extends Lt{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=E(n):t.pending+=n)}getData(){return this.data+E(this.pending)}},e.ERR_BAD_FORMAT=es,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ss,e.ERR_DUPLICATED_NAME=Ts,e.ERR_ENCRYPTED=is,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=rs,e.ERR_EOCDR_NOT_FOUND=ts,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=as,e.ERR_HTTP_RANGE=Ut,e.ERR_INVALID_COMMENT=Us,e.ERR_INVALID_ENCRYPTION_STRENGTH=Is,e.ERR_INVALID_ENTRY_COMMENT=vs,e.ERR_INVALID_ENTRY_NAME=Cs,e.ERR_INVALID_EXTRAFIELD_DATA=Ws,e.ERR_INVALID_EXTRAFIELD_TYPE=Os,e.ERR_INVALID_PASSWORD=be,e.ERR_INVALID_SIGNATURE=ze,e.ERR_INVALID_UNCOMPRESSED_SIZE=at,e.ERR_INVALID_VERSION=Ns,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ns,e.ERR_OVERLAPPING_ENTRY=ds,e.ERR_SPLIT_ZIP_FILE=ls,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Ls,e.ERR_UNSUPPORTED_COMPRESSION=cs,e.ERR_UNSUPPORTED_ENCRYPTION=os,e.ERR_UNSUPPORTED_FORMAT=Ms,e.ERR_ZIP_NOT_EMPTY=Ps,e.HttpRangeReader=class extends tr{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.HttpReader=tr,e.Reader=Mt,e.SplitDataReader=rr,e.SplitDataWriter=sr,e.TextReader=class extends Pt{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends Zt{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}},e.Uint8ArrayReader=class extends Mt{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 Lt{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 s=t.array;t.array=new f(e),t.array.set(s)}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=Lt,e.ZipReader=hs,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new hs(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return r.getData(t),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=Ks,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new Ks(r,e)}transform(e){const{readable:t,writable:r}=new F({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(e,t),{readable:this.readable,writable:r}}writable(e){const{readable:t,writable:r}=new F;return this.zipWriter.add(e,t),r}close(e,t={}){return this.zipWriter.close(e,t)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(Rt.map(e=>(At(e),e.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).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:p,Uint8Array:f,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:E,TransformStream:F,ReadableStream:R,WritableStream:k,CompressionStream:D,DecompressionStream:_,navigator:A,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var U=void 0!==S?S.currentScript:null;const v=4294967295,C=65535,I=255,N=67324752,W=134695760,M=W,O=33639248,L=101010256,P=101075792,Z=117853008,H=22,V=21589,B=2048,q=16384,K=2048,Y=1024,j=512,G="/",X=30,J=new o(2107,11,31),Q=new o(1980,0,1),$=void 0,ee="undefined",te="function";let re=2;try{typeof A!=ee&&A.hardwareConcurrency&&(re=A.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof _!=ee&&_},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,useCompressionStream:a,useWebWorkers:i,CompressionStream:o,DecompressionStream:c,CompressionStreamZlib:l,DecompressionStreamZlib:d,workerURI:u,wasmURI:p}=e;ce("baseURI",t),ce("wasmURI",p),ce("workerURI",u),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("useCompressionStream",a),ce("useWebWorkers",i),ce("CompressionStream",o),ce("DecompressionStream",c),ce("CompressionStreamZlib",l),ce("DecompressionStreamZlib",d)}function ce(e,t){t!==$&&(ne[e]=t)}const le=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;le[e]=t}class de{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;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 pe(e){if(typeof b==ee){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 fe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=fe.getPartial(r);return 32===s?e.concat(t):fe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+fe.getPartial(r)},clamp(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]=fe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=fe.getPartial(n);return s.push(fe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=fe.bitLength(e)/8,r=new f(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(fe.partial(8*(3&r),s)),t}}},he=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=we.utf8String.toBits(e));const r=t._buffer=fe.concat(t._buffer,e),s=t._length,n=t._length=s+fe.bitLength(e);if(n>9007199254740991)throw new p("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=fe.concat(t,[fe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},me={getRandomValues(e){const t=new h(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},ge={importKey:e=>new ge.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new p("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let f=0;const w=fe;for(t=we.bytes.toBits(t),l=1;(n||1)>f;l++){for(a=i=e.encrypt(w.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;(n||1)>f&&o<a.length;o++)u.setInt32(f,a[o]),f+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new p("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ye=typeof x!=ee&&typeof x.getRandomValues==te,be="Invalid password",ze="Invalid signature",Se="zipjs-abort-check-password";function xe(e){return ye?x.getRandomValues(e):me.getRandomValues(e)}const Ee=16,Fe={name:"PBKDF2"},Re=r.assign({hash:{name:"HMAC"}},Fe),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Fe),De=["deriveBits"],_e=[8,12,16],Ae=[16,24,32],Te=10,Ue=[0,0,0,0],ve=typeof x!=ee,Ce=ve&&x.subtle,Ie=ve&&typeof Ce!=ee,Ne=we.bytes,We=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new p("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[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,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,p=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=p=p<<24^p>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new p("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,f,w,h=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],f=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=f,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},Me=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=fe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return fe.clamp(t,n)}},Oe=ge.hmacSha1;let Le=ve&&Ie&&typeof Ce.importKey==te,Pe=ve&&Ie&&typeof Ce.deriveBits==te;class Ze extends F{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),signed:s,strength:n-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Be(e,t,r,Ye(s,0,_e[t])),a=Ye(s,_e[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new p(be)})(r,n,s,Ye(e,0,_e[n]+2)),e=Ye(e,_e[n]+2),a?t.error(new p(Se)):i()):await o;const c=new f(e.length-Te-(e.length-Te)%Ee);t.enqueue(Ve(r,e,c,0,Te,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=Ye(n,0,n.length-Te),o=Ye(n,n.length-Te);let c=new f;if(i.length){const e=Ge(Ne,i);s.update(e);const t=r.update(e);c=je(Ne,t)}if(t){const e=Ye(je(Ne,s.digest()),0,Te);for(let t=0;Te>t;t++)if(e[t]!=o[t])throw new p(ze)}e.enqueue(c)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),strength:s-1,pending:new f})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new f;s?(o=await(async(e,t,r)=>{const s=xe(new f(_e[t]));return Ke(s,await Be(e,t,r,s))})(r,n,s),a()):await i;const c=new f(o.length+e.length-e.length%Ee);c.set(o,0),t.enqueue(Ve(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new f;if(s.length){const e=t.update(Ge(Ne,s));r.update(e),i=je(Ne,e)}n.signature=je(Ne,r.digest()).slice(0,Te),e.enqueue(Ke(i,n.signature))}}}),n=this}}function Ve(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=Ke(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,l-l%Ee)),d=0;l-Ee>=d;d+=Ee){const e=Ge(Ne,Ye(t,d,d+Ee));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(je(Ne,n),d+s)}return e.pending=Ye(t,d),r}async function Be(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!Le)return ge.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return Le=!1,ge.importKey(t)}})(0,n,Re,0,De),o=await(async(e,t,r)=>{if(!Pe)return ge.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Pe=!1,ge.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new f(o),l=Ge(Ne,Ye(c,0,Ae[s])),d=Ge(Ne,Ye(c,Ae[s],2*Ae[s])),u=Ye(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new Me(new We(l),t.from(Ue)),hmac:new Oe(d)}),u}function qe(e,t){return t===$?pe(e):t}function Ke(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 Ye(e,t,r){return e.subarray(t,r)}function je(e,t){return e.fromBits(t)}function Ge(e,t){return e.toBits(t)}class Xe extends F{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;if(r.password){const t=Qe(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new p(be);e=e.subarray(12)}s?t.error(new p(Se)):t.enqueue(Qe(r,e))}})}}class Je extends F{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=xe(new f(12));t[11]=r.passwordVerification,s=new f(e.length+t.length),s.set($e(r,t),0),n=12}else s=new f(e.length),n=0;s.set($e(r,e),n),t.enqueue(s)}})}}function Qe(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,r[s]);return r}function $e(e,t){const r=new f(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,t[s]);return r}function et(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new de(s[0]),crcKey2:new de(s[2])});for(let r=0;r<t.length;r++)tt(e,t.charCodeAt(r))}function tt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=nt(i.imul(nt(s+st(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function rt(e){const t=2|e.keys[2];return st(i.imul(t,1^t)>>>8)}function st(e){return 255&e}function nt(e){return 4294967295&e}const at="Invalid uncompressed size";class it extends F{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,p,f=super.readable;a&&!o||!c||(u=new ue,f=dt(f,u)),n&&(f=lt(f,i,{level:l,chunkSize:t},s,r,s)),a&&(o?f=dt(f,new Je(e)):(p=new He(e),f=dt(f,p))),ct(d,f,()=>{let e;a&&!o&&(e=p.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,f,w=super.readable;a&&(n?w=dt(w,new Xe(e)):(f=new Ze(e),w=dt(w,f))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new p(ze)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=dt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=dt(e,new n(o,r));else{if(!a)throw s;e=dt(e,new a(o,r))}}return e}function dt(e,t){return e.pipeThrough(t)}const ut="data",pt="close",ft="deflate",wt="inflate";class ht extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(ft)?a=it:n.startsWith(wt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==$&&s.outputSize>e.outputSize))throw new p(at)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class mt extends F{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new f(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let gt=typeof T!=ee;class yt{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new mt(a.chunkSize)).pipeThrough(new bt(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),(o&>?xt:St)(e,a)}}class bt extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await zt(e,r)},async transform(e,s){n+=e.length,t&&await zt(t,n,r),s.enqueue(e)},async flush(){s&&await zt(s,n)}})}}async function zt(e,...t){try{await e(...t)}catch{}}function St(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new ht(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function xt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=((e,t,s)=>{const n={type:"module"};let a,i;if(typeof e==te&&(e=e()),e.startsWith("data:")||e.startsWith("blob:"))try{i=new T(e)}catch{i=new T(e,n)}else{try{a=new u(e,t)}catch{a=e}i=new T(a,n)}return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:w}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new p(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),h(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();Ft({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new f(n)),Ft({type:"ack",messageId:a},t)),s==pt&&h(null,i)}}catch(o){Ft({type:pt,messageId:a},t),h(o)}function h(e,t){e?u(e):d(t),l&&l.releaseLock(),w()}})(e,s)),i})(e.workerURI,s,e)}catch{return gt=!1,St(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new k({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=Ft({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}let Et=!0;function Ft(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&Et?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{Et=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let Rt=[];const kt=[];let Dt=0;async function _t(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:p}=s;t.transferStreams=a||a===$;const f=!(c||l||d||t.transferStreams);return t.useWebWorkers=!f&&(i||i===$&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:$,r.useCompressionStream=o||o===$&&s.useCompressionStream,(await(async()=>{const r=Rt.find(e=>!e.busy);if(r)return At(r),new yt(r,e,t,w);if(Rt.length<p){const r={indexWorker:Dt};return Dt++,Rt.push(r),new yt(r,e,t,w)}return new y(r=>kt.push({resolve:r,stream:e,workerOptions:t}))})()).run();function w(e){if(kt.length){const[{resolve:t,stream:r,workerOptions:s}]=kt.splice(0,1);t(new yt(e,r,s,w))}else e.worker?(At(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{Rt=Rt.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):Rt=Rt.filter(t=>t!=e)}}function At(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Tt="HTTP error ",Ut="HTTP Range not supported",vt="Range",Ct="GET",It="bytes",Nt=65536,Wt="writable";class Mt{constructor(){this.size=0}init(){this.initialized=!0}}class Ot extends Mt{get readable(){const e=this,{chunkSize:t=Nt}=e,r=new R({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===$?t:i.min(t,a-c),d=await or(e,n+c,l,o);s.enqueue(d),c+t>a||a===$&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class Lt extends Mt{constructor(){super();const e=this,t=new k({write(t){if(!e.initialized)throw new p("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Wt,{get:()=>t})}writeUint8Array(){}}class Pt extends Ot{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class Zt extends Mt{constructor(e){super();const t=new F,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,Wt,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class Ht extends Ot{constructor(e,t){super(),Bt(this,e,t)}async init(){await qt(this,$t,Gt),super.init()}readUint8Array(e,t){return Kt(this,e,t,$t,Gt)}}class Vt extends Ot{constructor(e,t){super(),Bt(this,e,t)}async init(){await qt(this,er,Xt),super.init()}readUint8Array(e,t){return Kt(this,e,t,er,Xt)}}function Bt(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function qt(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Ct,e,Yt(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==It))throw new p(Ut);{let a;c&&(e.eocdCache=new f(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===$?await Qt(e,t,r):e.size=a}}else await Qt(e,t,r)}async function Kt(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(Ct,e,Yt(e,t,r));if(206!=n.status)throw new p(Ut);return new f(await n.arrayBuffer())}return new f}{const{data:s}=e;return s||await n(e,l),new f(e.data.subarray(t,t+r))}}function Yt(e,t=0,s=1){return r.assign({},jt(e),{[vt]:It+"="+(0>t?t:t+"-"+(t+s-1))})}function jt({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Gt(e){await Jt(e,$t)}async function Xt(e){await Jt(e,er)}async function Jt(e,t){const r=await t(Ct,e,jt(e));e.data=new f(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function Qt(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,jt(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function $t(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new p(Ut):new p(Tt+(a.statusText||a.status))}function er(e,{url:t},s){return new y((n,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)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new p(Ut):new p(Tt+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new p("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class tr extends Ot{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Vt(e,t):new Ht(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 rr extends Ot{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new f(t);const o=await or(l,c,i);a.set(o,0);const d=await s.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 or(l,c,t)}else a=new f;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class sr extends Mt{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new k({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new p("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await ir(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,Wt,{get:()=>o})}}class nr{constructor(e){return t.isArray(e)&&(e=new rr(e)),e instanceof R&&(e={readable:e}),e}}class ar{constructor(e){return e.writable===$&&typeof e.next==te&&(e=new sr(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof sr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function ir(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function or(e,t,r,s){return e.readUint8Array(t,r,s)}const cr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function lr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=cr[e[r]];return t}})(e):new z(t).decode(e)}const dr="filename",ur="rawFilename",pr="comment",fr="rawComment",wr="uncompressedSize",hr="compressedSize",mr="offset",gr="diskNumberStart",yr="lastModDate",br="rawLastModDate",zr="lastAccessDate",Sr="creationDate",xr="rawCreationDate",Er="internalFileAttributes",Fr="externalFileAttributes",Rr="msdosAttributesRaw",kr="msdosAttributes",Dr="msDosCompatible",_r="zip64",Ar="encrypted",Tr="version",Ur="versionMadeBy",vr="zipCrypto",Cr="directory",Ir="executable",Nr="compressionMethod",Wr="signature",Mr="extraField",Or="unixMode",Lr="setuid",Pr="setgid",Zr="sticky",Hr=[dr,ur,wr,hr,yr,br,pr,fr,zr,Sr,xr,mr,gr,Er,Fr,Rr,kr,Dr,_r,Ar,Tr,Ur,vr,Cr,Ir,Nr,Wr,Mr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Or,Lr,Pr,Zr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Vr{constructor(e){Hr.forEach(t=>this[t]=e[t])}}const Br="password",qr="rawPassword",Kr="passThrough",Yr="signal",jr="useWebWorkers",Gr="useCompressionStream",Xr="preventClose",Jr="supportZip64SplitFile",Qr="offset",$r="usdz",es="File format is not recognized",ts="End of central directory not found",rs="End of Zip64 central directory locator not found",ss="Central directory header not found",ns="Local file header not found",as="Zip64 extra field not found",is="File contains encrypted entry",os="Encryption method not supported",cs="Compression method not supported",ls="Split zip file",ds="Overlapping entry found",us="utf-8",ps="cp437",fs=[[wr,v],[hr,v],[mr,v],[gr,C]],ws={[C]:{getValue:Ds,bytes:4},[v]:{getValue:_s,bytes:8}};class hs{constructor(e,t={}){r.assign(this,{reader:new nr(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await ir(s),s.size!==$&&s.readUint8Array||(s=new Pt(await new d(s.readable).blob()),await ir(s)),s.size<H)throw new p(es);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new f(4);var n;return n=t,As(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await or(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,L,s.size);if(!a)throw Ds(As(await or(s,0,4)))==W?new p(ls):new p(ts);const o=As(a);let c=Ds(o,12),l=Ds(o,16);const u=a.offset,w=ks(o,20),h=u+H+w;let m=ks(o,4);const g=s.lastDiskNumber||0;let b=ks(o,6),z=ks(o,8),S=0,x=0;if(l==v||c==v||z==C||b==C){const e=As(await or(s,a.offset-20,20));if(Ds(e,0)==Z){l=_s(e,8);let t=await or(s,l,56,-1),r=As(t);const n=a.offset-20-56;if(Ds(r,0)!=P&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await or(s,l,56,-1),r=As(t)}if(Ds(r,0)!=P)throw new p(rs);m==C&&(m=Ds(r,16)),b==C&&(b=Ds(r,20)),z==C&&(z=_s(r,32)),c==v&&(c=_s(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new p(ls);if(0>l)throw new p(es);let E=0,R=await or(s,l,c,b),k=As(R);if(c){const e=a.offset-c;if(Ds(k,E)!=O&&l!=e){const t=l;l=e,l>t&&(S+=l-t),R=await or(s,l,c,b),k=As(R)}}const D=a.offset-l-(s.lastDiskOffset||0);if(c==D||0>D||(c=D,R=await or(s,l,c,b),k=As(R)),0>l||l>=s.size)throw new p(es);const _=xs(t,e,"filenameEncoding"),A=xs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new ms(s,n,t.options);if(Ds(k,E)!=O)throw new p(ss);gs(o,k,E+6);const c=!!o.bitFlag.languageEncodingFlag,l=E+46,u=l+o.filenameLength,f=u+o.extraFieldLength,w=ks(k,E+4),h=!(w>>8),m=w>>8==3,g=R.subarray(l,u),b=ks(k,E+32),D=f+b,T=R.subarray(f,D),U=c,v=c,N=Ds(k,E+38),W=N&I,M={readOnly:!!(1&W),hidden:!!(2&W),system:!!(4&W),directory:!!(16&W),archive:!!(32&W)},L=Ds(k,E+42)+S,P=xs(t,e,"decodeText")||lr,Z=U?us:_||ps,H=v?us:A||ps;let V=P(g,Z);V===$&&(V=lr(g,Z));let B=P(T,H);B===$&&(B=lr(T,H)),r.assign(o,{versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:b,offset:L,diskNumberStart:ks(k,E+34),internalFileAttributes:ks(k,E+36),externalFileAttributes:N,msdosAttributesRaw:W,msdosAttributes:M,rawFilename:g,filenameUTF8:U,commentUTF8:v,rawExtraField:R.subarray(u,f),rawComment:T,filename:V,comment:B}),x=i.max(L,x),ys(o,o,k,E+6);const X=o.externalFileAttributes>>16&C;o.unixMode===$&&16877&X&&(o.unixMode=X);const J=!!(o.unixMode&K),Q=!!(o.unixMode&Y),ee=!!(o.unixMode&j),te=o.unixMode!==$?!!(73&o.unixMode):m&&!!(73&X),re=o.unixMode!==$&&(61440&o.unixMode)==q,se=(61440&X)==q;r.assign(o,{setuid:J,setgid:Q,sticky:ee,unixExternalUpper:X,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||h&&M.directory||V.endsWith(G)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Vr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},E=D;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Vr(o))}catch{}yield ne}const T=xs(t,e,"extractPrependedData"),U=xs(t,e,"extractAppendedData");return T&&(t.prependedData=x>0?await or(s,0,x):new f),t.comment=w?await or(s,u+H,w):new f,U&&(t.appendedData=h<s.size?await or(s,h,s.size-h):new f),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class ms{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:w,bitFlag:h,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=h,S=t.localDirectory={},x=As(await or(i,o,X,c));let E=xs(a,n,Br),F=xs(a,n,qr);const R=xs(a,n,Kr);if(E=E&&E.length&&E,F=F&&F.length&&F,l&&99!=l.originalCompressionMethod)throw new p(cs);if(0!=u&&8!=u&&9!=u&&!R)throw new p(cs);if(Ds(x,0)!=N)throw new p(ns);gs(S,x,4);const{extraFieldLength:D,filenameLength:_,lastAccessDate:A,creationDate:T}=S;S.rawExtraField=D?await or(i,o+X+_,D,c):new f,ys(a,S,x,4,!0),r.assign(t,{lastAccessDate:A,creationDate:T});const U=a.encrypted&&S.encrypted&&!R,v=U&&!l;if(R||(t.zipCrypto=v),U){if(!v&&l.strength===$)throw new p(os);if(!E&&!F)throw new p(is)}const C=o+X+_+D,W=b,O=i.readable;r.assign(O,{diskNumberStart:c,offset:C,size:W});const L=xs(a,n,Yr),P=xs(a,n,"checkPasswordOnly");let Z=xs(a,n,"checkOverlappingEntry");const H=xs(a,n,"checkOverlappingEntryOnly");H&&(Z=!0);const{onstart:V,onprogress:B,onend:q}=n,K=9==u;let Y=xs(a,n,Gr);K&&(Y=!1);const j={options:{codecType:wt,password:E,rawPassword:F,zipCrypto:v,encryptionStrength:l&&l.strength,signed:xs(a,n,"checkSignature")&&!R,passwordVerification:v&&(z?g>>>8&I:m>>>24&I),outputSize:R?b:y,signature:m,compressed:0!=u&&!R,encrypted:a.encrypted&&!R,useWebWorkers:xs(a,n,jr),useCompressionStream:Y,transferStreams:xs(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:P},config:w,streamOptions:{signal:L,size:W,onstart:V,onprogress:B,onend:q}};let G;Z&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let f=0;if(c&&(f=l?20:12),f){const r=await or(e,o+a,f+4,s);if(Ds(As(r),0)==M){const e=Ds(As(r),4);let s,o;l?(s=_s(As(r),8),o=_s(As(r),16)):(s=Ds(As(r),8),o=Ds(As(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(f+=4)}}const w={start:u+r,end:u+o+a+f,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&w.start>=e.start&&w.start<e.end){const t=new p(ds);throw t.overlappingEntry=e.fileEntry,t}d.push(w)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:C,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!H){P&&(e=new k),e=new ar(e),await ir(e,R?b:y),({writable:G}=e);const{outputSize:t}=await _t({readable:O,writable:G},j);if(e.size+=t,t!=(R?b:y))throw new p(at)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!P||t.message!=Se)throw t}finally{xs(a,n,Xr)||!G||G.locked||await G.getWriter().close()}return P||H?$:e.getData?e.getData():G}}function gs(e,t,s){const n=e.rawBitFlag=ks(t,s+2),a=!(1&~n),i=Ds(t,s+6);r.assign(e,{encrypted:a,version:ks(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&B)==B},rawLastModDate:i,lastModDate:Es(i),filenameLength:ks(t,s+22),extraFieldLength:ks(t,s+24)})}function ys(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=As(new f(i));let u=0;try{for(;u<i.length;){const e=ks(d,u),t=ks(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=ks(s,n+4);r.assign(t,{signature:Ds(s,n+10),compressedSize:Ds(s,n+14),uncompressedSize:Ds(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=As(e.data),s=fs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=ws[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new p(as)}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(bs(m,dr,ur,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(bs(g,pr,fr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=As(e.data),a=Rs(n,4);r.assign(e,{vendorVersion:Rs(n,0),vendorId:Rs(n,2),strength:a,originalCompressionMethod:s,compressionMethod:ks(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=As(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=ks(s,a),r=ks(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=As(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Fs(a),lastAccessDate:Fs(i),creationDate:Fs(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)zs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(zs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(V);S&&(((e,t,r)=>{const s=As(e.data),n=Rs(s,0),a=[],i=[];r?(1&~n||(a.push(yr),i.push(br)),2&~n||(a.push(zr),i.push("rawLastAccessDate")),4&~n||(a.push(Sr),i.push(xr))):5>e.data.length||(a.push(yr),i.push(br));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Ds(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function bs(e,t,s,n,a){const i=As(e.data),o=new de;o.append(a[s]);const c=As(new f(4));c.setUint32(0,o.get(),!0);const l=Ds(i,1);r.assign(e,{version:Rs(i,0),[t]:lr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Ds(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function zs(e,t,s){try{const n=As(new f(e.data));let a=0;const i=Rs(n,a++),o=Rs(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=Ss(c),d=Rs(n,a++),u=e.data.subarray(a,a+d);a+=d;const p=Ss(u);let w=$;if(!s&&a+2<=e.data.length){const t=e.data;w=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:p,unixMode:w}),l!==$&&(t.uid=l),p!==$&&(t.gid=p),w!==$&&(t.unixMode=w)}catch{}}function Ss(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function xs(e,t,r){return t[r]===$?e.options[r]:t[r]}function Es(e){const t=(4294901760&e)>>16,r=e&C;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 Fs(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Rs(e,t){return e.getUint8(t)}function ks(e,t){return e.getUint16(t,!0)}function Ds(e,t){return e.getUint32(t,!0)}function _s(e,t){return n(e.getBigUint64(t,!0))}function As(e){return new m(e.buffer)}const Ts="File already exists",Us="Zip file comment exceeds 64KB",vs="File entry comment exceeds 64KB",Cs="File entry name exceeds 64KB",Is="Version exceeds 65535",Ns="The strength must equal 1, 2, or 3",Ws="Extra field type exceeds 65535",Ms="Extra field data exceeds 64KB",Os="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Ls="Undefined uncompressed size",Ps="Zip file not empty",Zs=new f([7,0,2,0,65,69,3,0,0]),Hs="infozip",Vs="unix";let Bs=0;const qs=[];class Ks{constructor(e,t={}){const s=(e=new ar(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[Qr]===$?e.size||e.writable.size||0:t[Qr],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new p(Ps);e=new nr(e);const t=new hs(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:p,diskNumber:w,zip64:h}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=c;m=m||new f,g=g||new f,y=y||new f,b=b||new f,z=e.rawExtraFieldUnix||new f,S=S||new f;const R=an(m,g,y,b,z,S),k=h&&d>v,D=h&&u>v,{headerArray:_,headerView:A}=on({version:t,bitFlag:cn(x,E,F,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:D,zip64UncompressedSize:k,extraFieldLength:R});return r.assign(e,{zip64UncompressedSize:k,zip64CompressedSize:D,zip64Offset:h&&this.offset-p>v,zip64DiskNumberStart:h&&w>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:_,headerView:A}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:u}=c;let h;Bs<u.maxWorkers?Bs++:await new y(e=>qs.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new p(Ts);return c.filenames.add(e),h=(async(e,s,n,c)=>{s=s.trim();let l=Js(e,c,Dr),u=Js(e,c,Ur,l?20:768);const h=Js(e,c,Ir),g=Js(e,c,"uid"),b=Js(e,c,"gid");let z=Js(e,c,Or);const S=Js(e,c,"unixExtraFieldType");let x=Js(e,c,Lr),E=Js(e,c,Pr),R=Js(e,c,Zr);if(g!==$&&(0>g||g>v))throw new p("Invalid uid (must be integer 0..2^32-1)");if(b!==$&&(0>b||b>v))throw new p("Invalid gid (must be integer 0..2^32-1)");if(z!==$&&(0>z||z>C))throw new p("Invalid UNIX mode (must be integer 0..65535)");if(S!==$&&S!==Hs&&S!==Vs)throw new p("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let k=Js(e,c,Rr),D=Js(e,c,kr);const _=k!==$||D!==$;if(g!==$||b!==$||z!==$||S?(l=!1,u=u&C|768):_&&(l=!0,u&=I),k!==$&&(0>k||k>I))throw new p("Invalid msdosAttributesRaw (must be integer 0..255)");if(D&&"object"!=typeof D)throw new p("Invalid msdosAttributes (must be an object with boolean flags)");if(u>C)throw new p(Is);let A=Js(e,c,Fr,0);!c[Cr]&&s.endsWith(G)&&(c[Cr]=!0);const T=Js(e,c,Cr);let U;T?(s.endsWith(G)||(s+=G),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=h?493<<16:27525120),l||(U=A>>16&C,z=z===$?U:z&C,x?z|=K:x=!!(z&K),E?z|=Y:E=!!(z&Y),R?z|=j:R=!!(z&j),T&&(z|=q),A=(z&C)<<16|A&I),({msdosAttributesRaw:k,msdosAttributes:D}=((e,t)=>{if(e!==$)e&=I;else if(t!==$){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(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}})(k,D)),_&&(A=A&v|k&I);const O=Js(e,c,"encodeText",pe);let L=O(s);if(L===$&&(L=pe(s)),an(L)>C)throw new p(Cs);const P=c[pr]||"";let Z=O(P);if(Z===$&&(Z=pe(P)),an(Z)>C)throw new p(vs);const H=Js(e,c,Tr,20);if(H>C)throw new p(Is);const B=Js(e,c,yr,new o),ee=Js(e,c,zr),te=Js(e,c,Sr),re=Js(e,c,Er,0),se=Js(e,c,Kr);let ne,ae;se||(ne=Js(e,c,Br),ae=Js(e,c,qr));const oe=Js(e,c,"encryptionStrength",3),ce=Js(e,c,vr),le=Js(e,c,"extendedTimestamp",!0),de=Js(e,c,"keepOrder",!0),ue=Js(e,c,jr),fe=Js(e,c,"bufferedWrite"),we=Js(e,c,"dataDescriptorSignature",!1),he=Js(e,c,Yr),me=Js(e,c,"useUnicodeFileNames",!0),ge=Js(e,c,Nr);let ye=Js(e,c,"level"),be=Js(e,c,Gr),ze=Js(e,c,"dataDescriptor");fe&&ze===$&&(ze=!1),(ze===$||ce)&&(ze=!0),ye!==$&&6!=ye&&(be=!1),be||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(ye=0);let Se=Js(e,c,_r);if(!ce&&(ne!==$||ae!==$)&&(1>oe||oe>3))throw new p(Ns);let xe=new f;const Ee=c[Mr];if(Ee){let e=0,t=0;Ee.forEach(t=>e+=4+an(t)),xe=new f(e),Ee.forEach((e,r)=>{if(r>C)throw new p(Ws);if(an(e)>C)throw new p(Ms);sn(xe,new w([r]),t),sn(xe,new w([an(e)]),t+2),sn(xe,e,t+4),t+=4+an(e)})}let Fe=0,Re=0,ke=0;if(se&&(ke=c[wr],ke===$))throw new p(Ls);const De=!0===Se;n&&(n=new nr(n),await ir(n),se?(c.uncompressedSize=ke,Fe=Qs(ke)):n.size===$?(ze=!0,(Se||Se===$)&&(Se=!0,ke=Fe=4294967296)):(c.uncompressedSize=ke=n.size,Fe=Qs(ke)));const{diskOffset:_e,diskNumber:Ae,maxSize:Te}=e.writer,Ue=De||ke>v,ve=De||Fe>v,Ce=De||e.offset+e.pendingEntriesSize-_e>v,Ie=Js(e,c,Jr,!0)&&De||Ae+i.ceil(e.pendingEntriesSize/Te)>C;if(Ce||Ue||ve||Ie){if(!1===Se||!de)throw new p(Os);Se=!0}Se=Se||!1;const Ne=Js(e,c,Ar),We=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:p,rawExtraField:w,encryptionStrength:h,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:E,uncompressedSize:F,offset:R,diskNumberStart:k}=e;let{version:D,compressionMethod:_}=e;const A=!p&&(o>0||o===$&&0!==_);let T,U;const v=y||!A,I=c&&(e.bufferedWrite||!z&&!S||v);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),E&&(e+=4),T=new f(e);const r=nn(T);U=new f(t);const s=nn(U);if(en(r,0,1),en(r,2,an(T)-4),en(s,0,1),en(s,2,an(U)-4),I){const e=nn(T),t=nn(U);let r=4,s=4;z&&(rn(e,r,a(F)),r+=8,rn(t,s,a(F)),s+=8),S&&v&&(rn(e,r,a(F)),r+=8,rn(t,s,a(F)),s+=8),x&&(rn(e,r,a(R)),r+=8),E&&(tn(e,r,k),r+=4)}}else T=new f,U=new f;let W,M,O,L,P;if(b&&!l){W=new f(an(Zs)+2);const e=nn(W);en(e,0,39169),sn(W,Zs,2),$s(e,8,h)}else W=new f;if(g){O=new f(9+(s?4:0)+(n?4:0));const e=nn(O);en(e,0,V),en(e,2,an(O)-4),L=1+(s?2:0)+(n?4:0),$s(e,4,L);let t=5;tn(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(tn(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&tn(e,t,i.floor(n.getTime()/1e3));try{M=new f(36);const e=nn(M),t=Xs(r);en(e,0,10),en(e,2,32),en(e,8,1),en(e,10,24),rn(e,12,t),rn(e,20,Xs(s)||t),rn(e,28,Xs(n)||t)}catch{M=new f}}else M=O=new f;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===$&&r===$&&s===$)P=new f;else{const e=Ys(t),c=Ys(r);let l=new f;if(o==Vs&&s!==$){let e=s&C;n&&(e|=K),a&&(e|=Y),i&&(e|=j),l=new f(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;P=new f(4+d);const u=nn(P);en(u,0,o==Hs?30837:30805),en(u,2,d),$s(u,4,1),$s(u,5,e.length);let p=6;sn(P,e,p),p+=e.length,$s(u,p,c.length),p++,sn(P,c,p),p+=c.length,sn(P,l,p)}}catch{P=new f}_===$&&(_=A?8:0),c&&(D=D>45?D:45),b&&!l&&(D=D>51?D:51,W[9]=_,_=99);const Z=I?an(U):0,H=Z+an(W,O,M,P,w),{headerArray:B,headerView:q,rawLastModDate:G}=on({version:D,bitFlag:cn(o,d,u,b,_),compressionMethod:_,uncompressedSize:F,lastModDate:Q>r?Q:r>J?J:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:H});let ee=X;const te=new f(ee+an(t)+H),re=nn(te);return tn(re,0,N),sn(te,B,4),sn(te,t,ee),ee+=an(t),I&&sn(te,U,ee),ee+=Z,sn(te,W,ee),ee+=an(W),sn(te,O,ee),ee+=an(O),sn(te,M,ee),ee+=an(M),sn(te,P,ee),ee+=an(P),sn(te,w,ee),u&&(tn(re,18,0),tn(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:B,headerView:q,lastModDate:r,rawLastModDate:G,encrypted:b,compressed:A,version:D,compressionMethod:_,extraFieldExtendedTimestampFlag:L,rawExtraFieldZip64:T,localExtraFieldZip64Length:Z,rawExtraFieldExtendedTimestamp:O,rawExtraFieldNTFS:M,rawExtraFieldUnix:P,rawExtraFieldAES:W,extraFieldLength:H}})(c=r.assign({},c,{rawFilename:L,rawComment:Z,version:H,versionMadeBy:u,lastModDate:B,lastAccessDate:ee,creationDate:te,rawExtraField:xe,zip64:Se,zip64UncompressedSize:Ue,zip64CompressedSize:ve,zip64Offset:Ce,zip64DiskNumberStart:Ie,password:ne,rawPassword:ae,level:ye,useWebWorkers:ue,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:fe,keepOrder:de,useUnicodeFileNames:me,dataDescriptor:ze,dataDescriptorSignature:we,signal:he,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:be,passThrough:se,encrypted:!!(ne&&an(ne)||ae&&an(ae))||se&&Ne,signature:c[Wr],compressionMethod:ge,uncompressedSize:ke,offset:e.offset-_e,diskNumberStart:Ae,uid:g,gid:b,setuid:x,setgid:E,sticky:R,unixMode:z,msdosAttributesRaw:k,msdosAttributes:D,unixExternalUpper:U})),Me=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new f,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new f(i),s=nn(n),r&&(a=4,tn(s,0,M))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Oe=an(We.localHeaderArray,Me.dataDescriptorArray);let Le;Re=Oe+Fe,e.options[$r]&&(Re+=Re+64),e.pendingEntriesSize+=Re;try{Le=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:u,dataDescriptor:w,signal:h}=o,{headerInfo:m}=i,g=e.options[$r],b=t.from(c.values()).pop();let z,S,x,E,R,k,D,_={};c.set(s,_);try{let t;u&&(t=b&&b.lock,_.lock=new y(e=>x=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&u)&&w||g?(k=l,await A()):(k=new F,k.size=0,z=!0,e.bufferedWrites++,await ir(l)),await ir(k);const{writable:S,diskOffset:U}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new f(4);tn(nn(t),0,W),await Gs(l,t),e.offset+=4}g&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=nn(s),i=64-(t+an(s))%64;4>i&&(i+=64);const o=new f(i),c=nn(o);en(c,0,6534),en(c,2,i-2);const l=s;r.localHeaderArray=s=new f(an(l)+i),sn(s,l),sn(s,o,an(l)),a=nn(s),en(a,28,n+i),e.metadataSize+=i})(i,e.offset-U);const{localHeaderView:C,localHeaderArray:N}=m;z||(await t,await T(S));const{diskNumber:M}=l;R=!0,_.diskNumberStart=M,z?D=new d(k.readable).blob():await Gs(k,N),_=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:p,headerView:f,lastModDate:w,rawLastModDate:h,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:E,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k}=l,{dataDescriptorArray:D}=d,{rawFilename:_,lastAccessDate:A,creationDate:T,password:U,rawPassword:v,level:C,zip64:N,zip64UncompressedSize:W,zip64CompressedSize:M,zip64Offset:O,zip64DiskNumberStart:L,zipCrypto:P,dataDescriptor:Z,directory:H,executable:V,versionMadeBy:B,rawComment:q,rawExtraField:K,useWebWorkers:Y,onstart:j,onprogress:G,onend:X,signal:J,encryptionStrength:Q,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe,useCompressionStream:we,passThrough:he}=c,me={lock:n,versionMadeBy:B,zip64:N,directory:!!H,executable:!!V,filenameUTF8:!0,rawFilename:_,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:pe,msdosAttributes:fe};let{signature:ge,uncompressedSize:ye}=c,be=0;he||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:ft,level:C,rawPassword:v,password:U,encryptionStrength:Q,zipCrypto:m&&P,passwordVerification:m&&P&&h>>8&I,signed:!he,compressed:g&&!he,encrypted:m&&!he,useWebWorkers:Y,useCompressionStream:we,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:j,onprogress:G,onend:X}};try{const e=await _t({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,he||(ye=e.inputSize,ge=e.signature)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:p}=n;d&&!o||e===$||(tn(l,10,e),c&&tn(u,p,e)),i?c&&(rn(u,p+4,a(t)),rn(u,p+12,a(r))):(tn(l,14,t),tn(l,18,r),c&&(tn(u,p+4,t),tn(u,p+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),Z&&await Gs(t,D),r.assign(me,{uncompressedSize:ye,compressedSize:be,lastModDate:w,rawLastModDate:h,creationDate:T,lastAccessDate:A,encrypted:m,zipCrypto:P,size:u+be,compressionMethod:b,version:y,headerArray:p,headerView:f,signature:ge,extraFieldExtendedTimestampFlag:E,zip64UncompressedSize:W,zip64CompressedSize:M,zip64Offset:O,zip64DiskNumberStart:L}),me})(n,k,_,i,e.config,o);const{zip64:O}=_;if(R=!1,c.set(s,_),_.filename=s,z){const[r]=await y.all([D,k.writable.getWriter().close(),t]);await A(),E=!0,_.diskNumberStart=l.diskNumber,_.offset=e.offset-l.diskOffset,O&&js(_),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||tn(d,14,n),r||(tn(d,18,i),tn(d,22,o))),r&&s){let t=X+an(e)+4;c&&(rn(d,t,a(o)),t+=8),l&&(rn(d,t,a(i)),t+=8)}})(_,C,o),await T(S),await Gs(l,N),await r.stream().pipeTo(S,{preventClose:!0,preventAbort:!0,signal:h}),l.size+=k.size,E=!1}else _.offset=e.offset-U,O&&js(_);if(_.offset>v&&!O)throw new p(Os);return e.offset+=_.size,_}catch(t){if(z&&E||!z&&R){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}z?e.offset+=k.size:e.offset=k.size}throw c.delete(s),t}finally{z&&e.bufferedWrites--,x&&x(),S&&S()}async function A(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>S=()=>{e.writerLocked=!1,t()}),await t}async function T(e){an(m.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Gs(e,new f))}})(e,s,n,{headerInfo:We,dataDescriptorInfo:Me,metadataSize:Oe},c)}finally{e.pendingEntriesSize-=Re}return r.assign(Le,{name:s,comment:P,extraField:Ee}),new Vr(Le)})(c,e,s,n),l.add(h),await h}catch(t){throw c.filenames.delete(e),t}finally{l.delete(h);const e=qs.shift();e?e():Bs--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new f,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,w=e.offset-c,h=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:p}=e;let w;if(l){w=new f(9);const e=nn(w);en(e,0,V),en(e,2,5),$s(e,4,d),tn(e,5,i.floor(p.getTime()/1e3))}else w=new f;e.rawExtraFieldExtendedTimestamp=w,u+=46+an(t,n,r,s,a,o,w,c)}const m=new f(u),g=nn(m);await ir(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:p,rawExtraField:f,rawComment:w,versionMadeBy:h,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:E,zip64DiskNumberStart:F,zip64Offset:R,internalFileAttributes:k,externalFileAttributes:D,diskNumberStart:_,uncompressedSize:A,compressedSize:T}=r,U=an(i,c,l,u,p,f);tn(g,d,O),en(g,d+4,h),x||tn(z,18,A),E||tn(z,14,T),sn(m,b,d+6);let I=d+X;if(en(g,I,U),I+=2,en(g,I,an(w)),I+=2,en(g,I,S&&F?C:_),I+=2,en(g,I,k),I+=2,D&&tn(g,I,D),I+=4,tn(g,I,S&&R?v:t),I+=4,sn(m,a,I),I+=an(a),sn(m,i,I),I+=an(i),sn(m,c,I),I+=an(c),sn(m,l,I),I+=an(l),sn(m,u,I),I+=an(u),sn(m,p,I),I+=an(p),sn(m,f,I),I+=an(f),sn(m,w,I),I+=an(w),d-y>o.availableSize&&(o.availableSize=0,await Gs(o,m.slice(y,d)),y=d),d=I,s.onprogress)try{await s.onprogress(e+1,n.size,new Vr(r))}catch{}}await Gs(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=Js(e,s,_r);if(w>v||u>v||h>C||b>C){if(!1===S)throw new p(Os);S=!0}const x=new f(S?98:H),E=nn(x);d=0,S&&(tn(E,0,P),rn(E,4,a(44)),en(E,12,45),en(E,14,45),tn(E,16,b),tn(E,20,l),rn(E,24,a(h)),rn(E,32,a(h)),rn(E,40,a(u)),rn(E,48,a(w)),tn(E,56,Z),rn(E,64,a(w)+a(u)),tn(E,72,b+1),Js(e,s,Jr,!0)&&(b=C,l=C),h=C,w=v,u=v,d+=76),tn(E,d,L),en(E,d+4,b),en(E,d+6,l),en(E,d+8,h),en(E,d+10,h),tn(E,d+12,u),tn(E,d+16,w);const F=an(r);if(F){if(F>C)throw new p(Us);en(E,d+20,F)}await Gs(o,x),F&&await Gs(o,r)})(this,e,r),Js(this,r,Xr)||await o.getWriter().close(),n.getData?n.getData():o}}function Ys(e){if(e===$)return new f;{const t=new f(4);nn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function js({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=nn(l);let u=4;n&&(rn(d,u,a(t)),u+=8),i&&(rn(d,u,a(e)),u+=8),o&&(rn(d,u,a(r)),u+=8),c&&tn(d,u,s)}async function Gs(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=an(t),await s.write(t)}finally{s.releaseLock()}}function Xs(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function Js(e,t,r,s){const n=t[r]===$?e.options[r]:t[r];return n===$?s:n}function Qs(e){return e+5*(i.floor(e/16383)+1)}function $s(e,t,r){e.setUint8(t,r)}function en(e,t,r){e.setUint16(t,r,!0)}function tn(e,t,r){e.setUint32(t,r,!0)}function rn(e,t,r){e.setBigUint64(t,r,!0)}function sn(e,t,r){e.set(t,r)}function nn(e){return new m(e.buffer)}function an(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function on({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new f(26),u=nn(d);en(u,0,e),en(u,2,t),en(u,4,r);const p=new h(1),w=nn(p);en(w,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),en(w,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=p[0];return tn(u,6,m),(o||n!==$)&&tn(u,14,o?v:n),(c||s!==$)&&tn(u,18,c?v:s),en(u,22,an(i)),en(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function cn(e,t,r,s,n){let a=0;return t&&(a|=B),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}try{oe({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:U&&"SCRIPT"===U.tagName.toUpperCase()&&U.src||new u("zip-core.min.js",S.baseURI).href})}catch{}e.BlobReader=Pt,e.BlobWriter=Zt,e.Data64URIReader=class extends Ot{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new f(t),a=4*i.floor(e/3),o=atob(s.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++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}},e.Data64URIWriter=class extends Lt{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=E(n):t.pending+=n)}getData(){return this.data+E(this.pending)}},e.ERR_BAD_FORMAT=es,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ss,e.ERR_DUPLICATED_NAME=Ts,e.ERR_ENCRYPTED=is,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=rs,e.ERR_EOCDR_NOT_FOUND=ts,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=as,e.ERR_HTTP_RANGE=Ut,e.ERR_INVALID_COMMENT=Us,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ns,e.ERR_INVALID_ENTRY_COMMENT=vs,e.ERR_INVALID_ENTRY_NAME=Cs,e.ERR_INVALID_EXTRAFIELD_DATA=Ms,e.ERR_INVALID_EXTRAFIELD_TYPE=Ws,e.ERR_INVALID_PASSWORD=be,e.ERR_INVALID_SIGNATURE=ze,e.ERR_INVALID_UNCOMPRESSED_SIZE=at,e.ERR_INVALID_VERSION=Is,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ns,e.ERR_OVERLAPPING_ENTRY=ds,e.ERR_SPLIT_ZIP_FILE=ls,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Ls,e.ERR_UNSUPPORTED_COMPRESSION=cs,e.ERR_UNSUPPORTED_ENCRYPTION=os,e.ERR_UNSUPPORTED_FORMAT=Os,e.ERR_ZIP_NOT_EMPTY=Ps,e.HttpRangeReader=class extends tr{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.HttpReader=tr,e.Reader=Ot,e.SplitDataReader=rr,e.SplitDataWriter=sr,e.TextReader=class extends Pt{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends Zt{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}},e.Uint8ArrayReader=class extends Ot{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 Lt{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 s=t.array;t.array=new f(e),t.array.set(s)}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=Lt,e.ZipReader=hs,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new hs(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return r.getData(t),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=Ks,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new Ks(r,e)}transform(e){const{readable:t,writable:r}=new F({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(e,t),{readable:this.readable,writable:r}}writable(e){const{readable:t,writable:r}=new F;return this.zipWriter.add(e,t),r}close(e,t={}){return this.zipWriter.close(e,t)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(Rt.map(e=>(At(e),e.terminate())))}});
|
package/dist/zip-fs-core.js
CHANGED
|
@@ -5083,15 +5083,19 @@
|
|
|
5083
5083
|
let { version, compressionMethod } = options;
|
|
5084
5084
|
const compressed = !directory && (level > 0 || (level === UNDEFINED_VALUE && compressionMethod !== 0));
|
|
5085
5085
|
let rawExtraFieldZip64;
|
|
5086
|
+
let rawLocalExtraFieldZip64;
|
|
5086
5087
|
const uncompressedFile = passThrough || !compressed;
|
|
5087
5088
|
const zip64ExtraFieldComplete = zip64 && (options.bufferedWrite || ((!zip64UncompressedSize && !zip64CompressedSize) || uncompressedFile));
|
|
5088
5089
|
if (zip64) {
|
|
5089
5090
|
let rawExtraFieldZip64Length = 4;
|
|
5091
|
+
let rawLocalExtraFieldZip64Length = 4;
|
|
5090
5092
|
if (zip64UncompressedSize) {
|
|
5091
5093
|
rawExtraFieldZip64Length += 8;
|
|
5094
|
+
rawLocalExtraFieldZip64Length += 8;
|
|
5092
5095
|
}
|
|
5093
5096
|
if (zip64CompressedSize) {
|
|
5094
5097
|
rawExtraFieldZip64Length += 8;
|
|
5098
|
+
rawLocalExtraFieldZip64Length += 8;
|
|
5095
5099
|
}
|
|
5096
5100
|
if (zip64Offset) {
|
|
5097
5101
|
rawExtraFieldZip64Length += 8;
|
|
@@ -5101,18 +5105,28 @@
|
|
|
5101
5105
|
}
|
|
5102
5106
|
rawExtraFieldZip64 = new Uint8Array(rawExtraFieldZip64Length);
|
|
5103
5107
|
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5108
|
+
rawLocalExtraFieldZip64 = new Uint8Array(rawLocalExtraFieldZip64Length);
|
|
5109
|
+
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5104
5110
|
setUint16(rawExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5105
5111
|
setUint16(rawExtraFieldZip64View, 2, getLength(rawExtraFieldZip64) - 4);
|
|
5112
|
+
setUint16(rawLocalExtraFieldZip64View, 0, EXTRAFIELD_TYPE_ZIP64);
|
|
5113
|
+
setUint16(rawLocalExtraFieldZip64View, 2, getLength(rawLocalExtraFieldZip64) - 4);
|
|
5106
5114
|
if (zip64ExtraFieldComplete) {
|
|
5107
5115
|
const rawExtraFieldZip64View = getDataView(rawExtraFieldZip64);
|
|
5116
|
+
const rawLocalExtraFieldZip64View = getDataView(rawLocalExtraFieldZip64);
|
|
5108
5117
|
let rawExtraFieldZip64Offset = 4;
|
|
5118
|
+
let rawLocalExtraFieldZip64Offset = 4;
|
|
5109
5119
|
if (zip64UncompressedSize) {
|
|
5110
5120
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5111
5121
|
rawExtraFieldZip64Offset += 8;
|
|
5122
|
+
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5123
|
+
rawLocalExtraFieldZip64Offset += 8;
|
|
5112
5124
|
}
|
|
5113
5125
|
if (zip64CompressedSize && uncompressedFile) {
|
|
5114
5126
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5115
5127
|
rawExtraFieldZip64Offset += 8;
|
|
5128
|
+
setBigUint64(rawLocalExtraFieldZip64View, rawLocalExtraFieldZip64Offset, BigInt(uncompressedSize));
|
|
5129
|
+
rawLocalExtraFieldZip64Offset += 8;
|
|
5116
5130
|
}
|
|
5117
5131
|
if (zip64Offset) {
|
|
5118
5132
|
setBigUint64(rawExtraFieldZip64View, rawExtraFieldZip64Offset, BigInt(offset));
|
|
@@ -5125,6 +5139,7 @@
|
|
|
5125
5139
|
}
|
|
5126
5140
|
} else {
|
|
5127
5141
|
rawExtraFieldZip64 = new Uint8Array();
|
|
5142
|
+
rawLocalExtraFieldZip64 = new Uint8Array();
|
|
5128
5143
|
}
|
|
5129
5144
|
let rawExtraFieldAES;
|
|
5130
5145
|
if (encrypted && !zipCrypto) {
|
|
@@ -5227,7 +5242,7 @@
|
|
|
5227
5242
|
rawExtraFieldAES[9] = compressionMethod;
|
|
5228
5243
|
compressionMethod = COMPRESSION_METHOD_AES;
|
|
5229
5244
|
}
|
|
5230
|
-
const localExtraFieldZip64Length = zip64ExtraFieldComplete ? getLength(
|
|
5245
|
+
const localExtraFieldZip64Length = zip64ExtraFieldComplete ? getLength(rawLocalExtraFieldZip64) : 0;
|
|
5231
5246
|
const extraFieldLength = localExtraFieldZip64Length + getLength(rawExtraFieldAES, rawExtraFieldExtendedTimestamp, rawExtraFieldNTFS, rawExtraFieldUnix, rawExtraField);
|
|
5232
5247
|
const {
|
|
5233
5248
|
headerArray,
|
|
@@ -5252,7 +5267,7 @@
|
|
|
5252
5267
|
arraySet(localHeaderArray, rawFilename, localHeaderOffset);
|
|
5253
5268
|
localHeaderOffset += getLength(rawFilename);
|
|
5254
5269
|
if (zip64ExtraFieldComplete) {
|
|
5255
|
-
arraySet(localHeaderArray,
|
|
5270
|
+
arraySet(localHeaderArray, rawLocalExtraFieldZip64, localHeaderOffset);
|
|
5256
5271
|
}
|
|
5257
5272
|
localHeaderOffset += localExtraFieldZip64Length;
|
|
5258
5273
|
arraySet(localHeaderArray, rawExtraFieldAES, localHeaderOffset);
|
|
@@ -5425,12 +5440,8 @@
|
|
|
5425
5440
|
signature,
|
|
5426
5441
|
compressedSize,
|
|
5427
5442
|
uncompressedSize,
|
|
5428
|
-
offset,
|
|
5429
|
-
diskNumberStart,
|
|
5430
5443
|
zip64UncompressedSize,
|
|
5431
|
-
zip64CompressedSize
|
|
5432
|
-
zip64Offset,
|
|
5433
|
-
zip64DiskNumberStart
|
|
5444
|
+
zip64CompressedSize
|
|
5434
5445
|
}, localHeaderView, { dataDescriptor }) {
|
|
5435
5446
|
if (!dataDescriptor) {
|
|
5436
5447
|
if (!encrypted) {
|
|
@@ -5452,13 +5463,6 @@
|
|
|
5452
5463
|
setBigUint64(localHeaderView, localHeaderOffset, BigInt(compressedSize));
|
|
5453
5464
|
localHeaderOffset += 8;
|
|
5454
5465
|
}
|
|
5455
|
-
if (zip64Offset) {
|
|
5456
|
-
setBigUint64(localHeaderView, localHeaderOffset, BigInt(offset));
|
|
5457
|
-
localHeaderOffset += 8;
|
|
5458
|
-
}
|
|
5459
|
-
if (zip64DiskNumberStart) {
|
|
5460
|
-
setUint32(localHeaderView, localHeaderOffset, diskNumberStart);
|
|
5461
|
-
}
|
|
5462
5466
|
}
|
|
5463
5467
|
}
|
|
5464
5468
|
}
|