single-file-core 1.5.83 → 1.5.84

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.
@@ -140,7 +140,7 @@ function getProcessorHelperClass(utilInstance) {
140
140
  doc.head.appendChild(styleElement);
141
141
  }
142
142
  element.textContent = "/* */";
143
- element.setAttribute("onload", "this.textContent=document.querySelector('style[" + DUPLICATE_STYLESHEET_ATTRIBUTE_NAME + "=\"" + stylesheetRefIndex + "\"]')?.textContent;this.removeAttribute(\"onload\")");
143
+ element.setAttribute("onload", "this.textContent=document.querySelector('style[" + DUPLICATE_STYLESHEET_ATTRIBUTE_NAME + "=\"" + stylesheetRefIndex + "\"]')?.textContent;this.removeAttribute('onload')");
144
144
  } else {
145
145
  element.textContent = options.inlineStylesheets.get(stylesheetRefIndex).content;
146
146
  }
@@ -113,7 +113,8 @@ const redundantAttributes = {
113
113
  };
114
114
 
115
115
  const REGEXP_WHITESPACE = /[ \t\f\r]+/g;
116
- const REGEXP_NEWLINE = /[\n]+/g;
116
+ const REGEXP_WHITESPACE_COLLAPSE = /[ \t\f\r]{2,}|[\t\f\r]/g;
117
+ const REGEXP_NEWLINE = /\n{2,}/g;
117
118
  const REGEXP_ENDS_WHITESPACE = /^\s+$/;
118
119
  const NodeFilter_SHOW_ALL = 4294967295;
119
120
  const Node_ELEMENT_NODE = 1;
@@ -179,7 +180,17 @@ function collapseWhitespace(node, options) {
179
180
  noWhitespace = element && noWhitespaceCollapse(element);
180
181
  }
181
182
  if ((!element || noWhitespace) && textContent.length > 1) {
182
- node.textContent = textContent.replace(REGEXP_WHITESPACE, getWhiteSpace(node)).replace(REGEXP_NEWLINE, "\n");
183
+ const whitespace = getWhiteSpace(node);
184
+ let newTextContent;
185
+ if (whitespace == " ") {
186
+ newTextContent = textContent.replace(REGEXP_WHITESPACE_COLLAPSE, " ");
187
+ } else {
188
+ newTextContent = textContent.replace(REGEXP_WHITESPACE, whitespace);
189
+ }
190
+ newTextContent = newTextContent.replace(REGEXP_NEWLINE, "\n");
191
+ if (newTextContent != textContent) {
192
+ node.textContent = newTextContent;
193
+ }
183
194
  }
184
195
  }
185
196
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "single-file-core",
3
- "version": "1.5.83",
3
+ "version": "1.5.84",
4
4
  "description": "SingleFile Core",
5
5
  "author": "Gildas Lormeau",
6
6
  "license": "AGPL-3.0-or-later",
@@ -27,7 +27,7 @@ export {
27
27
  extract
28
28
  };
29
29
 
30
- async function extract(content, { password, prompt = () => { }, zipOptions = { useWebWorkers: false }, noBlobURL } = {}) {
30
+ async function extract(content, { password, prompt = () => { }, zipOptions = { useWebWorkers: true }, noBlobURL } = {}) {
31
31
  const KNOWN_MIMETYPES = {
32
32
  "gif": "image/gif",
33
33
  "jpg": "image/jpeg",
@@ -74,13 +74,17 @@ async function extract(content, { password, prompt = () => { }, zipOptions = { u
74
74
  const REGEXP_MATCH_MANIFEST = /manifest\.json$/;
75
75
  const CHARSET_UTF8 = ";charset=utf-8";
76
76
  const REGEXP_ESCAPE = /([{}()^$&.*?/+|[\\\\]|\]|-)/g;
77
-
78
- if (Array.isArray(content)) {
79
- content = new Blob([new Uint8Array(content)]);
80
- }
77
+ let reader;
81
78
  zip.configure(zipOptions);
82
- const blobReader = new zip.BlobReader(content);
83
- const zipReader = new zip.ZipReader(blobReader);
79
+ if (content.readUint8Array) {
80
+ reader = content;
81
+ } else {
82
+ if (Array.isArray(content)) {
83
+ content = new Blob([new Uint8Array(content)]);
84
+ }
85
+ reader = new zip.BlobReader(content);
86
+ }
87
+ const zipReader = new zip.ZipReader(reader);
84
88
  const entries = await zipReader.getEntries();
85
89
  const options = { password };
86
90
  let docContent, origDocContent, url, resources = [], indexPages = [], textResources = [];
@@ -98,7 +102,11 @@ async function extract(content, { password, prompt = () => { }, zipOptions = { u
98
102
  textResources.push(resourceInfo);
99
103
  }
100
104
  dataWriter = new zip.TextWriter();
101
- textContent = await entry.getData(dataWriter, options);
105
+ if (entry.uncompressedSize > 0) {
106
+ textContent = await entry.getData(dataWriter, options);
107
+ } else {
108
+ textContent = "";
109
+ }
102
110
  if (filename.match(REGEXP_MATCH_INDEX)) {
103
111
  mimeType = "text/html" + CHARSET_UTF8;
104
112
  } else {
@@ -129,7 +129,7 @@ async function process(pageData, options, lastModDate = new Date()) {
129
129
  } else if (!options.embeddedImage && options.embeddedPdf) {
130
130
  await writeData(zipDataWriter.writable, new Uint8Array(options.embeddedPdf));
131
131
  }
132
- const zipWriter = new ZipWriter(zipDataWriter, { bufferedWrite: true, keepOrder: false, lastModDate });
132
+ const zipWriter = new ZipWriter(zipDataWriter, { bufferedWrite: true, keepOrder: true, lastModDate });
133
133
  const startOffset = zipDataWriter.offset;
134
134
  pageData.url = options.url;
135
135
  pageData.archiveTime = (new Date()).toISOString();
@@ -246,8 +246,7 @@ async function prependHTMLData(pageData, zipDataWriter, script, options) {
246
246
  if (!options.extractDataFromPage) {
247
247
  pageContent += "<div id=sfz-error-message><strong>Error</strong>: Cannot open the page from the filesystem.";
248
248
  pageContent += "<ul style='line-height:20px;'>";
249
- pageContent += "<li style='margin-bottom:10px'><strong>Chrome</strong>: Install <a href='https://chrome.google.com/webstore/detail/singlefile/mpiodijhokgodhhofbcjdecpffjipkle'>SingleFile</a> and enable the option \"Allow access to file URLs\" in the details page of the extension (chrome://extensions/?id=mpiodijhokgodhhofbcjdecpffjipkle).</li>";
250
- pageContent += "<li style='margin-bottom:10px'><strong>Microsoft Edge</strong>: Install <a href='https://microsoftedge.microsoft.com/addons/detail/singlefile/efnbkdcfmcmnhlkaijjjmhjjgladedno'>SingleFile</a> and enable the option \"Allow access to file URLs\" in the details page of the extension (edge://extensions/?id=efnbkdcfmcmnhlkaijjjmhjjgladedno).</li>";
249
+ pageContent += "<li style='margin-bottom:10px'><strong>Chrome/Edge/Brave</strong>: Install <a href='https://www.getsinglefile.com'>SingleFile</a> and enable the option \"Allow access to file URLs\" in the details page of the extension.</li>";
251
250
  pageContent += "<li><strong>Safari</strong>: Select \"Security > Disable Local File Restrictions\" in the \"Develop > Developer settings\" menu.</li></ul></div>";
252
251
  }
253
252
  if (options.insertTextBody) {
@@ -275,12 +274,10 @@ async function prependHTMLData(pageData, zipDataWriter, script, options) {
275
274
  script = "<script>" +
276
275
  script +
277
276
  "document.currentScript.remove();" +
278
- "globalThis.addEventListener('load', () => {" +
279
277
  "globalThis.bootstrap=(()=>{let bootstrapStarted;return async content=>{if (bootstrapStarted) return bootstrapStarted; bootstrapStarted = (" +
280
278
  extract.toString().replace(/\n|\t/g, "") + ")(content,{prompt}).then(({docContent}) => " +
281
279
  display.toString().replace(/\n|\t/g, "") + "(document,docContent," + JSON.stringify(displayOptions) + "));return bootstrapStarted;}})();(" +
282
280
  getContent.toString().replace(/\n|\t/g, "") + ")().then(globalThis.bootstrap).then(() => document.dispatchEvent(new CustomEvent(\"single-file-display-infobar\"))).catch(()=>{});" +
283
- "});" +
284
281
  "</script>";
285
282
  pageContent += script;
286
283
  let extraData = "";
@@ -341,7 +338,7 @@ function getHTMLHeadData(pageData, options) {
341
338
  const cspContent = "default-src 'none';connect-src 'self' data: blob:;font-src 'self' data: blob:;img-src 'self' data: blob:;style-src 'self' 'unsafe-inline' data: blob:;frame-src 'self' data: blob:;media-src 'self' data: blob:;script-src 'self' 'unsafe-inline' data: blob:;object-src 'self' data: blob:";
342
339
  pageContent += `<meta http-equiv=content-security-policy content=${JSON.stringify(cspContent)}>`;
343
340
  }
344
- pageContent += "<style>@keyframes display-wait-message{0%{opacity:0}100%{opacity:1}};body{color:transparent};div{color:initial}</style>";
341
+ pageContent += "<style>@keyframes display-wait-message{0%{opacity:0}100%{opacity:1}};body{color:transparent};div{color:initial}body>:not(#sfz-wait-message,#sfz-error-message){display:none}</style>";
345
342
  pageContent += "<body hidden>";
346
343
  return pageContent;
347
344
  }
@@ -419,31 +416,70 @@ async function addFile(zipWriter, prefixName, data, disableCompresson) {
419
416
 
420
417
  async function getContent() {
421
418
  const BASE64_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
422
- const { Blob, XMLHttpRequest, document, stop } = globalThis;
419
+ const { Blob, XMLHttpRequest, document, zip, location } = globalThis;
423
420
  const characterMap = new Map([
424
421
  [65533, 0], [8364, 128], [8218, 130], [402, 131], [8222, 132], [8230, 133], [8224, 134], [8225, 135], [710, 136], [8240, 137],
425
422
  [352, 138], [8249, 139], [338, 140], [381, 142], [8216, 145], [8217, 146], [8220, 147], [8221, 148], [8226, 149], [8211, 150],
426
423
  [8212, 151], [732, 152], [8482, 153], [353, 154], [8250, 155], [339, 156], [382, 158], [376, 159]
427
424
  ]);
428
- const xhr = new XMLHttpRequest();
429
- document.body.querySelectorAll("meta, style").forEach(element => document.head.appendChild(element));
430
- xhr.responseType = "blob";
431
- xhr.open("GET", "");
432
425
  return new Promise((resolve, reject) => {
433
- xhr.onerror = () => {
434
- extractPageData().then(resolve).catch(() => {
435
- displayMessage("sfz-error-message", 2);
436
- reject();
437
- });
438
- };
439
- xhr.send();
440
- xhr.onload = () => {
441
- stop();
442
- displayMessage("sfz-wait-message", 2);
443
- resolve(xhr.response);
444
- };
426
+ let aborted = false;
427
+ getPageData();
428
+
429
+ function getPageData() {
430
+ const xhr = new XMLHttpRequest();
431
+ xhr.responseType = "blob";
432
+ xhr.open("GET", "");
433
+ xhr.onerror = async () => {
434
+ if (aborted) {
435
+ displayMessage("sfz-error-message", 2);
436
+ reject();
437
+ } else {
438
+ try {
439
+ await waitForDocumentReady(document);
440
+ document.body.querySelectorAll("meta, style").forEach(element => document.head.appendChild(element));
441
+ const pageData = extractPageData();
442
+ displayMessage("sfz-wait-message", 2);
443
+ resolve(pageData);
444
+ } catch {
445
+ displayMessage("sfz-error-message", 2);
446
+ reject();
447
+ };
448
+ }
449
+ };
450
+ xhr.send();
451
+ xhr.onreadystatechange = () => {
452
+ if (xhr.readyState === 2 && xhr.status === 200 && !aborted) {
453
+ aborted = true;
454
+ const httpRangeSupport = xhr.getResponseHeader("Accept-Ranges") === "bytes";
455
+ xhr.abort();
456
+ displayMessage("sfz-wait-message", 2);
457
+ if (httpRangeSupport) {
458
+ resolve(new zip.HttpRangeReader(location.href, {
459
+ useXHR: true,
460
+ combineSizeEocd: true
461
+ }));
462
+ } else {
463
+ getPageData();
464
+ }
465
+ }
466
+ };
467
+ if (aborted) {
468
+ xhr.onload = () => resolve(xhr.response);
469
+ }
470
+ }
445
471
  });
446
472
 
473
+ function waitForDocumentReady(document) {
474
+ return new Promise(resolve => {
475
+ if (document.readyState === "complete" || document.readyState === "interactive") {
476
+ resolve();
477
+ } else {
478
+ document.addEventListener("DOMContentLoaded", () => resolve());
479
+ }
480
+ });
481
+ }
482
+
447
483
  function displayMessage(elementId, delay = 0) {
448
484
  const element = document.getElementById(elementId);
449
485
  if (element) {
@@ -457,7 +493,7 @@ async function getContent() {
457
493
  }
458
494
  }
459
495
 
460
- async function extractPageData() {
496
+ function extractPageData() {
461
497
  const zipDataElement = document.querySelector("sfz-extra-data");
462
498
  if (zipDataElement) {
463
499
  let dataNode = zipDataElement.nextSibling;
@@ -472,7 +508,6 @@ async function getContent() {
472
508
  }
473
509
  const zipData = [];
474
510
  let { textContent } = dataNode;
475
- displayMessage("sfz-wait-message", 2);
476
511
  for (let index = 0; index < textContent.length; index++) {
477
512
  const charCode = textContent.charCodeAt(index);
478
513
  zipData.push(charCode > 255 ? characterMap.get(charCode) : charCode);
@@ -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:n,String:r,Number:s,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:u,URL:h,Error:f,Uint8Array:d,Uint16Array:p,Uint32Array:w,DataView:g,Blob:m,Promise:y,TextEncoder:b,TextDecoder:v,document:k,crypto:S,btoa:z,TransformStream:x,ReadableStream:_,WritableStream:D,CompressionStream:F,DecompressionStream:C,navigator:T,Worker:W}="undefined"!=typeof globalThis?globalThis:this||self;var U=d,A=p,L=Int32Array,E=new U([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),R=new U([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),B=new U([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),M=(e,t)=>{for(var n=new A(31),r=0;31>r;++r)n[r]=t+=1<<e[r-1];var s=new L(n[30]);for(r=1;30>r;++r)for(var a=n[r];a<n[r+1];++a)s[a]=a-n[r]<<5|r;return{b:n,r:s}},P=M(E,2),O=P.b,I=P.r;O[28]=258,I[258]=28;for(var N=M(R,0),V=N.b,q=N.r,H=new A(32768),K=0;32768>K;++K){var Z=(43690&K)>>1|(21845&K)<<1;Z=(61680&(Z=(52428&Z)>>2|(13107&Z)<<2))>>4|(3855&Z)<<4,H[K]=((65280&Z)>>8|(255&Z)<<8)>>1}var j=(e,t,n)=>{for(var r=e.length,s=0,a=new A(t);r>s;++s)e[s]&&++a[e[s]-1];var i,o=new A(t);for(s=1;t>s;++s)o[s]=o[s-1]+a[s-1]<<1;if(n){i=new A(1<<t);var c=15-t;for(s=0;r>s;++s)if(e[s])for(var l=s<<4|e[s],u=t-e[s],h=o[e[s]-1]++<<u,f=h|(1<<u)-1;f>=h;++h)i[H[h]>>c]=l}else for(i=new A(r),s=0;r>s;++s)e[s]&&(i[s]=H[o[e[s]-1]++]>>15-e[s]);return i},G=new U(288);for(K=0;144>K;++K)G[K]=8;for(K=144;256>K;++K)G[K]=9;for(K=256;280>K;++K)G[K]=7;for(K=280;288>K;++K)G[K]=8;var J=new U(32);for(K=0;32>K;++K)J[K]=5;var Q=j(G,9,0),X=j(G,9,1),Y=j(J,5,0),$=j(J,5,1),ee=e=>{for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},te=(e,t,n)=>{var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&n},ne=(e,t)=>{var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(7&t)},re=e=>(e+7)/8|0,se=(e,t,n)=>((null==t||0>t)&&(t=0),(null==n||n>e.length)&&(n=e.length),new U(e.subarray(t,n))),ae=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],ie=(e,t,n)=>{var r=new f(t||ae[e]);if(r.code=e,f.captureStackTrace&&f.captureStackTrace(r,ie),!n)throw r;return r},oe=(e,t,n)=>{n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},ce=(e,t,n)=>{n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},le=(e,t)=>{for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var s=n.length,a=n.slice();if(!s)return{t:ge,l:0};if(1==s){var i=new U(n[0].s+1);return i[n[0].s]=1,{t:i,l:1}}n.sort(((e,t)=>e.f-t.f)),n.push({s:-1,f:25001});var o=n[0],c=n[1],l=0,u=1,h=2;for(n[0]={s:-1,f:o.f+c.f,l:o,r:c};u!=s-1;)o=n[n[l].f<n[h].f?l++:h++],c=n[l!=u&&n[l].f<n[h].f?l++:h++],n[u++]={s:-1,f:o.f+c.f,l:o,r:c};var f=a[0].s;for(r=1;s>r;++r)a[r].s>f&&(f=a[r].s);var d=new A(f+1),p=ue(n[u-1],d,0);if(p>t){r=0;var w=0,g=p-t,m=1<<g;for(a.sort(((e,t)=>d[t.s]-d[e.s]||e.f-t.f));s>r;++r){var y=a[r].s;if(d[y]<=t)break;w+=m-(1<<p-d[y]),d[y]=t}for(w>>=g;w>0;){var b=a[r].s;d[b]<t?w-=1<<t-d[b]++-1:++r}for(;r>=0&&w;--r){var v=a[r].s;d[v]==t&&(--d[v],++w)}p=t}return{t:new U(d),l:p}},ue=(e,t,n)=>-1==e.s?i.max(ue(e.l,t,n+1),ue(e.r,t,n+1)):t[e.s]=n,he=e=>{for(var t=e.length;t&&!e[--t];);for(var n=new A(++t),r=0,s=e[0],a=1,i=e=>{n[r++]=e},o=1;t>=o;++o)if(e[o]==s&&o!=t)++a;else{if(!s&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(s),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(s);a=1,s=e[o]}return{c:n.subarray(0,r),n:t}},fe=(e,t)=>{for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},de=(e,t,n)=>{var r=n.length,s=re(t+2);e[s]=255&r,e[s+1]=r>>8,e[s+2]=255^e[s],e[s+3]=255^e[s+1];for(var a=0;r>a;++a)e[s+a+4]=n[a];return 8*(s+4+r)},pe=(e,t,n,r,s,a,i,o,c,l,u)=>{oe(t,u++,n),++s[256];for(var h=le(s,15),f=h.t,d=h.l,p=le(a,15),w=p.t,g=p.l,m=he(f),y=m.c,b=m.n,v=he(w),k=v.c,S=v.n,z=new A(19),x=0;x<y.length;++x)++z[31&y[x]];for(x=0;x<k.length;++x)++z[31&k[x]];for(var _=le(z,7),D=_.t,F=_.l,C=19;C>4&&!D[B[C-1]];--C);var T,W,U,L,M=l+5<<3,P=fe(s,G)+fe(a,J)+i,O=fe(s,f)+fe(a,w)+i+14+3*C+fe(z,D)+2*z[16]+3*z[17]+7*z[18];if(c>=0&&P>=M&&O>=M)return de(t,u,e.subarray(c,c+l));if(oe(t,u,1+(P>O)),u+=2,P>O){T=j(f,d,0),W=f,U=j(w,g,0),L=w;var I=j(D,F,0);for(oe(t,u,b-257),oe(t,u+5,S-1),oe(t,u+10,C-4),u+=14,x=0;C>x;++x)oe(t,u+3*x,D[B[x]]);u+=3*C;for(var N=[y,k],V=0;2>V;++V){var q=N[V];for(x=0;x<q.length;++x){var H=31&q[x];oe(t,u,I[H]),u+=D[H],H>15&&(oe(t,u,q[x]>>5&127),u+=q[x]>>12)}}}else T=Q,W=G,U=Y,L=J;for(x=0;o>x;++x){var K=r[x];if(K>255){ce(t,u,T[257+(H=K>>18&31)]),u+=W[H+257],H>7&&(oe(t,u,K>>23&31),u+=E[H]);var Z=31&K;ce(t,u,U[Z]),u+=L[Z],Z>3&&(ce(t,u,K>>5&8191),u+=R[Z])}else ce(t,u,T[K]),u+=W[K]}return ce(t,u,T[256]),u+W[256]},we=new L([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ge=new U(0),me=function(){function e(e,t){if("function"==typeof e&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new U(98304),this.o.dictionary){var n=this.o.dictionary.subarray(-32768);this.b.set(n,32768-n.length),this.s.i=32768-n.length}}return e.prototype.p=function(e,t){this.ondata(((e,t,n,r,s)=>{if(!s&&(s={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new U(a.length+e.length);o.set(a),o.set(e,a.length),e=o,s.w=a.length}return((e,t,n,r,s,a)=>{var o=a.z||e.length,c=new U(0+o+5*(1+i.ceil(o/7e3))+0),l=c.subarray(0,c.length-0),u=a.l,h=7&(a.r||0);if(t){h&&(l[0]=a.r>>3);for(var f=we[t-1],d=f>>13,p=8191&f,w=(1<<n)-1,g=a.p||new A(32768),m=a.h||new A(w+1),y=i.ceil(n/3),b=2*y,v=t=>(e[t]^e[t+1]<<y^e[t+2]<<b)&w,k=new L(25e3),S=new A(288),z=new A(32),x=0,_=0,D=a.i||0,F=0,C=a.w||0,T=0;o>D+2;++D){var W=v(D),B=32767&D,M=m[W];if(g[B]=M,m[W]=B,D>=C){var P=o-D;if((x>7e3||F>24576)&&(P>423||!u)){h=pe(e,l,0,k,S,z,_,F,T,D-T,h),F=x=_=0,T=D;for(var O=0;286>O;++O)S[O]=0;for(O=0;30>O;++O)z[O]=0}var N=2,V=0,H=p,K=B-M&32767;if(P>2&&W==v(D-K))for(var Z=i.min(d,P)-1,j=i.min(32767,D),G=i.min(258,P);j>=K&&--H&&B!=M;){if(e[D+N]==e[D+N-K]){for(var J=0;G>J&&e[D+J]==e[D+J-K];++J);if(J>N){if(N=J,V=K,J>Z)break;var Q=i.min(K,J-2),X=0;for(O=0;Q>O;++O){var Y=D-K+O&32767,$=Y-g[Y]&32767;$>X&&(X=$,M=Y)}}}K+=(B=M)-(M=g[B])&32767}if(V){k[F++]=268435456|I[N]<<18|q[V];var ee=31&I[N],te=31&q[V];_+=E[ee]+R[te],++S[257+ee],++z[te],C=D+N,++x}else k[F++]=e[D],++S[e[D]]}}for(D=i.max(D,C);o>D;++D)k[F++]=e[D],++S[e[D]];h=pe(e,l,u,k,S,z,_,F,T,D-T,h),u||(a.r=7&h|l[h/8|0]<<3,h-=7,a.h=m,a.p=g,a.i=D,a.w=C)}else{for(D=a.w||0;o+u>D;D+=65535){var ne=D+65535;o>ne||(l[h/8|0]=u,ne=o),h=de(l,h+1,e.subarray(D,ne))}a.i=o}return se(c,0,0+re(h)+0)})(e,null==t.level?6:t.level,null==t.mem?s.l?i.ceil(1.5*i.max(8,i.min(13,i.log(e.length)))):20:12+t.mem,0,0,s)})(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||ie(5),this.s.l&&ie(4);var n=e.length+this.s.z;if(n>this.b.length){if(n>2*this.b.length-32768){var r=new U(-32768&n);r.set(this.b.subarray(0,this.s.z)),this.b=r}var s=this.b.length-this.s.z;this.b.set(e.subarray(0,s),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(s),32768),this.s.z=e.length-s+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=1&t,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2)},e.prototype.flush=function(){this.ondata||ie(5),this.s.l&&ie(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},e}(),ye=function(){function e(e,t){"function"==typeof e&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new U(32768),this.p=new U(0),n&&this.o.set(n)}return e.prototype.e=function(e){if(this.ondata||ie(5),this.d&&ie(4),this.p.length){if(e.length){var t=new U(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}}else this.p=e},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=((e,t,n)=>{var r=e.length;if(!r||t.f&&!t.l)return n||new U(0);var s=!n,a=s||2!=t.i,o=t.i;s&&(n=new U(3*r));var c=e=>{var t=n.length;if(e>t){var r=new U(i.max(2*t,e));r.set(n),n=r}},l=t.f||0,u=t.p||0,h=t.b||0,f=t.l,d=t.d,p=t.m,w=t.n,g=8*r;do{if(!f){l=te(e,u,1);var m=te(e,u+1,3);if(u+=3,!m){var y=e[(T=re(u)+4)-4]|e[T-3]<<8,b=T+y;if(b>r){o&&ie(0);break}a&&c(h+y),n.set(e.subarray(T,b),h),t.b=h+=y,t.p=u=8*b,t.f=l;continue}if(1==m)f=X,d=$,p=9,w=5;else if(2==m){var v=te(e,u,31)+257,k=te(e,u+10,15)+4,S=v+te(e,u+5,31)+1;u+=14;for(var z=new U(S),x=new U(19),_=0;k>_;++_)x[B[_]]=te(e,u+3*_,7);u+=3*k;var D=ee(x),F=(1<<D)-1,C=j(x,D,1);for(_=0;S>_;){var T,W=C[te(e,u,F)];if(u+=15&W,16>(T=W>>4))z[_++]=T;else{var A=0,L=0;for(16==T?(L=3+te(e,u,3),u+=2,A=z[_-1]):17==T?(L=3+te(e,u,7),u+=3):18==T&&(L=11+te(e,u,127),u+=7);L--;)z[_++]=A}}var M=z.subarray(0,v),P=z.subarray(v);p=ee(M),w=ee(P),f=j(M,p,1),d=j(P,w,1)}else ie(1);if(u>g){o&&ie(0);break}}a&&c(h+131072);for(var I=(1<<p)-1,N=(1<<w)-1,q=u;;q=u){var H=(A=f[ne(e,u)&I])>>4;if((u+=15&A)>g){o&&ie(0);break}if(A||ie(2),256>H)n[h++]=H;else{if(256==H){q=u,f=null;break}var K=H-254;if(H>264){var Z=E[_=H-257];K=te(e,u,(1<<Z)-1)+O[_],u+=Z}var G=d[ne(e,u)&N],J=G>>4;if(G||ie(3),u+=15&G,P=V[J],J>3&&(Z=R[J],P+=ne(e,u)&(1<<Z)-1,u+=Z),u>g){o&&ie(0);break}a&&c(h+131072);var Q=h+K;if(P>h){var Y=0-P,ae=i.min(P,Q);for(0>Y+h&&ie(3);ae>h;++h)n[h]=(void 0)[Y+h]}for(;Q>h;++h)n[h]=n[h-P]}}t.l=f,t.p=q,t.b=h,t.f=l,f&&(l=1,t.m=p,t.d=d,t.n=w)}while(!l);return h!=n.length&&s?se(n,0,h):n.subarray(0,h)})(this.p,this.s,this.o);this.ondata(se(n,t,this.s.b),this.d),this.o=se(n,this.s.b-32768),this.s.b=this.o.length,this.p=se(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),be=void 0!==v&&new v;try{be.decode(ge,{stream:!0})}catch(e){}const ve=4294967295,ke=65535,Se=33639248,ze=101075792,xe=void 0,_e="undefined",De="function";function Fe(e,t,r){return class{constructor(s){const a=this;var i,o;i=s,o="level",(typeof n.hasOwn===De?n.hasOwn(i,o):i.hasOwnProperty(o))&&s.level===xe&&delete s.level,a.codec=new e(n.assign({},t,s)),r(a.codec,(e=>{if(a.pendingData){const t=a.pendingData;a.pendingData=new d(t.length+e.length);const{pendingData:n}=a;n.set(t,0),n.set(e,t.length)}else a.pendingData=new d(e)}))}append(e){return this.codec.push(e),s(this)}flush(){return this.codec.push(new d,!0),s(this)}};function s(e){if(e.pendingData){const t=e.pendingData;return e.pendingData=null,t}return new d}}const{Deflate:Ce,Inflate:Te}=((e,t={},n)=>({Deflate:Fe(e.Deflate,t.deflate,n),Inflate:Fe(e.Inflate,t.inflate,n)}))({Deflate:me,Inflate:ye},xe,((e,t)=>e.ondata=t));class We{constructor(e){return class extends x{constructor(t,n){const r=new e(n);super({transform(e,t){t.enqueue(r.append(e))},flush(e){const t=r.flush();t&&e.enqueue(t)}})}}}}let Ue=2;try{typeof T!=_e&&T.hardwareConcurrency&&(Ue=T.hardwareConcurrency)}catch(e){}const Ae={chunkSize:524288,maxWorkers:Ue,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:xe,CompressionStreamNative:typeof F!=_e&&F,DecompressionStreamNative:typeof C!=_e&&C},Le=n.assign({},Ae);function Ee(e){const{baseURL:n,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:a,useCompressionStream:i,useWebWorkers:o,Deflate:c,Inflate:l,CompressionStream:u,DecompressionStream:h,workerScripts:d}=e;if(Re("baseURL",n),Re("chunkSize",r),Re("maxWorkers",s),Re("terminateWorkerTimeout",a),Re("useCompressionStream",i),Re("useWebWorkers",o),c&&(Le.CompressionStream=new We(c)),l&&(Le.DecompressionStream=new We(l)),Re("CompressionStream",u),Re("DecompressionStream",h),d!==xe){const{deflate:e,inflate:n}=d;if((e||n)&&(Le.workerScripts||(Le.workerScripts={})),e){if(!t.isArray(e))throw new f("workerScripts.deflate must be an array");Le.workerScripts.deflate=e}if(n){if(!t.isArray(n))throw new f("workerScripts.inflate must be an array");Le.workerScripts.inflate=n}}}function Re(e,t){t!==xe&&(Le[e]=t)}const Be=65536,Me="writable";class Pe{constructor(){this.size=0}init(){this.initialized=!0}}class Oe extends Pe{get readable(){const e=this,{chunkSize:t=Be}=e,n=new _({start(){this.chunkOffset=0},async pull(r){const{offset:s=0,size:a,diskNumberStart:o}=n,{chunkOffset:c}=this;r.enqueue(await je(e,s+c,i.min(t,a-c),o)),c+t>a?r.close():this.chunkOffset+=t}});return n}}class Ie extends Pe{constructor(){super();const e=this,t=new D({write:t=>e.writeUint8Array(t)});n.defineProperty(e,Me,{get:()=>t})}writeUint8Array(){}}class Ne extends Oe{constructor(e){super(),n.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,r=e+t,s=e||r<n.size?n.blob.slice(e,r):n.blob;let a=await s.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,r)),new d(a)}}class Ve extends Pe{constructor(e){super();const t=new x,r=[];e&&r.push(["Content-Type",e]),n.defineProperty(this,Me,{get:()=>t.writable}),this.blob=new u(t.readable,{headers:r}).blob()}getData(){return this.blob}}class qe extends Oe{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(n,r)=>{await n.init(),r!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const r=this,{readers:s}=this;let a,o=n;-1==o&&(o=s.length-1);let c=e;for(;c>=s[o].size;)c-=s[o].size,o++;const l=s[o],u=l.size;if(c+t>u){const s=u-c;a=new d(t),a.set(await je(l,c,s)),a.set(await r.readUint8Array(e+s,t-s,n),s)}else a=await je(l,c,t);return r.lastDiskNumber=i.max(o,r.lastDiskNumber),a}}class He extends Pe{constructor(e,t=4294967295){super();const r=this;let s,a,i;n.assign(r,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){const{availableSize:n}=r;if(i)t.length<n?await c(t):(await c(t.slice(0,n)),await l(),r.diskOffset+=s.size,r.diskNumber++,i=null,await this.write(t.slice(n)));else{const{value:n,done:o}=await e.next();if(o&&!n)throw new f("Writer iterator completed too soon");s=n,s.size=0,s.maxSize&&(r.maxSize=s.maxSize),r.availableSize=r.maxSize,await Ke(s),a=n.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),s.size+=t,r.size+=t,r.availableSize-=t)}async function l(){a.size=s.size,await i.close()}n.defineProperty(r,Me,{get:()=>o})}}async function Ke(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function Ze(e){return t.isArray(e)&&(e=new qe(e)),e instanceof _&&(e={readable:e}),e}function je(e,t,n,r){return e.readUint8Array(t,n,r)}const Ge=[];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;Ge[e]=t}class Je{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,r=0|e.length;r>n;n++)t=t>>>8^Ge[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class Qe extends x{constructor(){let e;const t=new Je;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new d(4);new g(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Xe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],r=Xe.getPartial(n);return 32===r?e.concat(t):Xe._shiftRight(t,r,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Xe.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=Xe.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,n,r){for(void 0===r&&(r=[]);t>=32;t-=32)r.push(n),n=0;if(0===t)return r.concat(e);for(let s=0;s<e.length;s++)r.push(n|e[s]>>>t),n=e[s]<<32-t;const s=e.length?e[e.length-1]:0,a=Xe.getPartial(s);return r.push(Xe.partial(t+a&31,t+a>32?n:r.pop(),1)),r}},Ye={bytes:{fromBits(e){const t=Xe.bitLength(e)/8,n=new d(t);let r;for(let s=0;t>s;s++)3&s||(r=e[s/4]),n[s]=r>>>24,r<<=8;return n},toBits(e){const t=[];let n,r=0;for(n=0;n<e.length;n++)r=r<<8|e[n],3&~n||(t.push(r),r=0);return 3&n&&t.push(Xe.partial(8*(3&n),r)),t}}},$e=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=Ye.utf8String.toBits(e));const n=t._buffer=Xe.concat(t._buffer,e),r=t._length,s=t._length=r+Xe.bitLength(e);if(s>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new w(n);let i=0;for(let e=t.blockSize+r-(t.blockSize+r&t.blockSize-1);s>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return n.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Xe.concat(t,[Xe.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(),n}_f(e,t,n,r){return e>19?e>39?e>59?e>79?void 0:t^n^r:t&n|t&r|n&r:t^n^r:t&n|~t&r}_S(e,t){return t<<e|t>>>32-e}_block(e){const n=this,r=n._h,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let a=r[0],o=r[1],c=r[2],l=r[3],u=r[4];for(let e=0;79>=e;e++){16>e||(s[e]=n._S(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=n._S(5,a)+n._f(e,o,c,l)+u+s[e]+n._key[i.floor(e/20)]|0;u=l,l=c,c=n._S(30,o),o=a,a=t}r[0]=r[0]+a|0,r[1]=r[1]+o|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+u|0}},et={getRandomValues(e){const t=new w(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(i.random()>.5?1:-1))};for(let r,s=0;s<e.length;s+=4){const e=n(4294967296*(r||i.random()));r=987654071*e(),t[s/4]=4294967296*e()|0}return e}},tt={importKey:e=>new tt.hmacSha1(Ye.bytes.toBits(e)),pbkdf2(e,t,n,r){if(n=n||1e4,0>r||0>n)throw new f("invalid params to pbkdf2");const s=1+(r>>5)<<2;let a,i,o,c,l;const u=new ArrayBuffer(s),h=new g(u);let d=0;const p=Xe;for(t=Ye.bytes.toBits(t),l=1;(s||1)>d;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;n>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(s||1)>d&&o<a.length;o++)h.setInt32(d,a[o]),d+=4}return u.slice(0,r/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=$e,r=[[],[]];t._baseHash=[new n,new n];const s=t._baseHash[0].blockSize/32;e.length>s&&(e=(new n).update(e).finalize());for(let t=0;s>t;t++)r[0][t]=909522486^e[t],r[1][t]=1549556828^e[t];t._baseHash[0].update(r[0]),t._baseHash[1].update(r[1]),t._resultHash=new n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},nt=typeof S!=_e&&typeof S.getRandomValues==De,rt="Invalid password",st="Invalid signature",at="zipjs-abort-check-password";function it(e){return nt?S.getRandomValues(e):et.getRandomValues(e)}const ot=16,ct={name:"PBKDF2"},lt=n.assign({hash:{name:"HMAC"}},ct),ut=n.assign({iterations:1e3,hash:{name:"SHA-1"}},ct),ht=["deriveBits"],ft=[8,12,16],dt=[16,24,32],pt=10,wt=[0,0,0,0],gt=typeof S!=_e,mt=gt&&S.subtle,yt=gt&&typeof mt!=_e,bt=Ye.bytes,vt=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],r=t._tables[1],s=e.length;let a,i,o,c=1;if(4!==s&&6!==s&&8!==s)throw new f("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=s;4*s+28>a;a++){let e=i[a-1];(a%s==0||8===s&&a%s==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],a%s==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-s]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:r[0][n[t>>>24]]^r[1][n[t>>16&255]]^r[2][n[t>>8&255]]^r[3][n[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],n=e[4],r=t[4],s=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(s[e]=e<<1^283*(e>>7))^e]=e;for(let u=i=0;!n[u];u^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[u]=a,r[a]=u,l=s[c=s[o=s[u]]];let h=16843009*l^65537*c^257*o^16843008*u,f=257*s[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=f=f<<24^f>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new f("invalid aes block size");const n=this._key[t],r=n.length/4-2,s=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],u=a[4];let h,d,p,w=e[0]^n[0],g=e[t?3:1]^n[1],m=e[2]^n[2],y=e[t?1:3]^n[3],b=4;for(let e=0;r>e;e++)h=i[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&y]^n[b],d=i[g>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&w]^n[b+1],p=i[m>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&g]^n[b+2],y=i[y>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[b+3],b+=4,w=h,g=d,m=p;for(let e=0;4>e;e++)s[t?3&-e:e]=u[w>>>24]<<24^u[g>>16&255]<<16^u[m>>8&255]<<8^u[255&y]^n[b++],h=w,w=g,g=m,m=y,y=h;return s}},kt=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,n=e>>8&255,r=255&e;255===t?(t=0,255===n?(n=0,255===r?r=0:++r):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=r}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let r;if(!(r=t.length))return[];const s=Xe.bitLength(t);for(let s=0;r>s;s+=4){this.incCounter(n);const r=e.encrypt(n);t[s]^=r[0],t[s+1]^=r[1],t[s+2]^=r[2],t[s+3]^=r[3]}return Xe.clamp(t,s)}},St=tt.hmacSha1;let zt=gt&&yt&&typeof mt.importKey==De,xt=gt&&yt&&typeof mt.deriveBits==De;class _t extends x{constructor({password:e,rawPassword:t,signed:r,encryptionStrength:s,checkPasswordOnly:a}){super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:Tt(e,t),signed:r,strength:s-1,pending:new d})},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:i,ready:o}=n;r?(await(async(e,t,n,r)=>{const s=await Ct(e,t,n,Ut(r,0,ft[t])),a=Ut(r,ft[t]);if(s[0]!=a[0]||s[1]!=a[1])throw new f(rt)})(n,s,r,Ut(e,0,ft[s]+2)),e=Ut(e,ft[s]+2),a?t.error(new f(at)):i()):await o;const c=new d(e.length-pt-(e.length-pt)%ot);t.enqueue(Ft(n,e,c,0,pt,!0))},async flush(e){const{signed:t,ctr:n,hmac:r,pending:s,ready:a}=this;if(r&&n){await a;const i=Ut(s,0,s.length-pt),o=Ut(s,s.length-pt);let c=new d;if(i.length){const e=Lt(bt,i);r.update(e);const t=n.update(e);c=At(bt,t)}if(t){const e=Ut(At(bt,r.digest()),0,pt);for(let t=0;pt>t;t++)if(e[t]!=o[t])throw new f(st)}e.enqueue(c)}}})}}class Dt extends x{constructor({password:e,rawPassword:t,encryptionStrength:r}){let s;super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:Tt(e,t),strength:r-1,pending:new d})},async transform(e,t){const n=this,{password:r,strength:s,resolveReady:a,ready:i}=n;let o=new d;r?(o=await(async(e,t,n)=>{const r=it(new d(ft[t]));return Wt(r,await Ct(e,t,n,r))})(n,s,r),a()):await i;const c=new d(o.length+e.length-e.length%ot);c.set(o,0),t.enqueue(Ft(n,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:n,pending:r,ready:a}=this;if(n&&t){await a;let i=new d;if(r.length){const e=t.update(Lt(bt,r));n.update(e),i=At(bt,e)}s.signature=At(bt,n.digest()).slice(0,pt),e.enqueue(Wt(i,s.signature))}}}),s=this}}function Ft(e,t,n,r,s,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-s;let u;for(c.length&&(t=Wt(c,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new d(t)).set(n,0)}return e})(n,l-l%ot)),u=0;l-ot>=u;u+=ot){const e=Lt(bt,Ut(t,u,u+ot));a&&o.update(e);const s=i.update(e);a||o.update(s),n.set(At(bt,s),u+r)}return e.pending=Ut(t,u),n}async function Ct(e,r,s,a){e.password=null;const i=await(async(e,t,n,r,s)=>{if(!zt)return tt.importKey(t);try{return await mt.importKey("raw",t,n,!1,s)}catch(e){return zt=!1,tt.importKey(t)}})(0,s,lt,0,ht),o=await(async(e,t,n)=>{if(!xt)return tt.pbkdf2(t,e.salt,ut.iterations,n);try{return await mt.deriveBits(e,t,n)}catch(r){return xt=!1,tt.pbkdf2(t,e.salt,ut.iterations,n)}})(n.assign({salt:a},ut),i,8*(2*dt[r]+2)),c=new d(o),l=Lt(bt,Ut(c,0,dt[r])),u=Lt(bt,Ut(c,dt[r],2*dt[r])),h=Ut(c,2*dt[r]);return n.assign(e,{keys:{key:l,authentication:u,passwordVerification:h},ctr:new kt(new vt(l),t.from(wt)),hmac:new St(u)}),h}function Tt(e,t){return t===xe?(e=>{if(typeof b==_e){const t=new d((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new b).encode(e)})(e):t}function Wt(e,t){let n=e;return e.length+t.length&&(n=new d(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Ut(e,t,n){return e.subarray(t,n)}function At(e,t){return e.fromBits(t)}function Lt(e,t){return e.toBits(t)}class Et extends x{constructor({password:e,passwordVerification:t,checkPasswordOnly:r}){super({start(){n.assign(this,{password:e,passwordVerification:t}),Pt(this,e)},transform(e,t){const n=this;if(n.password){const t=Bt(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new f(rt);e=e.subarray(12)}r?t.error(new f(at)):t.enqueue(Bt(n,e))}})}}class Rt extends x{constructor({password:e,passwordVerification:t}){super({start(){n.assign(this,{password:e,passwordVerification:t}),Pt(this,e)},transform(e,t){const n=this;let r,s;if(n.password){n.password=null;const t=it(new d(12));t[11]=n.passwordVerification,r=new d(e.length+t.length),r.set(Mt(n,t),0),s=12}else r=new d(e.length),s=0;r.set(Mt(n,e),s),t.enqueue(r)}})}}function Bt(e,t){const n=new d(t.length);for(let r=0;r<t.length;r++)n[r]=It(e)^t[r],Ot(e,n[r]);return n}function Mt(e,t){const n=new d(t.length);for(let r=0;r<t.length;r++)n[r]=It(e)^t[r],Ot(e,t[r]);return n}function Pt(e,t){const r=[305419896,591751049,878082192];n.assign(e,{keys:r,crcKey0:new Je(r[0]),crcKey2:new Je(r[2])});for(let n=0;n<t.length;n++)Ot(e,t.charCodeAt(n))}function Ot(e,t){let[n,r,s]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=Vt(i.imul(Vt(r+Nt(n)),134775813)+1),e.crcKey2.append([r>>>24]),s=~e.crcKey2.get(),e.keys=[n,r,s]}function It(e){const t=2|e.keys[2];return Nt(i.imul(t,1^t)>>>8)}function Nt(e){return 255&e}function Vt(e){return 4294967295&e}const qt="deflate-raw";class Ht extends x{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:r}){super({});const{compressed:s,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,u=this;let h,f,d=Zt(super.readable);a&&!o||!c||(h=new Qe,d=Jt(d,h)),s&&(d=Gt(d,i,{level:l,chunkSize:t},r,n)),a&&(o?d=Jt(d,new Rt(e)):(f=new Dt(e),d=Jt(d,f))),jt(u,d,(()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new g(h.value.buffer).getUint32(0)),u.signature=e}))}}class Kt extends x{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:r}){super({});const{zipCrypto:s,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l}=e;let u,h,d=Zt(super.readable);a&&(s?d=Jt(d,new Et(e)):(h=new _t(e),d=Jt(d,h))),c&&(d=Gt(d,l,{chunkSize:t},r,n)),a&&!s||!i||(u=new Qe,d=Jt(d,u)),jt(this,d,(()=>{if((!a||s)&&i){const e=new g(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(st)}}))}}function Zt(e){return Jt(e,new x({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function jt(e,t,r){t=Jt(t,new x({flush:r})),n.defineProperty(e,"readable",{get:()=>t})}function Gt(e,t,n,r,s){try{e=Jt(e,new(t&&r?r:s)(qt,n))}catch(r){if(!t)return e;try{e=Jt(e,new s(qt,n))}catch(t){return e}}return e}function Jt(e,t){return e.pipeThrough(t)}const Qt="data",Xt="close",Yt="inflate";class $t extends x{constructor(e,t){super({});const r=this,{codecType:s}=e;let a;s.startsWith("deflate")?a=Ht:s.startsWith(Yt)&&(a=Kt);let i=0,o=0;const c=new a(e,t),l=super.readable,u=new x({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){n.assign(r,{inputSize:o})}}),h=new x({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;n.assign(r,{signature:e,outputSize:i,inputSize:o})}});n.defineProperty(r,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class en extends x{constructor(e){let t;super({transform:function n(r,s){if(t){const e=new d(t.length+r.length);e.set(t),e.set(r,t.length),r=e,t=null}r.length>e?(s.enqueue(r.slice(0,e)),n(r.slice(e),s)):t=r},flush(e){t&&t.length&&e.enqueue(t)}})}}let tn=typeof W!=_e;class nn{constructor(e,{readable:t,writable:r},{options:s,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,scripts:l},u){const{signal:h}=i;return n.assign(e,{busy:!0,readable:t.pipeThrough(new en(a.chunkSize)).pipeThrough(new rn(t,i),{signal:h}),writable:r,options:n.assign({},s),scripts:l,transferStreams:c,terminate:()=>new y((t=>{const{worker:n,busy:r}=e;n?(r?e.resolveTerminated=t:(n.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,u(e)}}),(o&&tn?on:an)(e,a)}}class rn extends x{constructor(e,{onstart:t,onprogress:n,size:r,onend:s}){let a=0;super({async start(){t&&await sn(t,r)},async transform(e,t){a+=e.length,n&&await sn(n,a,r),t.enqueue(e)},async flush(){e.size=a,s&&await sn(s,a)}})}}async function sn(e,...t){try{await e(...t)}catch(e){}}function an(e,t){return{run:()=>(async({options:e,readable:t,writable:n,onTaskFinished:r},s)=>{try{const r=new $t(e,s);await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:a,inputSize:i,outputSize:o}=r;return{signature:a,inputSize:i,outputSize:o}}finally{r()}})(e,t)}}function on(e,t){const{baseURL:r,chunkSize:s}=t;if(!e.interface){let a;try{a=((e,t,r)=>{const s={type:"module"};let a,i;typeof e==De&&(e=e());try{a=new h(e,t)}catch(t){a=e}if(cn)try{i=new W(a)}catch(e){cn=!1,i=new W(a,s)}else i=new W(a,s);return i.addEventListener("message",(e=>(async({data:e},t)=>{const{type:r,value:s,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:u,rejectResult:h,onTaskFinished:p}=t;try{if(o){const{message:e,stack:t,code:r,name:s}=o,a=new f(e);n.assign(a,{stack:t,code:r,name:s}),w(a)}else{if("pull"==r){const{value:e,done:n}=await c.read();un({type:Qt,value:e,done:n,messageId:a},t)}r==Qt&&(await l.ready,await l.write(new d(s)),un({type:"ack",messageId:a},t)),r==Xt&&w(null,i)}}catch(o){un({type:Xt,messageId:a},t),w(o)}function w(e,t){e?h(e):u(t),l&&l.releaseLock(),p()}})(e,r))),i})(e.scripts[0],r,e)}catch(n){return tn=!1,an(e,t)}n.assign(e,{worker:a,interface:{run:()=>(async(e,t)=>{let r,s;const a=new y(((e,t)=>{r=e,s=t}));n.assign(e,{reader:null,writer:null,resolveResult:r,rejectResult:s,result:a});const{readable:i,options:o,scripts:c}=e,{writable:l,closed:u}=(e=>{let t;const n=new y((e=>t=e));return{writable:new D({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:n}})(e.writable),h=un({type:"start",scripts:c.slice(1),options:o,config:t,readable:i,writable:l},e);h||n.assign(e,{reader:i.getReader(),writer:l.getWriter()});const f=await a;return h||await l.getWriter().close(),await u,f})(e,{chunkSize:s})}})}return e.interface}let cn=!0,ln=!0;function un(e,{worker:t,writer:n,onTaskFinished:r,transferStreams:s}){try{let{value:n,readable:r,writable:a}=e;const i=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,i.push(e.value)),s&&ln?(r&&i.push(r),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch(n){ln=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw n&&n.releaseLock(),r(),e}}let hn=[];const fn=[];let dn=0;function pn(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const wn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),gn=256==wn.length;function mn(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{if(gn){let t="";for(let n=0;n<e.length;n++)t+=wn[e[n]];return t}return(new v).decode(e)})(e):new v(t).decode(e)}const yn="filename",bn="rawFilename",vn="comment",kn="rawComment",Sn="uncompressedSize",zn="compressedSize",xn="offset",_n="diskNumberStart",Dn="lastModDate",Fn="rawLastModDate",Cn="lastAccessDate",Tn="creationDate",Wn=[yn,bn,zn,Sn,Dn,Fn,vn,kn,Cn,Tn,xn,_n,_n,"internalFileAttribute","externalFileAttribute","msDosCompatible","zip64","directory","bitFlag","encrypted","signature","filenameUTF8","commentUTF8","compressionMethod","version","versionMadeBy","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Un{constructor(e){Wn.forEach((t=>this[t]=e[t]))}}const An="File format is not recognized",Ln="Compression method not supported",En="Split zip file",Rn="utf-8",Bn="cp437",Mn=[[Sn,ve],[zn,ve],[xn,ve],[_n,ke]],Pn={[ke]:{getValue:Gn,bytes:4},[ve]:{getValue:Jn,bytes:8}};class On{constructor(e,t,r){n.assign(this,{reader:e,config:t,options:r})}async getData(e,t,r={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,compressionMethod:u,config:h,bitFlag:p,signature:w,rawLastModDate:g,uncompressedSize:m,compressedSize:b}=a,v=t.localDirectory={},k=Qn(await je(i,o,30,c));let S=qn(a,r,"password"),z=qn(a,r,"rawPassword");if(S=S&&S.length&&S,z=z&&z.length&&z,l&&99!=l.originalCompressionMethod)throw new f(Ln);if(0!=u&&8!=u)throw new f(Ln);if(67324752!=Gn(k,0))throw new f("Local file header not found");In(v,k,4),v.rawExtraField=v.extraFieldLength?await je(i,o+30+v.filenameLength,v.extraFieldLength,c):new d,await Nn(a,v,k,4,!0),n.assign(t,{lastAccessDate:v.lastAccessDate,creationDate:v.creationDate});const x=a.encrypted&&v.encrypted,_=x&&!l;if(x){if(!_&&l.strength===xe)throw new f("Encryption method not supported");if(!S&&!z)throw new f("File contains encrypted entry")}const F=o+30+v.filenameLength+v.extraFieldLength,C=b,T=i.readable;n.assign(T,{diskNumberStart:c,offset:F,size:C});const W=qn(a,r,"signal"),U=qn(a,r,"checkPasswordOnly");U&&(e=new D),e=(e=>{e.writable===xe&&typeof e.next==De&&(e=new He(e)),e instanceof D&&(e={writable:e});const{writable:t}=e;return t.size===xe&&(t.size=0),e instanceof He||n.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e})(e),await Ke(e,m);const{writable:A}=e,{onstart:L,onprogress:E,onend:R}=r,B={options:{codecType:Yt,password:S,rawPassword:z,zipCrypto:_,encryptionStrength:l&&l.strength,signed:qn(a,r,"checkSignature"),passwordVerification:_&&(p.dataDescriptor?g>>>8&255:w>>>24&255),signature:w,compressed:0!=u,encrypted:x,useWebWorkers:qn(a,r,"useWebWorkers"),useCompressionStream:qn(a,r,"useCompressionStream"),transferStreams:qn(a,r,"transferStreams"),checkPasswordOnly:U},config:h,streamOptions:{signal:W,size:C,onstart:L,onprogress:E,onend:R}};let M=0;try{({outputSize:M}=await(async(e,t)=>{const{options:n,config:r}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,codecType:c,compressed:l,signed:u,encrypted:h}=n,{workerScripts:f,maxWorkers:d}=r;t.transferStreams=a||a===xe;const p=!(l||u||h||t.transferStreams);return t.useWebWorkers=!p&&(i||i===xe&&r.useWebWorkers),t.scripts=t.useWebWorkers&&f?f[c]:[],n.useCompressionStream=o||o===xe&&r.useCompressionStream,(await(async()=>{const n=hn.find((e=>!e.busy));if(n)return pn(n),new nn(n,e,t,w);if(hn.length<d){const n={indexWorker:dn};return dn++,hn.push(n),new nn(n,e,t,w)}return new y((n=>fn.push({resolve:n,stream:e,workerOptions:t})))})()).run();function w(e){if(fn.length){const[{resolve:t,stream:n,workerOptions:r}]=fn.splice(0,1);t(new nn(e,n,r,w))}else e.worker?(pn(e),((e,t)=>{const{config:n}=t,{terminateWorkerTimeout:r}=n;s.isFinite(r)&&r>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{hn=hn.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),r))})(e,t)):hn=hn.filter((t=>t!=e))}})({readable:T,writable:A},B))}catch(e){if(!U||e.message!=at)throw e}finally{const e=qn(a,r,"preventClose");A.size+=M,e||A.locked||await A.getWriter().close()}return U?xe:e.getData?e.getData():A}}function In(e,t,r){const s=e.rawBitFlag=jn(t,r+2),a=!(1&~s),i=Gn(t,r+6);n.assign(e,{encrypted:a,version:jn(t,r),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:!(2048&~s)},rawLastModDate:i,lastModDate:Hn(i),filenameLength:jn(t,r+22),extraFieldLength:jn(t,r+24)})}async function Nn(e,t,r,s,a){const{rawExtraField:i}=t,l=t.extraField=new c,u=Qn(new d(i));let h=0;try{for(;h<i.length;){const e=jn(u,h),t=jn(u,h+2);l.set(e,{type:e,data:i.slice(h+4,h+4+t)}),h+=4+t}}catch(e){}const p=jn(r,s+4);n.assign(t,{signature:Gn(r,s+10),uncompressedSize:Gn(r,s+18),compressedSize:Gn(r,s+14)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const n=Qn(e.data),r=Mn.filter((([e,n])=>t[e]==n));for(let s=0,a=0;s<r.length;s++){const[i,o]=r[s];if(t[i]==o){const r=Pn[o];t[i]=e[i]=r.getValue(n,a),a+=r.bytes}else if(e[i])throw new f("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const g=l.get(28789);g&&(await Vn(g,yn,bn,t,e),t.extraFieldUnicodePath=g);const m=l.get(25461);m&&(await Vn(m,vn,kn,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y?(((e,t,r)=>{const s=Qn(e.data),a=Zn(s,4);n.assign(e,{vendorVersion:Zn(s,0),vendorId:Zn(s,2),strength:a,originalCompressionMethod:r,compressionMethod:jn(s,5)}),t.compressionMethod=e.compressionMethod})(y,t,p),t.extraFieldAES=y):t.compressionMethod=p;const b=l.get(10);b&&(((e,t)=>{const r=Qn(e.data);let s,a=4;try{for(;a<e.data.length&&!s;){const t=jn(r,a),n=jn(r,a+2);1==t&&(s=e.data.slice(a+4,a+4+n)),a+=4+n}}catch(e){}try{if(s&&24==s.length){const r=Qn(s),a=r.getBigUint64(0,!0),i=r.getBigUint64(8,!0),o=r.getBigUint64(16,!0);n.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Kn(a),lastAccessDate:Kn(i),creationDate:Kn(o)};n.assign(e,c),n.assign(t,c)}}catch(e){}})(b,t),t.extraFieldNTFS=b);const v=l.get(21589);v&&(((e,t,n)=>{const r=Qn(e.data),s=Zn(r,0),a=[],i=[];n?(1&~s||(a.push(Dn),i.push(Fn)),2&~s||(a.push(Cn),i.push("rawLastAccessDate")),4&~s||(a.push(Tn),i.push("rawCreationDate"))):5>e.data.length||(a.push(Dn),i.push(Fn));let c=1;a.forEach(((n,s)=>{if(e.data.length>=c+4){const a=Gn(r,c);t[n]=e[n]=new o(1e3*a);const l=i[s];e[l]=a}c+=4}))})(v,t,a),t.extraFieldExtendedTimestamp=v);const k=l.get(6534);k&&(t.extraFieldUSDZ=k)}async function Vn(e,t,r,s,a){const i=Qn(e.data),o=new Je;o.append(a[r]);const c=Qn(new d(4));c.setUint32(0,o.get(),!0);const l=Gn(i,1);n.assign(e,{version:Zn(i,0),[t]:mn(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Gn(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function qn(e,t,n){return t[n]===xe?e.options[n]:t[n]}function Hn(e){const t=(4294901760&e)>>16,n=65535&e;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function Kn(e){return new o(s(e/a(1e4)-a(116444736e5)))}function Zn(e,t){return e.getUint8(t)}function jn(e,t){return e.getUint16(t,!0)}function Gn(e,t){return e.getUint32(t,!0)}function Jn(e,t){return s(e.getBigUint64(t,!0))}function Qn(e){return new g(e.buffer)}Ee({Inflate:Te}),e.BlobReader=Ne,e.BlobWriter=Ve,e.Data64URIWriter=class extends Ie{constructor(e){super(),n.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let n=0,s=t.pending;const a=t.pending.length;for(t.pending="",n=0;n<3*i.floor((a+e.length)/3)-a;n++)s+=r.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=r.fromCharCode(e[n]);s.length>2?t.data+=z(s):t.pending=s}getData(){return this.data+z(this.pending)}},e.TextWriter=class extends Ve{constructor(e){super(e),n.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,r=await super.getData();if(r.text&&t)return r.text();{const t=new FileReader;return new y(((s,a)=>{n.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>a(t.error)}),t.readAsText(r,e)}))}}},e.ZipReader=class{constructor(e,t={}){n.assign(this,{reader:Ze(e),options:t,config:Le})}async*getEntriesGenerator(e={}){const t=this;let{reader:r}=t;const{config:s}=t;if(await Ke(r),r.size!==xe&&r.readUint8Array||(r=new Ne(await new u(r.readable).blob()),await Ke(r)),22>r.size)throw new f(An);r.chunkSize=(e=>i.max(e.chunkSize,64))(s);const a=await(async(e,t,n)=>{const r=new d(4);return 101010256,Qn(r).setUint32(0,101010256,!0),await s(22)||await s(i.min(1048582,n));async function s(t){const s=n-t,a=await je(e,s,t);for(let e=a.length-22;e>=0;e--)if(a[e]==r[0]&&a[e+1]==r[1]&&a[e+2]==r[2]&&a[e+3]==r[3])return{offset:s+e,buffer:a.slice(e,e+22).buffer}}})(r,0,r.size);if(!a)throw 134695760==Gn(Qn(await je(r,0,4)))?new f(En):new f("End of central directory not found");const o=Qn(a);let c=Gn(o,12),l=Gn(o,16);const h=a.offset,p=jn(o,20),w=h+22+p;let g=jn(o,4);const m=r.lastDiskNumber||0;let y=jn(o,6),b=jn(o,8),v=0,k=0;if(l==ve||c==ve||b==ke||y==ke){const e=Qn(await je(r,a.offset-20,20));if(117853008==Gn(e,0)){l=Jn(e,8);let t=await je(r,l,56,-1),n=Qn(t);const s=a.offset-20-56;if(Gn(n,0)!=ze&&l!=s){const e=l;l=s,v=l-e,t=await je(r,l,56,-1),n=Qn(t)}if(Gn(n,0)!=ze)throw new f("End of Zip64 central directory locator not found");g==ke&&(g=Gn(n,16)),y==ke&&(y=Gn(n,20)),b==ke&&(b=Jn(n,32)),c==ve&&(c=Jn(n,40)),l-=c}}if(l<r.size||(v=r.size-l-c-22,l=r.size-c-22),m!=g)throw new f(En);if(0>l)throw new f(An);let S=0,z=await je(r,l,c,y),x=Qn(z);if(c){const e=a.offset-c;if(Gn(x,S)!=Se&&l!=e){const t=l;l=e,v+=l-t,z=await je(r,l,c,y),x=Qn(z)}}const _=a.offset-l-(r.lastDiskOffset||0);if(c==_||0>_||(c=_,z=await je(r,l,c,y),x=Qn(z)),0>l||l>=r.size)throw new f(An);const D=qn(t,e,"filenameEncoding"),F=qn(t,e,"commentEncoding");for(let a=0;b>a;a++){const o=new On(r,s,t.options);if(Gn(x,S)!=Se)throw new f("Central directory header not found");In(o,x,S+6);const c=!!o.bitFlag.languageEncodingFlag,l=S+46,u=l+o.filenameLength,h=u+o.extraFieldLength,d=jn(x,S+4),p=!0,w=z.subarray(l,u),g=jn(x,S+32),m=h+g,y=z.subarray(h,m),_=c,C=c,T=p&&!(16&~Zn(x,S+38)),W=Gn(x,S+42)+v;n.assign(o,{versionMadeBy:d,msDosCompatible:p,compressedSize:0,uncompressedSize:0,commentLength:g,directory:T,offset:W,diskNumberStart:jn(x,S+34),internalFileAttribute:jn(x,S+36),externalFileAttribute:Gn(x,S+38),rawFilename:w,filenameUTF8:_,commentUTF8:C,rawExtraField:z.subarray(u,h)});const U=qn(t,e,"decodeText")||mn,A=_?Rn:D||Bn,L=C?Rn:F||Bn;let E=U(w,A);E===xe&&(E=mn(w,A));let R=U(y,L);R===xe&&(R=mn(y,L)),n.assign(o,{rawComment:y,filename:E,comment:R,directory:T||E.endsWith("/")}),k=i.max(W,k),await Nn(o,o,x,S+6);const B=new Un(o);B.getData=(e,t)=>o.getData(e,B,t),S=m;const{onprogress:M}=e;if(M)try{await M(a+1,b,new Un(o))}catch(e){}yield B}const C=qn(t,e,"extractPrependedData"),T=qn(t,e,"extractAppendedData");return C&&(t.prependedData=k>0?await je(r,0,k):new d),t.comment=p?await je(r,h+22,p):new d,T&&(t.appendedData=w<r.size?await je(r,w,r.size-w):new d),!0}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}},e.configure=Ee}));
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:n,String:s,Number:r,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:u,URL:h,Error:d,Uint8Array:f,Uint16Array:p,Uint32Array:w,DataView:g,Blob:m,Promise:y,TextEncoder:b,TextDecoder:S,document:_,crypto:k,btoa:z,TransformStream:v,ReadableStream:x,WritableStream:C,CompressionStream:R,DecompressionStream:D,navigator:T,Worker:F}="undefined"!=typeof globalThis?globalThis:this||self;var A=void 0!==_?_.currentScript:null;const q=4294967295,U=65535,W=33639248,L=101075792,H=22,B=void 0,E="undefined",P="function";class I{constructor(e){return class extends v{constructor(t,n){const s=new e(n);super({transform(e,t){t.enqueue(s.append(e))},flush(e){const t=s.flush();t&&e.enqueue(t)}})}}}}let V=2;try{typeof T!=E&&T.hardwareConcurrency&&(V=T.hardwareConcurrency)}catch(e){}const M={chunkSize:524288,maxWorkers:V,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:B,CompressionStreamNative:typeof R!=E&&R,DecompressionStreamNative:typeof D!=E&&D},N=n.assign({},M);function K(){return N}function O(e){const{baseURL:n,chunkSize:s,maxWorkers:r,terminateWorkerTimeout:a,useCompressionStream:i,useWebWorkers:o,Deflate:c,Inflate:l,CompressionStream:u,DecompressionStream:h,workerScripts:f}=e;if(j("baseURL",n),j("chunkSize",s),j("maxWorkers",r),j("terminateWorkerTimeout",a),j("useCompressionStream",i),j("useWebWorkers",o),c&&(N.CompressionStream=new I(c)),l&&(N.DecompressionStream=new I(l)),j("CompressionStream",u),j("DecompressionStream",h),f!==B){const{deflate:e,inflate:n}=f;if((e||n)&&(N.workerScripts||(N.workerScripts={})),e){if(!t.isArray(e))throw new d("workerScripts.deflate must be an array");N.workerScripts.deflate=e}if(n){if(!t.isArray(n))throw new d("workerScripts.inflate must be an array");N.workerScripts.inflate=n}}}function j(e,t){t!==B&&(N[e]=t)}const G="HTTP error ",J="HTTP Range not supported",X="Content-Length",Z="Range",$="HEAD",Q="GET",Y="bytes",ee=65536,te="writable";class ne{constructor(){this.size=0}init(){this.initialized=!0}}class se extends ne{get readable(){const e=this,{chunkSize:t=ee}=e,n=new x({start(){this.chunkOffset=0},async pull(s){const{offset:r=0,size:a,diskNumberStart:o}=n,{chunkOffset:c}=this;s.enqueue(await xe(e,r+c,i.min(t,a-c),o)),c+t>a?s.close():this.chunkOffset+=t}});return n}}class re extends ne{constructor(){super();const e=this,t=new C({write:t=>e.writeUint8Array(t)});n.defineProperty(e,te,{get:()=>t})}writeUint8Array(){}}class ae extends se{constructor(e){super(),n.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const n=this,s=e+t,r=e||s<n.size?n.blob.slice(e,s):n.blob;let a=await r.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new f(a)}}class ie extends ne{constructor(e){super();const t=new v,s=[];e&&s.push(["Content-Type",e]),n.defineProperty(this,te,{get:()=>t.writable}),this.blob=new u(t.readable,{headers:s}).blob()}getData(){return this.blob}}class oe extends se{constructor(e,t){super(),le(this,e,t)}async init(){await ue(this,ye,pe),super.init()}readUint8Array(e,t){return he(this,e,t,ye,pe)}}class ce extends se{constructor(e,t){super(),le(this,e,t)}async init(){await ue(this,be,we),super.init()}readUint8Array(e,t){return he(this,e,t,be,we)}}function le(e,t,s){const{preventHeadRequest:r,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=n.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,n.assign(e,{url:t,options:s,preventHeadRequest:r,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function ue(e,t,n){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURL:t}=K(),{protocol:n}=new h(e,t);return"http:"==n||"https:"==n})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Q,e,de(e,c?-22:void 0));if(!o&&s.headers.get("Accept-Ranges")!=Y)throw new d(J);{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=r(t))}}a===B?await me(e,t,n):e.size=a}}else await me(e,t,n)}async function he(e,t,n,s,r){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&n==H)return o;const r=await s(Q,e,de(e,t,n));if(206!=r.status)throw new d(J);return new f(await r.arrayBuffer())}{const{data:s}=e;return s||await r(e,l),new f(e.data.subarray(t,t+n))}}function de(e,t=0,s=1){return n.assign({},fe(e),{[Z]:Y+"="+(0>t?t:t+"-"+(t+s-1))})}function fe({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?n.fromEntries(t):t}async function pe(e){await ge(e,ye)}async function we(e){await ge(e,be)}async function ge(e,t){const n=await t(Q,e,fe(e));e.data=new f(await n.arrayBuffer()),e.size||(e.size=e.data.length)}async function me(e,t,n){if(e.preventHeadRequest)await n(e,e.options);else{const s=(await t($,e,fe(e))).headers.get(X);s?e.size=r(s):await n(e,e.options)}}async function ye(e,{options:t,url:s},r){const a=await fetch(s,n.assign({},t,{method:e,headers:r}));if(400>a.status)return a;throw 416==a.status?new d(J):new d(G+(a.statusText||a.status))}function be(e,{url:t},s){return new y(((r,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",(()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach((t=>{const n=t.trim().split(/\s*:\s*/);n[0]=n[0].trim().replace(/^[a-z]|-[a-z]/g,(e=>e.toUpperCase())),e.push(n)})),r({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new d(J):new d(G+(i.statusText||i.status)))}),!1),i.addEventListener("error",(e=>a(e.detail?e.detail.error:new d("Network error"))),!1),i.open(e,t),s)for(const e of n.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()}))}class Se extends se{constructor(e,t={}){super(),n.assign(this,{url:e,reader:t.useXHR?new ce(e,t):new oe(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 _e extends se{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(n,s)=>{await n.init(),s!=t.length-1&&(e.lastDiskOffset+=n.size),e.size+=n.size}))),super.init()}async readUint8Array(e,t,n=0){const s=this,{readers:r}=this;let a,o=n;-1==o&&(o=r.length-1);let c=e;for(;c>=r[o].size;)c-=r[o].size,o++;const l=r[o],u=l.size;if(c+t>u){const r=u-c;a=new f(t),a.set(await xe(l,c,r)),a.set(await s.readUint8Array(e+r,t-r,n),r)}else a=await xe(l,c,t);return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class ke extends ne{constructor(e,t=4294967295){super();const s=this;let r,a,i;n.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new C({async write(t){const{availableSize:n}=s;if(i)t.length<n?await c(t):(await c(t.slice(0,n)),await l(),s.diskOffset+=r.size,s.diskNumber++,i=null,await this.write(t.slice(n)));else{const{value:n,done:o}=await e.next();if(o&&!n)throw new d("Writer iterator completed too soon");r=n,r.size=0,r.maxSize&&(s.maxSize=r.maxSize),s.availableSize=s.maxSize,await ze(r),a=n.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),r.size+=t,s.size+=t,s.availableSize-=t)}async function l(){a.size=r.size,await i.close()}n.defineProperty(s,te,{get:()=>o})}}async function ze(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function ve(e){return t.isArray(e)&&(e=new _e(e)),e instanceof x&&(e={readable:e}),e}function xe(e,t,n,s){return e.readUint8Array(t,n,s)}const Ce=[];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;Ce[e]=t}class Re{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^Ce[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class De extends v{constructor(){let e;const t=new Re;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new f(4);new g(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const Te={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=Te.getPartial(n);return 32===s?e.concat(t):Te._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+Te.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=Te.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=Te.getPartial(r);return s.push(Te.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},Fe={bytes:{fromBits(e){const t=Te.bitLength(e)/8,n=new f(t);let s;for(let r=0;t>r;r++)3&r||(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3&~n||(t.push(s),s=0);return 3&n&&t.push(Te.partial(8*(3&n),s)),t}}},Ae=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=Fe.utf8String.toBits(e));const n=t._buffer=Te.concat(t._buffer,e),s=t._length,r=t._length=s+Te.bitLength(e);if(r>9007199254740991)throw new d("Cannot hash more than 2^53 - 1 bits");const a=new w(n);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);r>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return n.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=Te.concat(t,[Te.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(),n}_f(e,t,n,s){return e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const n=this,s=n._h,r=t(80);for(let t=0;16>t;t++)r[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],u=s[4];for(let e=0;79>=e;e++){16>e||(r[e]=n._S(1,r[e-3]^r[e-8]^r[e-14]^r[e-16]));const t=n._S(5,a)+n._f(e,o,c,l)+u+r[e]+n._key[i.floor(e/20)]|0;u=l,l=c,c=n._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]+u|0}},qe={getRandomValues(e){const t=new w(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,r=0;r<e.length;r+=4){const e=n(4294967296*(s||i.random()));s=987654071*e(),t[r/4]=4294967296*e()|0}return e}},Ue={importKey:e=>new Ue.hmacSha1(Fe.bytes.toBits(e)),pbkdf2(e,t,n,s){if(n=n||1e4,0>s||0>n)throw new d("invalid params to pbkdf2");const r=1+(s>>5)<<2;let a,i,o,c,l;const u=new ArrayBuffer(r),h=new g(u);let f=0;const p=Te;for(t=Fe.bytes.toBits(t),l=1;(r||1)>f;l++){for(a=i=e.encrypt(p.concat(t,[l])),o=1;n>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(r||1)>f&&o<a.length;o++)h.setInt32(f,a[o]),f+=4}return u.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=Ae,s=[[],[]];t._baseHash=[new n,new n];const r=t._baseHash[0].blockSize/32;e.length>r&&(e=(new n).update(e).finalize());for(let t=0;r>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 n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new d("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},We=typeof k!=E&&typeof k.getRandomValues==P,Le="Invalid password",He="Invalid signature",Be="zipjs-abort-check-password";function Ee(e){return We?k.getRandomValues(e):qe.getRandomValues(e)}const Pe=16,Ie={name:"PBKDF2"},Ve=n.assign({hash:{name:"HMAC"}},Ie),Me=n.assign({iterations:1e3,hash:{name:"SHA-1"}},Ie),Ne=["deriveBits"],Ke=[8,12,16],Oe=[16,24,32],je=10,Ge=[0,0,0,0],Je=typeof k!=E,Xe=Je&&k.subtle,Ze=Je&&typeof Xe!=E,$e=Fe.bytes,Qe=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],s=t._tables[1],r=e.length;let a,i,o,c=1;if(4!==r&&6!==r&&8!==r)throw new d("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=r;4*r+28>a;a++){let e=i[a-1];(a%r==0||8===r&&a%r==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],a%r==0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-r]^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][n[t>>>24]]^s[1][n[t>>16&255]]^s[2][n[t>>8&255]]^s[3][n[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],n=e[4],s=t[4],r=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let u=i=0;!n[u];u^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,n[u]=a,s[a]=u,l=r[c=r[o=r[u]]];let h=16843009*l^65537*c^257*o^16843008*u,d=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=d=d<<24^d>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new d("invalid aes block size");const n=this._key[t],s=n.length/4-2,r=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],u=a[4];let h,f,p,w=e[0]^n[0],g=e[t?3:1]^n[1],m=e[2]^n[2],y=e[t?1:3]^n[3],b=4;for(let e=0;s>e;e++)h=i[w>>>24]^o[g>>16&255]^c[m>>8&255]^l[255&y]^n[b],f=i[g>>>24]^o[m>>16&255]^c[y>>8&255]^l[255&w]^n[b+1],p=i[m>>>24]^o[y>>16&255]^c[w>>8&255]^l[255&g]^n[b+2],y=i[y>>>24]^o[w>>16&255]^c[g>>8&255]^l[255&m]^n[b+3],b+=4,w=h,g=f,m=p;for(let e=0;4>e;e++)r[t?3&-e:e]=u[w>>>24]<<24^u[g>>16&255]<<16^u[m>>8&255]<<8^u[255&y]^n[b++],h=w,w=g,g=m,m=y,y=h;return r}},Ye=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,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=Te.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Te.clamp(t,r)}},et=Ue.hmacSha1;let tt=Je&&Ze&&typeof Xe.importKey==P,nt=Je&&Ze&&typeof Xe.deriveBits==P;class st extends v{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:r,checkPasswordOnly:a}){super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:ot(e,t),signed:s,strength:r-1,pending:new f})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:i,ready:o}=n;s?(await(async(e,t,n,s)=>{const r=await it(e,t,n,lt(s,0,Ke[t])),a=lt(s,Ke[t]);if(r[0]!=a[0]||r[1]!=a[1])throw new d(Le)})(n,r,s,lt(e,0,Ke[r]+2)),e=lt(e,Ke[r]+2),a?t.error(new d(Be)):i()):await o;const c=new f(e.length-je-(e.length-je)%Pe);t.enqueue(at(n,e,c,0,je,!0))},async flush(e){const{signed:t,ctr:n,hmac:s,pending:r,ready:a}=this;if(s&&n){await a;const i=lt(r,0,r.length-je),o=lt(r,r.length-je);let c=new f;if(i.length){const e=ht($e,i);s.update(e);const t=n.update(e);c=ut($e,t)}if(t){const e=lt(ut($e,s.digest()),0,je);for(let t=0;je>t;t++)if(e[t]!=o[t])throw new d(He)}e.enqueue(c)}}})}}class rt extends v{constructor({password:e,rawPassword:t,encryptionStrength:s}){let r;super({start(){n.assign(this,{ready:new y((e=>this.resolveReady=e)),password:ot(e,t),strength:s-1,pending:new f})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:a,ready:i}=n;let o=new f;s?(o=await(async(e,t,n)=>{const s=Ee(new f(Ke[t]));return ct(s,await it(e,t,n,s))})(n,r,s),a()):await i;const c=new f(o.length+e.length-e.length%Pe);c.set(o,0),t.enqueue(at(n,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:n,pending:s,ready:a}=this;if(n&&t){await a;let i=new f;if(s.length){const e=t.update(ht($e,s));n.update(e),i=ut($e,e)}r.signature=ut($e,n.digest()).slice(0,je),e.enqueue(ct(i,r.signature))}}}),r=this}}function at(e,t,n,s,r,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-r;let u;for(c.length&&(t=ct(c,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new f(t)).set(n,0)}return e})(n,l-l%Pe)),u=0;l-Pe>=u;u+=Pe){const e=ht($e,lt(t,u,u+Pe));a&&o.update(e);const r=i.update(e);a||o.update(r),n.set(ut($e,r),u+s)}return e.pending=lt(t,u),n}async function it(e,s,r,a){e.password=null;const i=await(async(e,t,n,s,r)=>{if(!tt)return Ue.importKey(t);try{return await Xe.importKey("raw",t,n,!1,r)}catch(e){return tt=!1,Ue.importKey(t)}})(0,r,Ve,0,Ne),o=await(async(e,t,n)=>{if(!nt)return Ue.pbkdf2(t,e.salt,Me.iterations,n);try{return await Xe.deriveBits(e,t,n)}catch(s){return nt=!1,Ue.pbkdf2(t,e.salt,Me.iterations,n)}})(n.assign({salt:a},Me),i,8*(2*Oe[s]+2)),c=new f(o),l=ht($e,lt(c,0,Oe[s])),u=ht($e,lt(c,Oe[s],2*Oe[s])),h=lt(c,2*Oe[s]);return n.assign(e,{keys:{key:l,authentication:u,passwordVerification:h},ctr:new Ye(new Qe(l),t.from(Ge)),hmac:new et(u)}),h}function ot(e,t){return t===B?(e=>{if(typeof b==E){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new b).encode(e)})(e):t}function ct(e,t){let n=e;return e.length+t.length&&(n=new f(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function lt(e,t,n){return e.subarray(t,n)}function ut(e,t){return e.fromBits(t)}function ht(e,t){return e.toBits(t)}class dt extends v{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){n.assign(this,{password:e,passwordVerification:t}),gt(this,e)},transform(e,t){const n=this;if(n.password){const t=pt(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new d(Le);e=e.subarray(12)}s?t.error(new d(Be)):t.enqueue(pt(n,e))}})}}class ft extends v{constructor({password:e,passwordVerification:t}){super({start(){n.assign(this,{password:e,passwordVerification:t}),gt(this,e)},transform(e,t){const n=this;let s,r;if(n.password){n.password=null;const t=Ee(new f(12));t[11]=n.passwordVerification,s=new f(e.length+t.length),s.set(wt(n,t),0),r=12}else s=new f(e.length),r=0;s.set(wt(n,e),r),t.enqueue(s)}})}}function pt(e,t){const n=new f(t.length);for(let s=0;s<t.length;s++)n[s]=yt(e)^t[s],mt(e,n[s]);return n}function wt(e,t){const n=new f(t.length);for(let s=0;s<t.length;s++)n[s]=yt(e)^t[s],mt(e,t[s]);return n}function gt(e,t){const s=[305419896,591751049,878082192];n.assign(e,{keys:s,crcKey0:new Re(s[0]),crcKey2:new Re(s[2])});for(let n=0;n<t.length;n++)mt(e,t.charCodeAt(n))}function mt(e,t){let[n,s,r]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),s=St(i.imul(St(s+bt(n)),134775813)+1),e.crcKey2.append([s>>>24]),r=~e.crcKey2.get(),e.keys=[n,s,r]}function yt(e){const t=2|e.keys[2];return bt(i.imul(t,1^t)>>>8)}function bt(e){return 255&e}function St(e){return 4294967295&e}const _t="deflate-raw";class kt extends v{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:s}){super({});const{compressed:r,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,u=this;let h,d,f=vt(super.readable);a&&!o||!c||(h=new De,f=Rt(f,h)),r&&(f=Ct(f,i,{level:l,chunkSize:t},s,n)),a&&(o?f=Rt(f,new ft(e)):(d=new rt(e),f=Rt(f,d))),xt(u,f,(()=>{let e;a&&!o&&(e=d.signature),a&&!o||!c||(e=new g(h.value.buffer).getUint32(0)),u.signature=e}))}}class zt extends v{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:s}){super({});const{zipCrypto:r,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l}=e;let u,h,f=vt(super.readable);a&&(r?f=Rt(f,new dt(e)):(h=new st(e),f=Rt(f,h))),c&&(f=Ct(f,l,{chunkSize:t},s,n)),a&&!r||!i||(u=new De,f=Rt(f,u)),xt(this,f,(()=>{if((!a||r)&&i){const e=new g(u.value.buffer);if(o!=e.getUint32(0,!1))throw new d(He)}}))}}function vt(e){return Rt(e,new v({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function xt(e,t,s){t=Rt(t,new v({flush:s})),n.defineProperty(e,"readable",{get:()=>t})}function Ct(e,t,n,s,r){try{e=Rt(e,new(t&&s?s:r)(_t,n))}catch(s){if(!t)return e;try{e=Rt(e,new r(_t,n))}catch(t){return e}}return e}function Rt(e,t){return e.pipeThrough(t)}const Dt="data",Tt="close",Ft="inflate";class At extends v{constructor(e,t){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=kt:r.startsWith(Ft)&&(a=zt);let i=0,o=0;const c=new a(e,t),l=super.readable,u=new v({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){n.assign(s,{inputSize:o})}}),h=new v({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;n.assign(s,{signature:e,outputSize:i,inputSize:o})}});n.defineProperty(s,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class qt extends v{constructor(e){let t;super({transform:function n(s,r){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?(r.enqueue(s.slice(0,e)),n(s.slice(e),r)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let Ut=typeof F!=E;class Wt{constructor(e,{readable:t,writable:s},{options:r,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,scripts:l},u){const{signal:h}=i;return n.assign(e,{busy:!0,readable:t.pipeThrough(new qt(a.chunkSize)).pipeThrough(new Lt(t,i),{signal:h}),writable:s,options:n.assign({},r),scripts:l,transferStreams:c,terminate:()=>new y((t=>{const{worker:n,busy:s}=e;n?(s?e.resolveTerminated=t:(n.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,u(e)}}),(o&&Ut?Et:Bt)(e,a)}}class Lt extends v{constructor(e,{onstart:t,onprogress:n,size:s,onend:r}){let a=0;super({async start(){t&&await Ht(t,s)},async transform(e,t){a+=e.length,n&&await Ht(n,a,s),t.enqueue(e)},async flush(){e.size=a,r&&await Ht(r,a)}})}}async function Ht(e,...t){try{await e(...t)}catch(e){}}function Bt(e,t){return{run:()=>(async({options:e,readable:t,writable:n,onTaskFinished:s},r)=>{try{const s=new At(e,r);await t.pipeThrough(s).pipeTo(n,{preventClose:!0,preventAbort:!0});const{signature:a,inputSize:i,outputSize:o}=s;return{signature:a,inputSize:i,outputSize:o}}finally{s()}})(e,t)}}function Et(e,t){const{baseURL:s,chunkSize:r}=t;if(!e.interface){let a;try{a=((e,t,s)=>{const r={type:"module"};let a,i;typeof e==P&&(e=e());try{a=new h(e,t)}catch(t){a=e}if(Pt)try{i=new F(a)}catch(e){Pt=!1,i=new F(a,r)}else i=new F(a,r);return i.addEventListener("message",(e=>(async({data:e},t)=>{const{type:s,value:r,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:u,rejectResult:h,onTaskFinished:p}=t;try{if(o){const{message:e,stack:t,code:s,name:r}=o,a=new d(e);n.assign(a,{stack:t,code:s,name:r}),w(a)}else{if("pull"==s){const{value:e,done:n}=await c.read();Vt({type:Dt,value:e,done:n,messageId:a},t)}s==Dt&&(await l.ready,await l.write(new f(r)),Vt({type:"ack",messageId:a},t)),s==Tt&&w(null,i)}}catch(o){Vt({type:Tt,messageId:a},t),w(o)}function w(e,t){e?h(e):u(t),l&&l.releaseLock(),p()}})(e,s))),i})(e.scripts[0],s,e)}catch(n){return Ut=!1,Bt(e,t)}n.assign(e,{worker:a,interface:{run:()=>(async(e,t)=>{let s,r;const a=new y(((e,t)=>{s=e,r=t}));n.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:r,result:a});const{readable:i,options:o,scripts:c}=e,{writable:l,closed:u}=(e=>{let t;const n=new y((e=>t=e));return{writable:new C({async write(t){const n=e.getWriter();await n.ready,await n.write(t),n.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:n}})(e.writable),h=Vt({type:"start",scripts:c.slice(1),options:o,config:t,readable:i,writable:l},e);h||n.assign(e,{reader:i.getReader(),writer:l.getWriter()});const d=await a;return h||await l.getWriter().close(),await u,d})(e,{chunkSize:r})}})}return e.interface}let Pt=!0,It=!0;function Vt(e,{worker:t,writer:n,onTaskFinished:s,transferStreams:r}){try{let{value:n,readable:s,writable:a}=e;const i=[];if(n&&(n.byteLength<n.buffer.byteLength?e.value=n.buffer.slice(0,n.byteLength):e.value=n.buffer,i.push(e.value)),r&&It?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch(n){It=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw n&&n.releaseLock(),s(),e}}let Mt=[];const Nt=[];let Kt=0;function Ot(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const jt="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split(""),Gt=256==jt.length;function Jt(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{if(Gt){let t="";for(let n=0;n<e.length;n++)t+=jt[e[n]];return t}return(new S).decode(e)})(e):new S(t).decode(e)}const Xt="filename",Zt="rawFilename",$t="comment",Qt="rawComment",Yt="uncompressedSize",en="compressedSize",tn="offset",nn="diskNumberStart",sn="lastModDate",rn="rawLastModDate",an="lastAccessDate",on="creationDate",cn=[Xt,Zt,en,Yt,sn,rn,$t,Qt,an,on,tn,nn,nn,"internalFileAttribute","externalFileAttribute","msDosCompatible","zip64","directory","bitFlag","encrypted","signature","filenameUTF8","commentUTF8","compressionMethod","version","versionMadeBy","extraField","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class ln{constructor(e){cn.forEach((t=>this[t]=e[t]))}}const un="File format is not recognized",hn="Compression method not supported",dn="Split zip file",fn="utf-8",pn="cp437",wn=[[Yt,q],[en,q],[tn,q],[nn,U]],gn={[U]:{getValue:Cn,bytes:4},[q]:{getValue:Rn,bytes:8}};class mn{constructor(e,t,s){n.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,compressionMethod:u,config:h,bitFlag:p,signature:w,rawLastModDate:g,uncompressedSize:m,compressedSize:b}=a,S=t.localDirectory={},_=Dn(await xe(i,o,30,c));let k=_n(a,s,"password"),z=_n(a,s,"rawPassword");if(k=k&&k.length&&k,z=z&&z.length&&z,l&&99!=l.originalCompressionMethod)throw new d(hn);if(0!=u&&8!=u)throw new d(hn);if(67324752!=Cn(_,0))throw new d("Local file header not found");yn(S,_,4),S.rawExtraField=S.extraFieldLength?await xe(i,o+30+S.filenameLength,S.extraFieldLength,c):new f,await bn(a,S,_,4,!0),n.assign(t,{lastAccessDate:S.lastAccessDate,creationDate:S.creationDate});const v=a.encrypted&&S.encrypted,x=v&&!l;if(v){if(!x&&l.strength===B)throw new d("Encryption method not supported");if(!k&&!z)throw new d("File contains encrypted entry")}const R=o+30+S.filenameLength+S.extraFieldLength,D=b,T=i.readable;n.assign(T,{diskNumberStart:c,offset:R,size:D});const F=_n(a,s,"signal"),A=_n(a,s,"checkPasswordOnly");A&&(e=new C),e=(e=>{e.writable===B&&typeof e.next==P&&(e=new ke(e)),e instanceof C&&(e={writable:e});const{writable:t}=e;return t.size===B&&(t.size=0),e instanceof ke||n.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e})(e),await ze(e,m);const{writable:q}=e,{onstart:U,onprogress:W,onend:L}=s,H={options:{codecType:Ft,password:k,rawPassword:z,zipCrypto:x,encryptionStrength:l&&l.strength,signed:_n(a,s,"checkSignature"),passwordVerification:x&&(p.dataDescriptor?g>>>8&255:w>>>24&255),signature:w,compressed:0!=u,encrypted:v,useWebWorkers:_n(a,s,"useWebWorkers"),useCompressionStream:_n(a,s,"useCompressionStream"),transferStreams:_n(a,s,"transferStreams"),checkPasswordOnly:A},config:h,streamOptions:{signal:F,size:D,onstart:U,onprogress:W,onend:L}};let E=0;try{({outputSize:E}=await(async(e,t)=>{const{options:n,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,codecType:c,compressed:l,signed:u,encrypted:h}=n,{workerScripts:d,maxWorkers:f}=s;t.transferStreams=a||a===B;const p=!(l||u||h||t.transferStreams);return t.useWebWorkers=!p&&(i||i===B&&s.useWebWorkers),t.scripts=t.useWebWorkers&&d?d[c]:[],n.useCompressionStream=o||o===B&&s.useCompressionStream,(await(async()=>{const n=Mt.find((e=>!e.busy));if(n)return Ot(n),new Wt(n,e,t,w);if(Mt.length<f){const n={indexWorker:Kt};return Kt++,Mt.push(n),new Wt(n,e,t,w)}return new y((n=>Nt.push({resolve:n,stream:e,workerOptions:t})))})()).run();function w(e){if(Nt.length){const[{resolve:t,stream:n,workerOptions:s}]=Nt.splice(0,1);t(new Wt(e,n,s,w))}else e.worker?(Ot(e),((e,t)=>{const{config:n}=t,{terminateWorkerTimeout:s}=n;r.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout((async()=>{Mt=Mt.filter((t=>t!=e));try{await e.terminate()}catch(e){}}),s))})(e,t)):Mt=Mt.filter((t=>t!=e))}})({readable:T,writable:q},H))}catch(e){if(!A||e.message!=Be)throw e}finally{const e=_n(a,s,"preventClose");q.size+=E,e||q.locked||await q.getWriter().close()}return A?B:e.getData?e.getData():q}}function yn(e,t,s){const r=e.rawBitFlag=xn(t,s+2),a=!(1&~r),i=Cn(t,s+6);n.assign(e,{encrypted:a,version:xn(t,s),bitFlag:{level:(6&r)>>1,dataDescriptor:!(8&~r),languageEncodingFlag:!(2048&~r)},rawLastModDate:i,lastModDate:kn(i),filenameLength:xn(t,s+22),extraFieldLength:xn(t,s+24)})}async function bn(e,t,s,r,a){const{rawExtraField:i}=t,l=t.extraField=new c,u=Dn(new f(i));let h=0;try{for(;h<i.length;){const e=xn(u,h),t=xn(u,h+2);l.set(e,{type:e,data:i.slice(h+4,h+4+t)}),h+=4+t}}catch(e){}const p=xn(s,r+4);n.assign(t,{signature:Cn(s,r+10),uncompressedSize:Cn(s,r+18),compressedSize:Cn(s,r+14)});const w=l.get(1);w&&(((e,t)=>{t.zip64=!0;const n=Dn(e.data),s=wn.filter((([e,n])=>t[e]==n));for(let r=0,a=0;r<s.length;r++){const[i,o]=s[r];if(t[i]==o){const s=gn[o];t[i]=e[i]=s.getValue(n,a),a+=s.bytes}else if(e[i])throw new d("Zip64 extra field not found")}})(w,t),t.extraFieldZip64=w);const g=l.get(28789);g&&(await Sn(g,Xt,Zt,t,e),t.extraFieldUnicodePath=g);const m=l.get(25461);m&&(await Sn(m,$t,Qt,t,e),t.extraFieldUnicodeComment=m);const y=l.get(39169);y?(((e,t,s)=>{const r=Dn(e.data),a=vn(r,4);n.assign(e,{vendorVersion:vn(r,0),vendorId:vn(r,2),strength:a,originalCompressionMethod:s,compressionMethod:xn(r,5)}),t.compressionMethod=e.compressionMethod})(y,t,p),t.extraFieldAES=y):t.compressionMethod=p;const b=l.get(10);b&&(((e,t)=>{const s=Dn(e.data);let r,a=4;try{for(;a<e.data.length&&!r;){const t=xn(s,a),n=xn(s,a+2);1==t&&(r=e.data.slice(a+4,a+4+n)),a+=4+n}}catch(e){}try{if(r&&24==r.length){const s=Dn(r),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);n.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:zn(a),lastAccessDate:zn(i),creationDate:zn(o)};n.assign(e,c),n.assign(t,c)}}catch(e){}})(b,t),t.extraFieldNTFS=b);const S=l.get(21589);S&&(((e,t,n)=>{const s=Dn(e.data),r=vn(s,0),a=[],i=[];n?(1&~r||(a.push(sn),i.push(rn)),2&~r||(a.push(an),i.push("rawLastAccessDate")),4&~r||(a.push(on),i.push("rawCreationDate"))):5>e.data.length||(a.push(sn),i.push(rn));let c=1;a.forEach(((n,r)=>{if(e.data.length>=c+4){const a=Cn(s,c);t[n]=e[n]=new o(1e3*a);const l=i[r];e[l]=a}c+=4}))})(S,t,a),t.extraFieldExtendedTimestamp=S);const _=l.get(6534);_&&(t.extraFieldUSDZ=_)}async function Sn(e,t,s,r,a){const i=Dn(e.data),o=new Re;o.append(a[s]);const c=Dn(new f(4));c.setUint32(0,o.get(),!0);const l=Cn(i,1);n.assign(e,{version:vn(i,0),[t]:Jt(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Cn(c,0)}),e.valid&&(r[t]=e[t],r[t+"UTF8"]=!0)}function _n(e,t,n){return t[n]===B?e.options[n]:t[n]}function kn(e){const t=(4294901760&e)>>16,n=65535&e;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}function zn(e){return new o(r(e/a(1e4)-a(116444736e5)))}function vn(e,t){return e.getUint8(t)}function xn(e,t){return e.getUint16(t,!0)}function Cn(e,t){return e.getUint32(t,!0)}function Rn(e,t){return r(e.getBigUint64(t,!0))}function Dn(e){return new g(e.buffer)}let Tn;try{Tn=void 0===_&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===_?location.href:A&&A.src||new h("zip-full.min.js",_.baseURI).href}catch(e){}(e=>{const t=()=>h.createObjectURL(new m(['const{Array:e,Object:t,Number:n,Math:s,Error:r,Uint8Array:a,Uint16Array:o,Uint32Array:i,Int32Array:c,Map:l,DataView:u,Promise:h,TextEncoder:p,crypto:f,postMessage:d,TransformStream:g,ReadableStream:w,WritableStream:y,CompressionStream:m,DecompressionStream:_}=self,b=void 0,S="undefined",v="function";class k{constructor(e){return class extends g{constructor(t,n){const s=new e(n);super({transform(e,t){t.enqueue(s.append(e))},flush(e){const t=s.flush();t&&e.enqueue(t)}})}}}}const z=[];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;z[e]=t}class C{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let n=0,s=0|e.length;s>n;n++)t=t>>>8^z[255&(t^e[n])];this.crc=t}get(){return~this.crc}}class A extends g{constructor(){let e;const t=new C;super({transform(e,n){t.append(e),n.enqueue(e)},flush(){const n=new a(4);new u(n.buffer).setUint32(0,t.get()),e.value=n}}),e=this}}const q={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const n=e[e.length-1],s=q.getPartial(n);return 32===s?e.concat(t):q._shiftRight(t,s,0|n,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const n=e[t-1];return 32*(t-1)+q.getPartial(n)},clamp(e,t){if(32*e.length<t)return e;const n=(e=e.slice(0,s.ceil(t/32))).length;return t&=31,n>0&&t&&(e[n-1]=q.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial:(e,t,n)=>32===e?t:(n?0|t:t<<32-e)+1099511627776*e,getPartial:e=>s.round(e/1099511627776)||32,_shiftRight(e,t,n,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(n),n=0;if(0===t)return s.concat(e);for(let r=0;r<e.length;r++)s.push(n|e[r]>>>t),n=e[r]<<32-t;const r=e.length?e[e.length-1]:0,a=q.getPartial(r);return s.push(q.partial(t+a&31,t+a>32?n:s.pop(),1)),s}},I={bytes:{fromBits(e){const t=q.bitLength(e)/8,n=new a(t);let s;for(let r=0;t>r;r++)3&r||(s=e[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(e){const t=[];let n,s=0;for(n=0;n<e.length;n++)s=s<<8|e[n],3&~n||(t.push(s),s=0);return 3&n&&t.push(q.partial(8*(3&n),s)),t}}},R=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=I.utf8String.toBits(e));const n=t._buffer=q.concat(t._buffer,e),s=t._length,a=t._length=s+q.bitLength(e);if(a>9007199254740991)throw new r("Cannot hash more than 2^53 - 1 bits");const o=new i(n);let c=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);a>=e;e+=t.blockSize)t._block(o.subarray(16*c,16*(c+1))),c+=1;return n.splice(0,16*c),t}finalize(){const e=this;let t=e._buffer;const n=e._h;t=q.concat(t,[q.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(s.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,s){return e>19?e>39?e>59?e>79?void 0:t^n^s:t&n|t&s|n&s:t^n^s:t&n|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(t){const n=this,r=n._h,a=e(80);for(let e=0;16>e;e++)a[e]=t[e];let o=r[0],i=r[1],c=r[2],l=r[3],u=r[4];for(let e=0;79>=e;e++){16>e||(a[e]=n._S(1,a[e-3]^a[e-8]^a[e-14]^a[e-16]));const t=n._S(5,o)+n._f(e,i,c,l)+u+a[e]+n._key[s.floor(e/20)]|0;u=l,l=c,c=n._S(30,i),i=o,o=t}r[0]=r[0]+o|0,r[1]=r[1]+i|0,r[2]=r[2]+c|0,r[3]=r[3]+l|0,r[4]=r[4]+u|0}},H={getRandomValues(e){const t=new i(e.buffer),n=e=>{let t=987654321;const n=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&n,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&n)&n)/4294967296+.5)*(s.random()>.5?1:-1))};for(let r,a=0;a<e.length;a+=4){const e=n(4294967296*(r||s.random()));r=987654071*e(),t[a/4]=4294967296*e()|0}return e}},B={importKey:e=>new B.hmacSha1(I.bytes.toBits(e)),pbkdf2(e,t,n,s){if(n=n||1e4,0>s||0>n)throw new r("invalid params to pbkdf2");const a=1+(s>>5)<<2;let o,i,c,l,h;const p=new ArrayBuffer(a),f=new u(p);let d=0;const g=q;for(t=I.bytes.toBits(t),h=1;(a||1)>d;h++){for(o=i=e.encrypt(g.concat(t,[h])),c=1;n>c;c++)for(i=e.encrypt(i),l=0;l<i.length;l++)o[l]^=i[l];for(c=0;(a||1)>d&&c<o.length;c++)f.setInt32(d,o[c]),d+=4}return p.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,n=t._hash=R,s=[[],[]];t._baseHash=[new n,new n];const r=t._baseHash[0].blockSize/32;e.length>r&&(e=(new n).update(e).finalize());for(let t=0;r>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 n(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(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new r("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},K=typeof f!=S&&typeof f.getRandomValues==v,P="Invalid password",T="Invalid signature",V="zipjs-abort-check-password";function x(e){return K?f.getRandomValues(e):H.getRandomValues(e)}const D=16,E={name:"PBKDF2"},U=t.assign({hash:{name:"HMAC"}},E),W=t.assign({iterations:1e3,hash:{name:"SHA-1"}},E),M=["deriveBits"],N=[8,12,16],L=[16,24,32],F=10,O=[0,0,0,0],j=typeof f!=S,G=j&&f.subtle,X=j&&typeof G!=S,J=I.bytes,Q=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const n=t._tables[0][4],s=t._tables[1],a=e.length;let o,i,c,l=1;if(4!==a&&6!==a&&8!==a)throw new r("invalid aes key size");for(t._key=[i=e.slice(0),c=[]],o=a;4*a+28>o;o++){let e=i[o-1];(o%a==0||8===a&&o%a==4)&&(e=n[e>>>24]<<24^n[e>>16&255]<<16^n[e>>8&255]<<8^n[255&e],o%a==0&&(e=e<<8^e>>>24^l<<24,l=l<<1^283*(l>>7))),i[o]=i[o-a]^e}for(let e=0;o;e++,o--){const t=i[3&e?o:o-4];c[e]=4>=o||4>e?t:s[0][n[t>>>24]]^s[1][n[t>>16&255]]^s[2][n[t>>8&255]]^s[3][n[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],n=e[4],s=t[4],r=[],a=[];let o,i,c,l;for(let e=0;256>e;e++)a[(r[e]=e<<1^283*(e>>7))^e]=e;for(let u=o=0;!n[u];u^=i||1,o=a[o]||1){let a=o^o<<1^o<<2^o<<3^o<<4;a=a>>8^255&a^99,n[u]=a,s[a]=u,l=r[c=r[i=r[u]]];let h=16843009*l^65537*c^257*i^16843008*u,p=257*r[a]^16843008*a;for(let n=0;4>n;n++)e[n][u]=p=p<<24^p>>>8,t[n][a]=h=h<<24^h>>>8}for(let n=0;5>n;n++)e[n]=e[n].slice(0),t[n]=t[n].slice(0)}_crypt(e,t){if(4!==e.length)throw new r("invalid aes block size");const n=this._key[t],s=n.length/4-2,a=[0,0,0,0],o=this._tables[t],i=o[0],c=o[1],l=o[2],u=o[3],h=o[4];let p,f,d,g=e[0]^n[0],w=e[t?3:1]^n[1],y=e[2]^n[2],m=e[t?1:3]^n[3],_=4;for(let e=0;s>e;e++)p=i[g>>>24]^c[w>>16&255]^l[y>>8&255]^u[255&m]^n[_],f=i[w>>>24]^c[y>>16&255]^l[m>>8&255]^u[255&g]^n[_+1],d=i[y>>>24]^c[m>>16&255]^l[g>>8&255]^u[255&w]^n[_+2],m=i[m>>>24]^c[g>>16&255]^l[w>>8&255]^u[255&y]^n[_+3],_+=4,g=p,w=f,y=d;for(let e=0;4>e;e++)a[t?3&-e:e]=h[g>>>24]<<24^h[w>>16&255]<<16^h[y>>8&255]<<8^h[255&m]^n[_++],p=g,g=w,w=y,y=m,m=p;return a}},Y=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,n=e>>8&255,s=255&e;255===t?(t=0,255===n?(n=0,255===s?s=0:++s):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let s;if(!(s=t.length))return[];const r=q.bitLength(t);for(let r=0;s>r;r+=4){this.incCounter(n);const s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return q.clamp(t,r)}},Z=B.hmacSha1;let $=j&&X&&typeof G.importKey==v,ee=j&&X&&typeof G.deriveBits==v;class te extends g{constructor({password:e,rawPassword:n,signed:s,encryptionStrength:o,checkPasswordOnly:i}){super({start(){t.assign(this,{ready:new h((e=>this.resolveReady=e)),password:ae(e,n),signed:s,strength:o-1,pending:new a})},async transform(e,t){const n=this,{password:s,strength:o,resolveReady:c,ready:l}=n;s?(await(async(e,t,n,s)=>{const a=await re(e,t,n,ie(s,0,N[t])),o=ie(s,N[t]);if(a[0]!=o[0]||a[1]!=o[1])throw new r(P)})(n,o,s,ie(e,0,N[o]+2)),e=ie(e,N[o]+2),i?t.error(new r(V)):c()):await l;const u=new a(e.length-F-(e.length-F)%D);t.enqueue(se(n,e,u,0,F,!0))},async flush(e){const{signed:t,ctr:n,hmac:s,pending:o,ready:i}=this;if(s&&n){await i;const c=ie(o,0,o.length-F),l=ie(o,o.length-F);let u=new a;if(c.length){const e=le(J,c);s.update(e);const t=n.update(e);u=ce(J,t)}if(t){const e=ie(ce(J,s.digest()),0,F);for(let t=0;F>t;t++)if(e[t]!=l[t])throw new r(T)}e.enqueue(u)}}})}}class ne extends g{constructor({password:e,rawPassword:n,encryptionStrength:s}){let r;super({start(){t.assign(this,{ready:new h((e=>this.resolveReady=e)),password:ae(e,n),strength:s-1,pending:new a})},async transform(e,t){const n=this,{password:s,strength:r,resolveReady:o,ready:i}=n;let c=new a;s?(c=await(async(e,t,n)=>{const s=x(new a(N[t]));return oe(s,await re(e,t,n,s))})(n,r,s),o()):await i;const l=new a(c.length+e.length-e.length%D);l.set(c,0),t.enqueue(se(n,e,l,c.length,0))},async flush(e){const{ctr:t,hmac:n,pending:s,ready:o}=this;if(n&&t){await o;let i=new a;if(s.length){const e=t.update(le(J,s));n.update(e),i=ce(J,e)}r.signature=ce(J,n.digest()).slice(0,F),e.enqueue(oe(i,r.signature))}}}),r=this}}function se(e,t,n,s,r,o){const{ctr:i,hmac:c,pending:l}=e,u=t.length-r;let h;for(l.length&&(t=oe(l,t),n=((e,t)=>{if(t&&t>e.length){const n=e;(e=new a(t)).set(n,0)}return e})(n,u-u%D)),h=0;u-D>=h;h+=D){const e=le(J,ie(t,h,h+D));o&&c.update(e);const r=i.update(e);o||c.update(r),n.set(ce(J,r),h+s)}return e.pending=ie(t,h),n}async function re(n,s,r,o){n.password=null;const i=await(async(e,t,n,s,r)=>{if(!$)return B.importKey(t);try{return await G.importKey("raw",t,n,!1,r)}catch(e){return $=!1,B.importKey(t)}})(0,r,U,0,M),c=await(async(e,t,n)=>{if(!ee)return B.pbkdf2(t,e.salt,W.iterations,n);try{return await G.deriveBits(e,t,n)}catch(s){return ee=!1,B.pbkdf2(t,e.salt,W.iterations,n)}})(t.assign({salt:o},W),i,8*(2*L[s]+2)),l=new a(c),u=le(J,ie(l,0,L[s])),h=le(J,ie(l,L[s],2*L[s])),p=ie(l,2*L[s]);return t.assign(n,{keys:{key:u,authentication:h,passwordVerification:p},ctr:new Y(new Q(u),e.from(O)),hmac:new Z(h)}),p}function ae(e,t){return t===b?(e=>{if(typeof p==S){const t=new a((e=unescape(encodeURIComponent(e))).length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}return(new p).encode(e)})(e):t}function oe(e,t){let n=e;return e.length+t.length&&(n=new a(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function ie(e,t,n){return e.subarray(t,n)}function ce(e,t){return e.fromBits(t)}function le(e,t){return e.toBits(t)}class ue extends g{constructor({password:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;if(n.password){const t=pe(n,e.subarray(0,12));if(n.password=null,t[11]!=n.passwordVerification)throw new r(P);e=e.subarray(12)}s?t.error(new r(V)):t.enqueue(pe(n,e))}})}}class he extends g{constructor({password:e,passwordVerification:n}){super({start(){t.assign(this,{password:e,passwordVerification:n}),de(this,e)},transform(e,t){const n=this;let s,r;if(n.password){n.password=null;const t=x(new a(12));t[11]=n.passwordVerification,s=new a(e.length+t.length),s.set(fe(n,t),0),r=12}else s=new a(e.length),r=0;s.set(fe(n,e),r),t.enqueue(s)}})}}function pe(e,t){const n=new a(t.length);for(let s=0;s<t.length;s++)n[s]=we(e)^t[s],ge(e,n[s]);return n}function fe(e,t){const n=new a(t.length);for(let s=0;s<t.length;s++)n[s]=we(e)^t[s],ge(e,t[s]);return n}function de(e,n){const s=[305419896,591751049,878082192];t.assign(e,{keys:s,crcKey0:new C(s[0]),crcKey2:new C(s[2])});for(let t=0;t<n.length;t++)ge(e,n.charCodeAt(t))}function ge(e,t){let[n,r,a]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),r=me(s.imul(me(r+ye(n)),134775813)+1),e.crcKey2.append([r>>>24]),a=~e.crcKey2.get(),e.keys=[n,r,a]}function we(e){const t=2|e.keys[2];return ye(s.imul(t,1^t)>>>8)}function ye(e){return 255&e}function me(e){return 4294967295&e}const _e="deflate-raw";class be extends g{constructor(e,{chunkSize:t,CompressionStream:n,CompressionStreamNative:s}){super({});const{compressed:r,encrypted:a,useCompressionStream:o,zipCrypto:i,signed:c,level:l}=e,h=this;let p,f,d=ve(super.readable);a&&!i||!c||(p=new A,d=Ce(d,p)),r&&(d=ze(d,o,{level:l,chunkSize:t},s,n)),a&&(i?d=Ce(d,new he(e)):(f=new ne(e),d=Ce(d,f))),ke(h,d,(()=>{let e;a&&!i&&(e=f.signature),a&&!i||!c||(e=new u(p.value.buffer).getUint32(0)),h.signature=e}))}}class Se extends g{constructor(e,{chunkSize:t,DecompressionStream:n,DecompressionStreamNative:s}){super({});const{zipCrypto:a,encrypted:o,signed:i,signature:c,compressed:l,useCompressionStream:h}=e;let p,f,d=ve(super.readable);o&&(a?d=Ce(d,new ue(e)):(f=new te(e),d=Ce(d,f))),l&&(d=ze(d,h,{chunkSize:t},s,n)),o&&!a||!i||(p=new A,d=Ce(d,p)),ke(this,d,(()=>{if((!o||a)&&i){const e=new u(p.value.buffer);if(c!=e.getUint32(0,!1))throw new r(T)}}))}}function ve(e){return Ce(e,new g({transform(e,t){e&&e.length&&t.enqueue(e)}}))}function ke(e,n,s){n=Ce(n,new g({flush:s})),t.defineProperty(e,"readable",{get:()=>n})}function ze(e,t,n,s,r){try{e=Ce(e,new(t&&s?s:r)(_e,n))}catch(s){if(!t)return e;try{e=Ce(e,new r(_e,n))}catch(t){return e}}return e}function Ce(e,t){return e.pipeThrough(t)}const Ae="data",qe="close";class Ie extends g{constructor(e,n){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=be:r.startsWith("inflate")&&(a=Se);let o=0,i=0;const c=new a(e,n),l=super.readable,u=new g({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){t.assign(s,{inputSize:i})}}),h=new g({transform(e,t){e&&e.length&&(o+=e.length,t.enqueue(e))},flush(){const{signature:e}=c;t.assign(s,{signature:e,outputSize:o,inputSize:i})}});t.defineProperty(s,"readable",{get:()=>l.pipeThrough(u).pipeThrough(c).pipeThrough(h)})}}class Re extends g{constructor(e){let t;super({transform:function n(s,r){if(t){const e=new a(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(r.enqueue(s.slice(0,e)),n(s.slice(e),r)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const He=new l,Be=new l;let Ke,Pe=0,Te=!0;async function Ve(e){try{const{options:t,scripts:s,config:r}=e;if(s&&s.length)try{Te?importScripts.apply(b,s):await xe(s)}catch(e){Te=!1,await xe(s)}self.initCodec&&self.initCodec(),r.CompressionStreamNative=self.CompressionStream,r.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(r.CompressionStream=new k(self.Deflate)),self.Inflate&&(r.DecompressionStream=new k(self.Inflate));const a={highWaterMark:1},o=e.readable||new w({async pull(e){const t=new h((e=>He.set(Pe,e)));De({type:"pull",messageId:Pe}),Pe=(Pe+1)%n.MAX_SAFE_INTEGER;const{value:s,done:r}=await t;e.enqueue(s),r&&e.close()}},a),i=e.writable||new y({async write(e){let t;const s=new h((e=>t=e));Be.set(Pe,t),De({type:Ae,value:e,messageId:Pe}),Pe=(Pe+1)%n.MAX_SAFE_INTEGER,await s}},a),c=new Ie(t,r);Ke=new AbortController;const{signal:l}=Ke;await o.pipeThrough(c).pipeThrough(new Re(r.chunkSize)).pipeTo(i,{signal:l,preventClose:!0,preventAbort:!0}),await i.getWriter().close();const{signature:u,inputSize:p,outputSize:f}=c;De({type:qe,result:{signature:u,inputSize:p,outputSize:f}})}catch(e){Ee(e)}}async function xe(e){for(const t of e)await import(t)}function De(e){let{value:t}=e;if(t)if(t.length)try{t=new a(t),e.value=t.buffer,d(e,[e.value])}catch(t){d(e)}else d(e);else d(e)}function Ee(e=new r("Unknown error")){const{message:t,stack:n,code:s,name:a}=e;d({error:{message:t,stack:n,code:s,name:a}})}addEventListener("message",(({data:e})=>{const{type:t,messageId:n,value:s,done:r}=e;try{if("start"==t&&Ve(e),t==Ae){const e=He.get(n);He.delete(n),e({value:new a(s),done:r})}if("ack"==t){const e=Be.get(n);Be.delete(n),e()}t==qe&&Ke.abort()}catch(e){Ee(e)}})),self.initCodec=()=>{};\n'],{type:"text/javascript"}));e({workerScripts:{inflate:[t],deflate:[t]}})})(O),O({baseURL:Tn}),e.BlobReader=ae,e.BlobWriter=ie,e.Data64URIWriter=class extends re{constructor(e){super(),n.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let n=0,r=t.pending;const a=t.pending.length;for(t.pending="",n=0;n<3*i.floor((a+e.length)/3)-a;n++)r+=s.fromCharCode(e[n]);for(;n<e.length;n++)t.pending+=s.fromCharCode(e[n]);r.length>2?t.data+=z(r):t.pending=r}getData(){return this.data+z(this.pending)}},e.HttpRangeReader=class extends Se{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.TextWriter=class extends ie{constructor(e){super(e),n.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(((r,a)=>{n.assign(t,{onload:({target:e})=>r(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)}))}}},e.ZipReader=class{constructor(e,t={}){n.assign(this,{reader:ve(e),options:t,config:K()})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:r}=t;if(await ze(s),s.size!==B&&s.readUint8Array||(s=new ae(await new u(s.readable).blob()),await ze(s)),s.size<H)throw new d(un);s.chunkSize=(e=>i.max(e.chunkSize,64))(r);const a=await(async(e,t,n)=>{const s=new f(4);return 101010256,Dn(s).setUint32(0,101010256,!0),await r(22)||await r(i.min(1048582,n));async function r(t){const r=n-t,a=await xe(e,r,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:r+e,buffer:a.slice(e,e+22).buffer}}})(s,0,s.size);if(!a)throw 134695760==Cn(Dn(await xe(s,0,4)))?new d(dn):new d("End of central directory not found");const o=Dn(a);let c=Cn(o,12),l=Cn(o,16);const h=a.offset,p=xn(o,20),w=h+H+p;let g=xn(o,4);const m=s.lastDiskNumber||0;let y=xn(o,6),b=xn(o,8),S=0,_=0;if(l==q||c==q||b==U||y==U){const e=Dn(await xe(s,a.offset-20,20));if(117853008==Cn(e,0)){l=Rn(e,8);let t=await xe(s,l,56,-1),n=Dn(t);const r=a.offset-20-56;if(Cn(n,0)!=L&&l!=r){const e=l;l=r,S=l-e,t=await xe(s,l,56,-1),n=Dn(t)}if(Cn(n,0)!=L)throw new d("End of Zip64 central directory locator not found");g==U&&(g=Cn(n,16)),y==U&&(y=Cn(n,20)),b==U&&(b=Rn(n,32)),c==q&&(c=Rn(n,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),m!=g)throw new d(dn);if(0>l)throw new d(un);let k=0,z=await xe(s,l,c,y),v=Dn(z);if(c){const e=a.offset-c;if(Cn(v,k)!=W&&l!=e){const t=l;l=e,S+=l-t,z=await xe(s,l,c,y),v=Dn(z)}}const x=a.offset-l-(s.lastDiskOffset||0);if(c==x||0>x||(c=x,z=await xe(s,l,c,y),v=Dn(z)),0>l||l>=s.size)throw new d(un);const C=_n(t,e,"filenameEncoding"),R=_n(t,e,"commentEncoding");for(let a=0;b>a;a++){const o=new mn(s,r,t.options);if(Cn(v,k)!=W)throw new d("Central directory header not found");yn(o,v,k+6);const c=!!o.bitFlag.languageEncodingFlag,l=k+46,u=l+o.filenameLength,h=u+o.extraFieldLength,f=xn(v,k+4),p=!0,w=z.subarray(l,u),g=xn(v,k+32),m=h+g,y=z.subarray(h,m),x=c,D=c,T=p&&!(16&~vn(v,k+38)),F=Cn(v,k+42)+S;n.assign(o,{versionMadeBy:f,msDosCompatible:p,compressedSize:0,uncompressedSize:0,commentLength:g,directory:T,offset:F,diskNumberStart:xn(v,k+34),internalFileAttribute:xn(v,k+36),externalFileAttribute:Cn(v,k+38),rawFilename:w,filenameUTF8:x,commentUTF8:D,rawExtraField:z.subarray(u,h)});const A=_n(t,e,"decodeText")||Jt,q=x?fn:C||pn,U=D?fn:R||pn;let L=A(w,q);L===B&&(L=Jt(w,q));let H=A(y,U);H===B&&(H=Jt(y,U)),n.assign(o,{rawComment:y,filename:L,comment:H,directory:T||L.endsWith("/")}),_=i.max(F,_),await bn(o,o,v,k+6);const E=new ln(o);E.getData=(e,t)=>o.getData(e,E,t),k=m;const{onprogress:P}=e;if(P)try{await P(a+1,b,new ln(o))}catch(e){}yield E}const D=_n(t,e,"extractPrependedData"),T=_n(t,e,"extractAppendedData");return D&&(t.prependedData=_>0?await xe(s,0,_):new f),t.comment=p?await xe(s,h+H,p):new f,T&&(t.appendedData=w<s.size?await xe(s,w,s.size-w):new f),!0}async getEntries(e={}){const t=[];for await(const n of this.getEntriesGenerator(e))t.push(n);return t}async close(){}},e.configure=O}));