tasmota-webserial-esptool 6.4.0 → 6.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/const.js CHANGED
@@ -179,23 +179,27 @@ export const CHIP_DETECT_MAGIC_VALUES = {
179
179
  0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },
180
180
  0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },
181
181
  0x9: { name: "ESP32-S3", family: CHIP_FAMILY_ESP32S3 },
182
+ 0x0c21e06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
182
183
  0x6f51306f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
183
184
  0x7c41a06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
184
- 0x0c21e06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
185
- 0x6921506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
186
185
  0x1b31506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
187
- 0x4881606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
188
186
  0x4361606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
187
+ 0x4881606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
188
+ 0x6921506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
189
+ 0x1101406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
189
190
  0x5fd1406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
190
- 0x1101406F: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
191
- 0x63E1406F: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
192
- 0x5C501458: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
193
- 0xd7b73e80: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
191
+ 0x5c501458: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
192
+ 0x63e1406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
194
193
  0x2ce0806f: { name: "ESP32-C6", family: CHIP_FAMILY_ESP32C6 },
194
+ 0x2421606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
195
+ 0x33f0206f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
196
+ 0x4f81606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
195
197
  0x7211606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
196
- 0x0addbad0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
197
- 0x7039ad9: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
198
+ 0x97e30068: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
199
+ 0xd7b73e80: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
198
200
  0x0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
201
+ 0x7039ad9: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
202
+ 0x0addbad0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
199
203
  };
200
204
  // Commands supported by ESP8266 ROM bootloader
201
205
  export const ESP_FLASH_BEGIN = 0x02;
package/dist/web/index.js CHANGED
@@ -1 +1 @@
1
- const t=t=>{let e=[];for(let a=0;a<t.length;a++){let s=t.charCodeAt(a);s<=255&&e.push(s)}return e},e=t=>"["+t.map(t=>a(t)).join(", ")+"]",a=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},s=t=>new Promise(e=>setTimeout(e,t)),i={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},r=115200,n=t(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),h=33382,l=50,o=12882,_=12883,d=12994,f=12995,u=12997,c=12998,g=207969,w=12914,m=12928,p={4293968129:{name:"ESP8266",family:h},15736195:{name:"ESP32",family:l},1990:{name:"ESP32-S2",family:o},9:{name:"ESP32-S3",family:_},1867591791:{name:"ESP32-C2",family:d},2084675695:{name:"ESP32-C2",family:d},203546735:{name:"ESP32-C2",family:d},1763790959:{name:"ESP32-C3",family:f},456216687:{name:"ESP32-C3",family:f},1216438383:{name:"ESP32-C3",family:f},1130455151:{name:"ESP32-C3",family:f},1607549039:{name:"ESP32-C5",family:u},285294703:{name:"ESP32-C5",family:u},1675706479:{name:"ESP32-C5",family:u},1548751960:{name:"ESP32-C5",family:u},3619110528:{name:"ESP32-H2",family:w},752910447:{name:"ESP32-C6",family:c},1913741423:{name:"ESP32-C61",family:g},182303440:{name:"ESP32-P4",family:m},117676761:{name:"ESP32-P4",family:m},0:{name:"ESP32-P4",family:m}},y=3e3,b=6e5,v=(t,e)=>{let a=Math.floor(t*(e/486));return a<y?y:a},k=t=>{switch(t){case l:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case o:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case _:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case h:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case d:case f:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case u:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case c:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case g:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case w:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case m:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class z extends Error{constructor(t){super(t),this.name="SlipReadError"}}const S=async e=>{let a;return e==l?a=await import("./esp32-BNIFdu1P.js"):e==o?a=await import("./esp32s2-Bk4mqADi.js"):e==_?a=await import("./esp32s3-Df3OUCOC.js"):e==h?a=await import("./esp8266-CQFcqJ_a.js"):e==d?a=await import("./esp32c2-BqxquOKw.js"):e==f?a=await import("./esp32c3-BOOqe8me.js"):e==u?a=await import("./esp32c5-C8uE-s4t.js"):e==c?a=await import("./esp32c6-Cg5qYgg7.js"):e==g?a=await import("./esp32c61-CzCdsydk.js"):e==w?a=await import("./esp32h2-DZa_lpff.js"):e==m&&(a=await import("./esp32p4-DyGqUAeZ.js")),{...a,text:t(atob(a.text)),data:t(atob(a.data))}};function F(t){let e=t.length;for(;--e>=0;)t[e]=0}const U=256,D=286,O=30,x=15,R=new Uint8Array([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]),I=new Uint8Array([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]),E=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),B=new Array(576);F(B);const T=new Array(60);F(T);const C=new Array(512);F(C);const L=new Array(256);F(L);const P=new Array(29);F(P);const Z=new Array(O);function M(t,e,a,s,i){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=s,this.max_length=i,this.has_stree=t&&t.length}let N,$,H;function j(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}F(Z);const V=t=>t<256?C[t]:C[256+(t>>>7)],W=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},K=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},Y=(t,e,a)=>{K(t,a[2*e],a[2*e+1])},q=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},G=(t,e,a)=>{const s=new Array(16);let i,r,n=0;for(i=1;i<=x;i++)n=n+a[i-1]<<1,s[i]=n;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=q(s[e]++,e))}},X=t=>{let e;for(e=0;e<D;e++)t.dyn_ltree[2*e]=0;for(e=0;e<O;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},Q=t=>{t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},J=(t,e,a,s)=>{const i=2*e,r=2*a;return t[i]<t[r]||t[i]===t[r]&&s[e]<=s[a]},tt=(t,e,a)=>{const s=t.heap[a];let i=a<<1;for(;i<=t.heap_len&&(i<t.heap_len&&J(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!J(e,s,t.heap[i],t.depth));)t.heap[a]=t.heap[i],a=i,i<<=1;t.heap[a]=s},et=(t,e,a)=>{let s,i,r,n,h=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+h++],s+=(255&t.pending_buf[t.sym_buf+h++])<<8,i=t.pending_buf[t.sym_buf+h++],0===s?Y(t,i,e):(r=L[i],Y(t,r+U+1,e),n=R[r],0!==n&&(i-=P[r],K(t,i,n)),s--,r=V(s),Y(t,r,a),n=I[r],0!==n&&(s-=Z[r],K(t,s,n)))}while(h<t.sym_next);Y(t,256,e)},at=(t,e)=>{const a=e.dyn_tree,s=e.stat_desc.static_tree,i=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,h,l,o=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=o=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=o<2?++o:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=s[2*l+1]);for(e.max_code=o,n=t.heap_len>>1;n>=1;n--)tt(t,a,n);l=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tt(t,a,1),h=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=h,a[2*l]=a[2*n]+a[2*h],t.depth[l]=(t.depth[n]>=t.depth[h]?t.depth[n]:t.depth[h])+1,a[2*n+1]=a[2*h+1]=l,t.heap[1]=l++,tt(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,s=e.max_code,i=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,h=e.stat_desc.extra_base,l=e.stat_desc.max_length;let o,_,d,f,u,c,g=0;for(f=0;f<=x;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)_=t.heap[o],f=a[2*a[2*_+1]+1]+1,f>l&&(f=l,g++),a[2*_+1]=f,_>s||(t.bl_count[f]++,u=0,_>=h&&(u=n[_-h]),c=a[2*_],t.opt_len+=c*(f+u),r&&(t.static_len+=c*(i[2*_+1]+u)));if(0!==g){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(f=l;0!==f;f--)for(_=t.bl_count[f];0!==_;)d=t.heap[--o],d>s||(a[2*d+1]!==f&&(t.opt_len+=(f-a[2*d+1])*a[2*d],a[2*d+1]=f),_--)}})(t,e),G(a,o,t.bl_count)},st=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),e[2*(a+1)+1]=65535,s=0;s<=a;s++)i=n,n=e[2*(s+1)+1],++h<l&&i===n||(h<o?t.bl_tree[2*i]+=h:0!==i?(i!==r&&t.bl_tree[2*i]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4))},it=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),s=0;s<=a;s++)if(i=n,n=e[2*(s+1)+1],!(++h<l&&i===n)){if(h<o)do{Y(t,i,t.bl_tree)}while(0!==--h);else 0!==i?(i!==r&&(Y(t,i,t.bl_tree),h--),Y(t,16,t.bl_tree),K(t,h-3,2)):h<=10?(Y(t,17,t.bl_tree),K(t,h-3,3)):(Y(t,18,t.bl_tree),K(t,h-11,7));h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4)}};let rt=!1;const nt=(t,e,a,s)=>{K(t,0+(s?1:0),3),Q(t),W(t,a),W(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var ht=(t,e,a,s)=>{let i,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<U;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),at(t,t.l_desc),at(t,t.d_desc),n=(t=>{let e;for(st(t,t.dyn_ltree,t.l_desc.max_code),st(t,t.dyn_dtree,t.d_desc.max_code),at(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*A[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=i&&(i=r)):i=r=a+5,a+4<=i&&-1!==e?nt(t,e,a,s):4===t.strategy||r===i?(K(t,2+(s?1:0),3),et(t,B,T)):(K(t,4+(s?1:0),3),((t,e,a,s)=>{let i;for(K(t,e-257,5),K(t,a-1,5),K(t,s-4,4),i=0;i<s;i++)K(t,t.bl_tree[2*A[i]+1],3);it(t,t.dyn_ltree,e-1),it(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),et(t,t.dyn_ltree,t.dyn_dtree)),X(t),s&&Q(t)},lt={_tr_init:t=>{rt||((()=>{let t,e,a,s,i;const r=new Array(16);for(a=0,s=0;s<28;s++)for(P[s]=a,t=0;t<1<<R[s];t++)L[a++]=s;for(L[a-1]=s,i=0,s=0;s<16;s++)for(Z[s]=i,t=0;t<1<<I[s];t++)C[i++]=s;for(i>>=7;s<O;s++)for(Z[s]=i<<7,t=0;t<1<<I[s]-7;t++)C[256+i++]=s;for(e=0;e<=x;e++)r[e]=0;for(t=0;t<=143;)B[2*t+1]=8,t++,r[8]++;for(;t<=255;)B[2*t+1]=9,t++,r[9]++;for(;t<=279;)B[2*t+1]=7,t++,r[7]++;for(;t<=287;)B[2*t+1]=8,t++,r[8]++;for(G(B,287,r),t=0;t<O;t++)T[2*t+1]=5,T[2*t]=q(t,5);N=new M(B,R,257,D,x),$=new M(T,I,0,O,x),H=new M(new Array(0),E,0,19,7)})(),rt=!0),t.l_desc=new j(t.dyn_ltree,N),t.d_desc=new j(t.dyn_dtree,$),t.bl_desc=new j(t.bl_tree,H),t.bi_buf=0,t.bi_valid=0,X(t)},_tr_stored_block:nt,_tr_flush_block:ht,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(L[a]+U+1)]++,t.dyn_dtree[2*V(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{K(t,2,3),Y(t,256,B),(t=>{16===t.bi_valid?(W(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var ot=(t,e,a,s)=>{let i=65535&t,r=t>>>16&65535,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{i=i+e[s++]|0,r=r+i|0}while(--n);i%=65521,r%=65521}return i|r<<16};const _t=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var s=0;s<8;s++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var dt=(t,e,a,s)=>{const i=_t,r=s+a;t^=-1;for(let a=s;a<r;a++)t=t>>>8^i[255&(t^e[a])];return-1^t},ft={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ct,_tr_stored_block:gt,_tr_flush_block:wt,_tr_tally:mt,_tr_align:pt}=lt,{Z_NO_FLUSH:yt,Z_PARTIAL_FLUSH:bt,Z_FULL_FLUSH:vt,Z_FINISH:kt,Z_BLOCK:zt,Z_OK:St,Z_STREAM_END:Ft,Z_STREAM_ERROR:Ut,Z_DATA_ERROR:Dt,Z_BUF_ERROR:Ot,Z_DEFAULT_COMPRESSION:xt,Z_FILTERED:Rt,Z_HUFFMAN_ONLY:It,Z_RLE:Et,Z_FIXED:At,Z_DEFAULT_STRATEGY:Bt,Z_UNKNOWN:Tt,Z_DEFLATED:Ct}=ut,Lt=258,Pt=262,Zt=42,Mt=113,Nt=666,$t=(t,e)=>(t.msg=ft[e],e),Ht=t=>2*t-(t>4?9:0),jt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Vt=t=>{let e,a,s,i=t.w_size;e=t.hash_size,s=e;do{a=t.head[--s],t.head[s]=a>=i?a-i:0}while(--e);e=i,s=e;do{a=t.prev[--s],t.prev[s]=a>=i?a-i:0}while(--e)};let Wt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Kt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Yt=(t,e)=>{wt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Kt(t.strm)},qt=(t,e)=>{t.pending_buf[t.pending++]=e},Gt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Xt=(t,e,a,s)=>{let i=t.avail_in;return i>s&&(i=s),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),a),1===t.state.wrap?t.adler=ot(t.adler,e,i,a):2===t.state.wrap&&(t.adler=dt(t.adler,e,i,a)),t.next_in+=i,t.total_in+=i,i)},Qt=(t,e)=>{let a,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match;const l=t.strstart>t.w_size-Pt?t.strstart-(t.w_size-Pt):0,o=t.window,_=t.w_mask,d=t.prev,f=t.strstart+Lt;let u=o[r+n-1],c=o[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(a=e,o[a+n]===c&&o[a+n-1]===u&&o[a]===o[r]&&o[++a]===o[r+1]){r+=2,a++;do{}while(o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&r<f);if(s=Lt-(f-r),r=f-Lt,s>n){if(t.match_start=e,n=s,s>=h)break;u=o[r+n-1],c=o[r+n]}}}while((e=d[e&_])>l&&0!==--i);return n<=t.lookahead?n:t.lookahead},Jt=t=>{const e=t.w_size;let a,s,i;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Pt)&&(t.window.set(t.window.subarray(e,e+e-s),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Vt(t),s+=e),0===t.strm.avail_in)break;if(a=Xt(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Wt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Wt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<Pt&&0!==t.strm.avail_in)},te=(t,e)=>{let a,s,i,r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n=0,h=t.strm.avail_in;do{if(a=65535,i=t.bi_valid+42>>3,t.strm.avail_out<i)break;if(i=t.strm.avail_out-i,s=t.strstart-t.block_start,a>s+t.strm.avail_in&&(a=s+t.strm.avail_in),a>i&&(a=i),a<r&&(0===a&&e!==kt||e===yt||a!==s+t.strm.avail_in))break;n=e===kt&&a===s+t.strm.avail_in?1:0,gt(t,0,0,n),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,Kt(t.strm),s&&(s>a&&(s=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+s),t.strm.next_out),t.strm.next_out+=s,t.strm.avail_out-=s,t.strm.total_out+=s,t.block_start+=s,a-=s),a&&(Xt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===n);return h-=t.strm.avail_in,h&&(h>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=h&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-h,t.strm.next_in),t.strstart),t.strstart+=h,t.insert+=h>t.w_size-t.insert?t.w_size-t.insert:h),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),n?4:e!==yt&&e!==kt&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(i=t.window_size-t.strstart,t.strm.avail_in>i&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,i+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),i>t.strm.avail_in&&(i=t.strm.avail_in),i&&(Xt(t.strm,t.window,t.strstart,i),t.strstart+=i,t.insert+=i>t.w_size-t.insert?t.w_size-t.insert:i),t.high_water<t.strstart&&(t.high_water=t.strstart),i=t.bi_valid+42>>3,i=t.pending_buf_size-i>65535?65535:t.pending_buf_size-i,r=i>t.w_size?t.w_size:i,s=t.strstart-t.block_start,(s>=r||(s||e===kt)&&e!==yt&&0===t.strm.avail_in&&s<=i)&&(a=s>i?i:s,n=e===kt&&0===t.strm.avail_in&&a===s?1:0,gt(t,t.block_start,a,n),t.block_start+=a,Kt(t.strm)),n?3:1)},ee=(t,e)=>{let a,s;for(;;){if(t.lookahead<Pt){if(Jt(t),t.lookahead<Pt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-Pt&&(t.match_length=Qt(t,a)),t.match_length>=3)if(s=mt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+1]);else s=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(s&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2},ae=(t,e)=>{let a,s,i;for(;;){if(t.lookahead<Pt){if(Jt(t),t.lookahead<Pt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-Pt&&(t.match_length=Qt(t,a),t.match_length<=5&&(t.strategy===Rt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,s=mt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,s&&(Yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(s=mt(t,0,t.window[t.strstart-1]),s&&Yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(s=mt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2};function se(t,e,a,s,i){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=s,this.func=i}const ie=[new se(0,0,0,0,te),new se(4,4,8,4,ee),new se(4,5,16,8,ee),new se(4,6,32,32,ee),new se(4,4,16,16,ae),new se(8,16,32,32,ae),new se(8,16,128,128,ae),new se(8,32,128,256,ae),new se(32,128,258,1024,ae),new se(32,258,258,4096,ae)];function re(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ct,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),jt(this.dyn_ltree),jt(this.dyn_dtree),jt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),jt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),jt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ne=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==Zt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Mt&&e.status!==Nt?1:0},he=t=>{if(ne(t))return $t(t,Ut);t.total_in=t.total_out=0,t.data_type=Tt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Zt:Mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,ct(e),St},le=t=>{const e=he(t);var a;return e===St&&((a=t.state).window_size=2*a.w_size,jt(a.head),a.max_lazy_match=ie[a.level].max_lazy,a.good_match=ie[a.level].good_length,a.nice_match=ie[a.level].nice_length,a.max_chain_length=ie[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},oe=(t,e,a,s,i,r)=>{if(!t)return Ut;let n=1;if(e===xt&&(e=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),i<1||i>9||a!==Ct||s<8||s>15||e<0||e>9||r<0||r>At||8===s&&1!==n)return $t(t,Ut);8===s&&(s=9);const h=new re;return t.state=h,h.strm=t,h.status=Zt,h.wrap=n,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=i+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<i+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.sym_buf=h.lit_bufsize,h.sym_end=3*(h.lit_bufsize-1),h.level=e,h.strategy=r,h.method=a,le(t)};var _e={deflateInit:(t,e)=>oe(t,e,Ct,15,8,Bt),deflateInit2:oe,deflateReset:le,deflateResetKeep:he,deflateSetHeader:(t,e)=>ne(t)||2!==t.state.wrap?Ut:(t.state.gzhead=e,St),deflate:(t,e)=>{if(ne(t)||e>zt||e<0)return t?$t(t,Ut):Ut;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===Nt&&e!==kt)return $t(t,0===t.avail_out?Ot:Ut);const s=a.last_flush;if(a.last_flush=e,0!==a.pending){if(Kt(t),0===t.avail_out)return a.last_flush=-1,St}else if(0===t.avail_in&&Ht(e)<=Ht(s)&&e!==kt)return $t(t,Ot);if(a.status===Nt&&0!==t.avail_in)return $t(t,Ot);if(a.status===Zt&&0===a.wrap&&(a.status=Mt),a.status===Zt){let e=Ct+(a.w_bits-8<<4)<<8,s=-1;if(s=a.strategy>=It||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=s<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Gt(a,e),0!==a.strstart&&(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),t.adler=1,a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(57===a.status)if(t.adler=0,qt(a,31),qt(a,139),qt(a,8),a.gzhead)qt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),qt(a,255&a.gzhead.time),qt(a,a.gzhead.time>>8&255),qt(a,a.gzhead.time>>16&255),qt(a,a.gzhead.time>>24&255),qt(a,9===a.level?2:a.strategy>=It||a.level<2?4:0),qt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(qt(a,255&a.gzhead.extra.length),qt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=dt(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,9===a.level?2:a.strategy>=It||a.level<2?4:0),qt(a,3),a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St;if(69===a.status){if(a.gzhead.extra){let e=a.pending,s=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+s>a.pending_buf_size;){let i=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=i,Kt(t),0!==a.pending)return a.last_flush=-1,St;e=0,s-=i}let i=new Uint8Array(a.gzhead.extra);a.pending_buf.set(i.subarray(a.gzindex,a.gzindex+s),a.pending),a.pending+=s,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(Kt(t),0!==a.pending))return a.last_flush=-1,St;qt(a,255&t.adler),qt(a,t.adler>>8&255),t.adler=0}if(a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(0!==t.avail_in||0!==a.lookahead||e!==yt&&a.status!==Nt){let s=0===a.level?te(a,e):a.strategy===It?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Jt(t),0===t.lookahead)){if(e===yt)return 1;break}if(t.match_length=0,a=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===Et?((t,e)=>{let a,s,i,r;const n=t.window;for(;;){if(t.lookahead<=Lt){if(Jt(t),t.lookahead<=Lt&&e===yt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,s=n[i],s===n[++i]&&s===n[++i]&&s===n[++i])){r=t.strstart+Lt;do{}while(s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&i<r);t.match_length=Lt-(r-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=mt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):ie[a.level].func(a,e);if(3!==s&&4!==s||(a.status=Nt),1===s||3===s)return 0===t.avail_out&&(a.last_flush=-1),St;if(2===s&&(e===bt?pt(a):e!==zt&&(gt(a,0,0,!1),e===vt&&(jt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),Kt(t),0===t.avail_out))return a.last_flush=-1,St}return e!==kt?St:a.wrap<=0?Ft:(2===a.wrap?(qt(a,255&t.adler),qt(a,t.adler>>8&255),qt(a,t.adler>>16&255),qt(a,t.adler>>24&255),qt(a,255&t.total_in),qt(a,t.total_in>>8&255),qt(a,t.total_in>>16&255),qt(a,t.total_in>>24&255)):(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),Kt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?St:Ft)},deflateEnd:t=>{if(ne(t))return Ut;const e=t.state.status;return t.state=null,e===Mt?$t(t,Dt):St},deflateSetDictionary:(t,e)=>{let a=e.length;if(ne(t))return Ut;const s=t.state,i=s.wrap;if(2===i||1===i&&s.status!==Zt||s.lookahead)return Ut;if(1===i&&(t.adler=ot(t.adler,e,a,0)),s.wrap=0,a>=s.w_size){0===i&&(jt(s.head),s.strstart=0,s.block_start=0,s.insert=0);let t=new Uint8Array(s.w_size);t.set(e.subarray(a-s.w_size,a),0),e=t,a=s.w_size}const r=t.avail_in,n=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Jt(s);s.lookahead>=3;){let t=s.strstart,e=s.lookahead-2;do{s.ins_h=Wt(s,s.ins_h,s.window[t+3-1]),s.prev[t&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=t,t++}while(--e);s.strstart=t,s.lookahead=2,Jt(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,t.next_in=n,t.input=h,t.avail_in=r,s.wrap=i,St},deflateInfo:"pako deflate (from Nodeca project)"};const de=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var fe=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)de(a,e)&&(t[e]=a[e])}}return t},ue=t=>{let e=0;for(let a=0,s=t.length;a<s;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,s=0,i=t.length;e<i;e++){let i=t[e];a.set(i,s),s+=i.length}return a};let ce=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){ce=!1}const ge=new Uint8Array(256);for(let t=0;t<256;t++)ge[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ge[254]=ge[254]=1;var we=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,s,i,r,n=t.length,h=0;for(i=0;i<n;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),r=0,i=0;r<h;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e};var me=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const pe=Object.prototype.toString,{Z_NO_FLUSH:ye,Z_SYNC_FLUSH:be,Z_FULL_FLUSH:ve,Z_FINISH:ke,Z_OK:ze,Z_STREAM_END:Se,Z_DEFAULT_COMPRESSION:Fe,Z_DEFAULT_STRATEGY:Ue,Z_DEFLATED:De}=ut;function Oe(t){this.options=fe({level:Fe,method:De,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ue},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new me,this.strm.avail_out=0;let a=_e.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ze)throw new Error(ft[a]);if(e.header&&_e.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?we(e.dictionary):"[object ArrayBuffer]"===pe.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=_e.deflateSetDictionary(this.strm,t),a!==ze)throw new Error(ft[a]);this._dict_set=!0}}Oe.prototype.push=function(t,e){const a=this.strm,s=this.options.chunkSize;let i,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?ke:ye,"string"==typeof t?a.input=we(t):"[object ArrayBuffer]"===pe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(s),a.next_out=0,a.avail_out=s),(r===be||r===ve)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(i=_e.deflate(a,r),i===Se)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),i=_e.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ze;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Oe.prototype.onData=function(t){this.chunks.push(t)},Oe.prototype.onEnd=function(t){t===ze&&(this.result=ue(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var xe={deflate:function(t,e){const a=new Oe(e);if(a.push(t,!0),a.err)throw a.msg||ft[a.err];return a.result}};const{deflate:Re}=xe;var Ie=Re;const Ee={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},Ae=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw"Pack format to Argument count mismatch";let s=[],i=!0;for(let s=0;s<t.length;s++)"<"==t[s]?i=!0:">"==t[s]?i=!1:(r(t[s],e[a]),a++);function r(t,e){if(!(t in Ee))throw"Unhandled character '"+t+"' in pack format";let a=Ee[t].bytes,r=new DataView(new ArrayBuffer(a));Ee[t].p.bind(r)(0,e,i);for(let t=0;t<a;t++)s.push(r.getUint8(t))}return s},Be=(t,e)=>{let a=0,s=[],i=!0;for(let e of t)"<"==e?i=!0:">"==e?i=!1:r(e);function r(t){if(!(t in Ee))throw"Unhandled character '"+t+"' in unpack format";let r=Ee[t].bytes,n=new DataView(new ArrayBuffer(r));for(let t=0;t<r;t++)n.setUint8(t,255&e[a+t]);let h=Ee[t].u.bind(n);s.push(h(0,i)),a+=r}return s};class Te extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t=await this.readRegister(1073745920),e=p[t>>>0];if(void 0===e)throw new Error(`Unknown Chip: Hex: ${a(t>>>0,8).toLowerCase()} Number: ${t}`);this.chipName=e.name,this.chipFamily=e.family;let s=k(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(s+4*t);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(t=100){return new Promise(e=>setTimeout(e,t))}async setRTS(t){await this.port.setSignals({requestToSend:t}),await this.setDTR(this.state_DTR)}async setDTR(t){this.state_DTR=t,await this.port.setSignals({dataTerminalReady:t})}async hardReset(t=!1){this.logger.log("Try hard reset."),t?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(t=>setTimeout(t,1e3))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],s=this._efuses[1],i=this._efuses[2],r=this._efuses[3];if(this.chipFamily==h){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(s>>16&255){if(1!=(s>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}else t=[24,254,52];e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=s>>8&255,e[4]=255&s,e[5]=a>>24&255}else if(this.chipFamily==l)e[0]=i>>8&255,e[1]=255&i,e[2]=s>>24&255,e[3]=s>>16&255,e[4]=s>>8&255,e[5]=255&s;else{if(this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=w&&this.chipFamily!=m)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=a>>24&255,e[3]=a>>16&255,e[4]=a>>8&255,e[5]=255&a}return e}async readRegister(t){this.debug&&this.logger.debug("Reading from Register "+a(t,8));let e=Ae("<I",t);await this.sendCommand(10,e);let[s,i]=await this.getResponse(10);return s}async checkCommand(t,e,s=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,s);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let p=0;if(this.IS_STUB||this.chipFamily==h?p=2:[l,o,_,d,f,u,c,g,w,m].includes(this.chipFamily)?p=4:[2,4].includes(n.length)&&(p=n.length),n.length<p)throw new Error("Didn't get enough status bytes");let y=n.slice(-p,n.length);if(n=n.slice(0,-p),this.debug&&(this.logger.debug("status",y),this.logger.debug("value",r),this.logger.debug("data",n)),1==y[0])throw 5==y[1]?new Error("Invalid (unsupported) command "+a(t)):new Error("Command failure error code "+a(y[1]));return[r,n]}async sendCommand(t,e,a=0){let s=(t=>{let e=[192];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e.push(192),e})([...Ae("<BBHI",0,t,e.length,a),...e]);this.debug&&this.logger.debug(`Writing ${s.length} byte${1==s.length?"":"s"}:`,s),await this.writeToStream(s)}async readPacket(t){let i=null,r=!1,n=[];for(;;){let h=Date.now();for(n=[];Date.now()-h<t;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await s(10)}if(0==n.length){throw new z("Timed out waiting for packet "+(null===i?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+e(n));for(let t of n)if(null===i){if(192!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid head of packet ("+a(t)+")");i=[]}else if(r)if(r=!1,220==t)i.push(192);else{if(221!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid SLIP escape (0xdb, "+a(t)+")");i.push(219)}else if(219==t)r=!0;else{if(192==t)return this.debug&&this.logger.debug("Received full packet: "+e(i)),i;i.push(t)}}throw new z("Invalid state")}async getResponse(t,e=3e3){for(let s=0;s<100;s++){const s=await this.readPacket(e);if(s.length<8)continue;const[i,r,n,h]=Be("<BBHI",s.slice(0,8));if(1!=i)continue;const l=s.slice(8);if(null==t||r==t)return[h,l];if(0!=l[0]&&5==l[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${a(t)}`)}throw"Response doesn't match request"}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==h)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=Ae("<II",t,this.IS_STUB?r:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e;try{await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),await this.port.close(),await this.port.open({baudRate:t}),this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(this._inputBuffer.length=0,await this._sync())return await s(100),!0;await s(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,n);for(let t=0;t<8;t++)try{let[t,e]=await this.getResponse(8,100);if(e.length>1&&0==e[0]&&0==e[1])return!0}catch(t){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,s=0,i=!1){if(t.byteLength>=8){var r=Array.from(new Uint8Array(t,0,4));let e=r[0],s=r[2],i=r[3];this.logger.log(`Image header, Magic=${a(e)}, FlashMode=${a(s)}, FlashSizeFreq=${a(i)}`)}let n,h=t.byteLength,l=0,o=y;i?(n=Ie(new Uint8Array(t),{level:9}).buffer,l=n.byteLength,this.logger.log(`Writing data with filesize: ${h}. Compressed Size: ${l}`),o=await this.flashDeflBegin(h,l,s)):(this.logger.log(`Writing data with filesize: ${h}`),n=t,await this.flashBegin(h,s));let _=[],d=0,f=0,u=0,c=Date.now(),g=this.getFlashWriteSize(),w=i?l:h;for(;w-u>0;)this.debug&&this.logger.log(`Writing at ${a(s+d*g,8)} `),w-u>=g?_=Array.from(new Uint8Array(n,u,g)):(_=Array.from(new Uint8Array(n,u,w-u)),i||(_=_.concat(new Array(g-_.length).fill(255)))),i?await this.flashDeflBlock(_,d,o):await this.flashBlock(_,d),d+=1,f+=i?Math.round(_.length*h/l):_.length,u+=g,e(Math.min(f,h),h);this.logger.log("Took "+(Date.now()-c)+"ms to write "+w+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,a=3e3){await this.checkCommand(3,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashDeflBlock(t,e,a=3e3){await this.checkCommand(17,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashBegin(t=0,e=0,s=!1){let i,r,n=this.getFlashWriteSize();!this.IS_STUB&&[l,o,_,d,f,u,c,g,w,m].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let p,b=Math.floor((t+n-1)/n);i=this.chipFamily==h?this.getEraseSize(e,t):t,p=this.IS_STUB?y:v(3e4,t);let k=Date.now();return r=Ae("<IIII",i,b,n,e),this.chipFamily!=l&&this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=w&&this.chipFamily!=m||(r=r.concat(Ae("<I",s?1:0))),this.logger.log("Erase size "+i+", blocks "+b+", block size "+a(n,4)+", offset "+a(e,4)+", encrypted "+(s?"yes":"no")),await this.checkCommand(2,r,0,p),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-k)+"ms to erase "+b+" bytes"),b}async flashDeflBegin(t=0,e=0,a=0,s=!1){let i,r=this.getFlashWriteSize(),n=Math.floor((e+r-1)/r),h=Math.floor((t+r-1)/r),l=0,o=0;return this.IS_STUB?(l=t,o=v(3e4,l)):(l=h*r,o=y),i=Ae("<IIII",l,n,r,a),await this.checkCommand(16,i,0,o),o}async flashFinish(){let t=Ae("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=Ae("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){return k(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,a=4294967295,s=0,i=0){let r=Ae("<IIII",t,e,a,s);i>0&&r.concat(Ae("<IIII",k(this.getChipFamily()).uartDateReg,0,0,i)),await this.checkCommand(9,r)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let s=t.regBase+t.mosiDlenOffs,i=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(s,e-1),a>0&&await this.writeRegister(i,a-1)}else{let s=t.regBase+t.usr1Offs,i=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(s,i)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,s=0){let i=k(this.getChipFamily()),r=i.regBase,n=r,h=r+i.usrOffs,l=r+i.usr2Offs,o=r+i.w0Offs,_=1<<18;if(s>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let d=8*e.length,f=await this.readRegister(h),u=await this.readRegister(l),c=1<<31;if(s>0&&(c|=268435456),d>0&&(c|=134217728),await this.setDataLengths(i,d,s),await this.writeRegister(h,c),await this.writeRegister(l,7<<28|t),0==d)await this.writeRegister(o,0);else{e.concat(new Array(e.length%4).fill(0));let t=Be("I".repeat(Math.floor(e.length/4)),e),s=o;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${a(e)} to register offset ${a(s)}`),await this.writeRegister(s,e),s+=4}await this.writeRegister(n,_),await this.waitDone(n,_);let g=await this.readRegister(o);return await this.writeRegister(h,f),await this.writeRegister(l,u),g}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,s=t>>16&255;this.logger.log(`FlashId: ${a(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${s.toString(16)}`),this.flashSize=i[s],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,s=Math.floor((e+a-1)/a),i=16-Math.floor(t/a)%16;return s<i&&(i=s),s<2*i?Math.floor((s+1)/2*a):(s-i)*a}async memBegin(t,e,a,s){return await this.checkCommand(5,Ae("<IIII",t,e,a,s))}async memBlock(t,e){return await this.checkCommand(7,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?y:500,a=Ae("<II",0==t?1:0,t);return await this.checkCommand(6,a,0,e)}async runStub(){const t=await S(this.chipFamily);let e,a=2048;this.logger.log("Uploading stub...");for(let e of["text","data"])if(Object.keys(t).includes(e)){let s=t[e+"_start"],i=t[e].length,r=Math.floor((i+a-1)/a);await this.memBegin(i,r,a,s);for(let s of Array(r).keys()){let r=s*a,n=r+a;n>i&&(n=i),await this.memBlock(t[e].slice(r,n),s)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const s=await this.readPacket(500);if(e=String.fromCharCode(...s),"OHAI"!=e)throw new Error("Failed to start stub. Unexpected response: "+e);this.logger.log("Stub is now running...");const i=new Ce(this.port,this.logger,this);return await i.detectFlashSize(),i}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(t=>{this._reader||t(void 0),this.addEventListener("disconnect",t,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class Ce extends Te{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,s,i){let r=await S(this.chipFamily),n=i,h=i+t;console.log(n,h),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&h>t)throw new Error("Software loader is resident at "+a(t,8)+"-"+a(e,8)+". Can't load binary at overlapping address range "+a(n,8)+"-"+a(h,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,b)}}const Le=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:r}),t.log("Connected successfully."),new Te(e,t)};export{l as CHIP_FAMILY_ESP32,d as CHIP_FAMILY_ESP32C2,f as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32C5,c as CHIP_FAMILY_ESP32C6,g as CHIP_FAMILY_ESP32C61,w as CHIP_FAMILY_ESP32H2,m as CHIP_FAMILY_ESP32P4,o as CHIP_FAMILY_ESP32S2,_ as CHIP_FAMILY_ESP32S3,h as CHIP_FAMILY_ESP8266,Te as ESPLoader,Le as connect};
1
+ const t=t=>{let e=[];for(let a=0;a<t.length;a++){let s=t.charCodeAt(a);s<=255&&e.push(s)}return e},e=t=>"["+t.map(t=>a(t)).join(", ")+"]",a=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},s=t=>new Promise(e=>setTimeout(e,t)),i={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},r=115200,n=t(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),h=33382,l=50,o=12882,_=12883,d=12994,f=12995,u=12997,c=12998,g=207969,m=12914,w=12928,p={4293968129:{name:"ESP8266",family:h},15736195:{name:"ESP32",family:l},1990:{name:"ESP32-S2",family:o},9:{name:"ESP32-S3",family:_},203546735:{name:"ESP32-C2",family:d},1867591791:{name:"ESP32-C2",family:d},2084675695:{name:"ESP32-C2",family:d},456216687:{name:"ESP32-C3",family:f},1130455151:{name:"ESP32-C3",family:f},1216438383:{name:"ESP32-C3",family:f},1763790959:{name:"ESP32-C3",family:f},285294703:{name:"ESP32-C5",family:u},1607549039:{name:"ESP32-C5",family:u},1548751960:{name:"ESP32-C5",family:u},1675706479:{name:"ESP32-C5",family:u},752910447:{name:"ESP32-C6",family:c},606167151:{name:"ESP32-C61",family:g},871374959:{name:"ESP32-C61",family:g},1333878895:{name:"ESP32-C61",family:g},1913741423:{name:"ESP32-C61",family:g},2548236392:{name:"ESP32-H2",family:m},3619110528:{name:"ESP32-H2",family:m},0:{name:"ESP32-P4",family:w},117676761:{name:"ESP32-P4",family:w},182303440:{name:"ESP32-P4",family:w}},y=3e3,b=6e5,v=(t,e)=>{let a=Math.floor(t*(e/486));return a<y?y:a},k=t=>{switch(t){case l:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case o:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case _:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case h:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case d:case f:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case u:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case c:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case g:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case m:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case w:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class z extends Error{constructor(t){super(t),this.name="SlipReadError"}}const S=async e=>{let a;return e==l?a=await import("./esp32-BNIFdu1P.js"):e==o?a=await import("./esp32s2-Bk4mqADi.js"):e==_?a=await import("./esp32s3-Df3OUCOC.js"):e==h?a=await import("./esp8266-CQFcqJ_a.js"):e==d?a=await import("./esp32c2-BqxquOKw.js"):e==f?a=await import("./esp32c3-BOOqe8me.js"):e==u?a=await import("./esp32c5-C8uE-s4t.js"):e==c?a=await import("./esp32c6-Cg5qYgg7.js"):e==g?a=await import("./esp32c61-CzCdsydk.js"):e==m?a=await import("./esp32h2-DZa_lpff.js"):e==w&&(a=await import("./esp32p4-DyGqUAeZ.js")),{...a,text:t(atob(a.text)),data:t(atob(a.data))}};function F(t){let e=t.length;for(;--e>=0;)t[e]=0}const U=256,D=286,O=30,x=15,R=new Uint8Array([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]),E=new Uint8Array([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]),I=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),B=new Array(576);F(B);const T=new Array(60);F(T);const C=new Array(512);F(C);const P=new Array(256);F(P);const L=new Array(29);F(L);const Z=new Array(O);function M(t,e,a,s,i){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=s,this.max_length=i,this.has_stree=t&&t.length}let N,$,H;function j(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}F(Z);const V=t=>t<256?C[t]:C[256+(t>>>7)],W=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},K=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},Y=(t,e,a)=>{K(t,a[2*e],a[2*e+1])},q=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},G=(t,e,a)=>{const s=new Array(16);let i,r,n=0;for(i=1;i<=x;i++)n=n+a[i-1]<<1,s[i]=n;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=q(s[e]++,e))}},X=t=>{let e;for(e=0;e<D;e++)t.dyn_ltree[2*e]=0;for(e=0;e<O;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},Q=t=>{t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},J=(t,e,a,s)=>{const i=2*e,r=2*a;return t[i]<t[r]||t[i]===t[r]&&s[e]<=s[a]},tt=(t,e,a)=>{const s=t.heap[a];let i=a<<1;for(;i<=t.heap_len&&(i<t.heap_len&&J(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!J(e,s,t.heap[i],t.depth));)t.heap[a]=t.heap[i],a=i,i<<=1;t.heap[a]=s},et=(t,e,a)=>{let s,i,r,n,h=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+h++],s+=(255&t.pending_buf[t.sym_buf+h++])<<8,i=t.pending_buf[t.sym_buf+h++],0===s?Y(t,i,e):(r=P[i],Y(t,r+U+1,e),n=R[r],0!==n&&(i-=L[r],K(t,i,n)),s--,r=V(s),Y(t,r,a),n=E[r],0!==n&&(s-=Z[r],K(t,s,n)))}while(h<t.sym_next);Y(t,256,e)},at=(t,e)=>{const a=e.dyn_tree,s=e.stat_desc.static_tree,i=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,h,l,o=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=o=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=o<2?++o:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=s[2*l+1]);for(e.max_code=o,n=t.heap_len>>1;n>=1;n--)tt(t,a,n);l=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tt(t,a,1),h=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=h,a[2*l]=a[2*n]+a[2*h],t.depth[l]=(t.depth[n]>=t.depth[h]?t.depth[n]:t.depth[h])+1,a[2*n+1]=a[2*h+1]=l,t.heap[1]=l++,tt(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,s=e.max_code,i=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,h=e.stat_desc.extra_base,l=e.stat_desc.max_length;let o,_,d,f,u,c,g=0;for(f=0;f<=x;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)_=t.heap[o],f=a[2*a[2*_+1]+1]+1,f>l&&(f=l,g++),a[2*_+1]=f,_>s||(t.bl_count[f]++,u=0,_>=h&&(u=n[_-h]),c=a[2*_],t.opt_len+=c*(f+u),r&&(t.static_len+=c*(i[2*_+1]+u)));if(0!==g){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(f=l;0!==f;f--)for(_=t.bl_count[f];0!==_;)d=t.heap[--o],d>s||(a[2*d+1]!==f&&(t.opt_len+=(f-a[2*d+1])*a[2*d],a[2*d+1]=f),_--)}})(t,e),G(a,o,t.bl_count)},st=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),e[2*(a+1)+1]=65535,s=0;s<=a;s++)i=n,n=e[2*(s+1)+1],++h<l&&i===n||(h<o?t.bl_tree[2*i]+=h:0!==i?(i!==r&&t.bl_tree[2*i]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4))},it=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),s=0;s<=a;s++)if(i=n,n=e[2*(s+1)+1],!(++h<l&&i===n)){if(h<o)do{Y(t,i,t.bl_tree)}while(0!==--h);else 0!==i?(i!==r&&(Y(t,i,t.bl_tree),h--),Y(t,16,t.bl_tree),K(t,h-3,2)):h<=10?(Y(t,17,t.bl_tree),K(t,h-3,3)):(Y(t,18,t.bl_tree),K(t,h-11,7));h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4)}};let rt=!1;const nt=(t,e,a,s)=>{K(t,0+(s?1:0),3),Q(t),W(t,a),W(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var ht=(t,e,a,s)=>{let i,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<U;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),at(t,t.l_desc),at(t,t.d_desc),n=(t=>{let e;for(st(t,t.dyn_ltree,t.l_desc.max_code),st(t,t.dyn_dtree,t.d_desc.max_code),at(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*A[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=i&&(i=r)):i=r=a+5,a+4<=i&&-1!==e?nt(t,e,a,s):4===t.strategy||r===i?(K(t,2+(s?1:0),3),et(t,B,T)):(K(t,4+(s?1:0),3),((t,e,a,s)=>{let i;for(K(t,e-257,5),K(t,a-1,5),K(t,s-4,4),i=0;i<s;i++)K(t,t.bl_tree[2*A[i]+1],3);it(t,t.dyn_ltree,e-1),it(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),et(t,t.dyn_ltree,t.dyn_dtree)),X(t),s&&Q(t)},lt={_tr_init:t=>{rt||((()=>{let t,e,a,s,i;const r=new Array(16);for(a=0,s=0;s<28;s++)for(L[s]=a,t=0;t<1<<R[s];t++)P[a++]=s;for(P[a-1]=s,i=0,s=0;s<16;s++)for(Z[s]=i,t=0;t<1<<E[s];t++)C[i++]=s;for(i>>=7;s<O;s++)for(Z[s]=i<<7,t=0;t<1<<E[s]-7;t++)C[256+i++]=s;for(e=0;e<=x;e++)r[e]=0;for(t=0;t<=143;)B[2*t+1]=8,t++,r[8]++;for(;t<=255;)B[2*t+1]=9,t++,r[9]++;for(;t<=279;)B[2*t+1]=7,t++,r[7]++;for(;t<=287;)B[2*t+1]=8,t++,r[8]++;for(G(B,287,r),t=0;t<O;t++)T[2*t+1]=5,T[2*t]=q(t,5);N=new M(B,R,257,D,x),$=new M(T,E,0,O,x),H=new M(new Array(0),I,0,19,7)})(),rt=!0),t.l_desc=new j(t.dyn_ltree,N),t.d_desc=new j(t.dyn_dtree,$),t.bl_desc=new j(t.bl_tree,H),t.bi_buf=0,t.bi_valid=0,X(t)},_tr_stored_block:nt,_tr_flush_block:ht,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(P[a]+U+1)]++,t.dyn_dtree[2*V(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{K(t,2,3),Y(t,256,B),(t=>{16===t.bi_valid?(W(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var ot=(t,e,a,s)=>{let i=65535&t,r=t>>>16&65535,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{i=i+e[s++]|0,r=r+i|0}while(--n);i%=65521,r%=65521}return i|r<<16};const _t=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var s=0;s<8;s++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var dt=(t,e,a,s)=>{const i=_t,r=s+a;t^=-1;for(let a=s;a<r;a++)t=t>>>8^i[255&(t^e[a])];return-1^t},ft={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ct,_tr_stored_block:gt,_tr_flush_block:mt,_tr_tally:wt,_tr_align:pt}=lt,{Z_NO_FLUSH:yt,Z_PARTIAL_FLUSH:bt,Z_FULL_FLUSH:vt,Z_FINISH:kt,Z_BLOCK:zt,Z_OK:St,Z_STREAM_END:Ft,Z_STREAM_ERROR:Ut,Z_DATA_ERROR:Dt,Z_BUF_ERROR:Ot,Z_DEFAULT_COMPRESSION:xt,Z_FILTERED:Rt,Z_HUFFMAN_ONLY:Et,Z_RLE:It,Z_FIXED:At,Z_DEFAULT_STRATEGY:Bt,Z_UNKNOWN:Tt,Z_DEFLATED:Ct}=ut,Pt=258,Lt=262,Zt=42,Mt=113,Nt=666,$t=(t,e)=>(t.msg=ft[e],e),Ht=t=>2*t-(t>4?9:0),jt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Vt=t=>{let e,a,s,i=t.w_size;e=t.hash_size,s=e;do{a=t.head[--s],t.head[s]=a>=i?a-i:0}while(--e);e=i,s=e;do{a=t.prev[--s],t.prev[s]=a>=i?a-i:0}while(--e)};let Wt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Kt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Yt=(t,e)=>{mt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Kt(t.strm)},qt=(t,e)=>{t.pending_buf[t.pending++]=e},Gt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Xt=(t,e,a,s)=>{let i=t.avail_in;return i>s&&(i=s),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),a),1===t.state.wrap?t.adler=ot(t.adler,e,i,a):2===t.state.wrap&&(t.adler=dt(t.adler,e,i,a)),t.next_in+=i,t.total_in+=i,i)},Qt=(t,e)=>{let a,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match;const l=t.strstart>t.w_size-Lt?t.strstart-(t.w_size-Lt):0,o=t.window,_=t.w_mask,d=t.prev,f=t.strstart+Pt;let u=o[r+n-1],c=o[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(a=e,o[a+n]===c&&o[a+n-1]===u&&o[a]===o[r]&&o[++a]===o[r+1]){r+=2,a++;do{}while(o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&r<f);if(s=Pt-(f-r),r=f-Pt,s>n){if(t.match_start=e,n=s,s>=h)break;u=o[r+n-1],c=o[r+n]}}}while((e=d[e&_])>l&&0!==--i);return n<=t.lookahead?n:t.lookahead},Jt=t=>{const e=t.w_size;let a,s,i;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Lt)&&(t.window.set(t.window.subarray(e,e+e-s),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Vt(t),s+=e),0===t.strm.avail_in)break;if(a=Xt(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Wt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Wt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<Lt&&0!==t.strm.avail_in)},te=(t,e)=>{let a,s,i,r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n=0,h=t.strm.avail_in;do{if(a=65535,i=t.bi_valid+42>>3,t.strm.avail_out<i)break;if(i=t.strm.avail_out-i,s=t.strstart-t.block_start,a>s+t.strm.avail_in&&(a=s+t.strm.avail_in),a>i&&(a=i),a<r&&(0===a&&e!==kt||e===yt||a!==s+t.strm.avail_in))break;n=e===kt&&a===s+t.strm.avail_in?1:0,gt(t,0,0,n),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,Kt(t.strm),s&&(s>a&&(s=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+s),t.strm.next_out),t.strm.next_out+=s,t.strm.avail_out-=s,t.strm.total_out+=s,t.block_start+=s,a-=s),a&&(Xt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===n);return h-=t.strm.avail_in,h&&(h>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=h&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-h,t.strm.next_in),t.strstart),t.strstart+=h,t.insert+=h>t.w_size-t.insert?t.w_size-t.insert:h),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),n?4:e!==yt&&e!==kt&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(i=t.window_size-t.strstart,t.strm.avail_in>i&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,i+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),i>t.strm.avail_in&&(i=t.strm.avail_in),i&&(Xt(t.strm,t.window,t.strstart,i),t.strstart+=i,t.insert+=i>t.w_size-t.insert?t.w_size-t.insert:i),t.high_water<t.strstart&&(t.high_water=t.strstart),i=t.bi_valid+42>>3,i=t.pending_buf_size-i>65535?65535:t.pending_buf_size-i,r=i>t.w_size?t.w_size:i,s=t.strstart-t.block_start,(s>=r||(s||e===kt)&&e!==yt&&0===t.strm.avail_in&&s<=i)&&(a=s>i?i:s,n=e===kt&&0===t.strm.avail_in&&a===s?1:0,gt(t,t.block_start,a,n),t.block_start+=a,Kt(t.strm)),n?3:1)},ee=(t,e)=>{let a,s;for(;;){if(t.lookahead<Lt){if(Jt(t),t.lookahead<Lt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-Lt&&(t.match_length=Qt(t,a)),t.match_length>=3)if(s=wt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+1]);else s=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(s&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2},ae=(t,e)=>{let a,s,i;for(;;){if(t.lookahead<Lt){if(Jt(t),t.lookahead<Lt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-Lt&&(t.match_length=Qt(t,a),t.match_length<=5&&(t.strategy===Rt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,s=wt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,s&&(Yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(s=wt(t,0,t.window[t.strstart-1]),s&&Yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(s=wt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2};function se(t,e,a,s,i){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=s,this.func=i}const ie=[new se(0,0,0,0,te),new se(4,4,8,4,ee),new se(4,5,16,8,ee),new se(4,6,32,32,ee),new se(4,4,16,16,ae),new se(8,16,32,32,ae),new se(8,16,128,128,ae),new se(8,32,128,256,ae),new se(32,128,258,1024,ae),new se(32,258,258,4096,ae)];function re(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ct,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),jt(this.dyn_ltree),jt(this.dyn_dtree),jt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),jt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),jt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ne=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==Zt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Mt&&e.status!==Nt?1:0},he=t=>{if(ne(t))return $t(t,Ut);t.total_in=t.total_out=0,t.data_type=Tt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Zt:Mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,ct(e),St},le=t=>{const e=he(t);var a;return e===St&&((a=t.state).window_size=2*a.w_size,jt(a.head),a.max_lazy_match=ie[a.level].max_lazy,a.good_match=ie[a.level].good_length,a.nice_match=ie[a.level].nice_length,a.max_chain_length=ie[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},oe=(t,e,a,s,i,r)=>{if(!t)return Ut;let n=1;if(e===xt&&(e=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),i<1||i>9||a!==Ct||s<8||s>15||e<0||e>9||r<0||r>At||8===s&&1!==n)return $t(t,Ut);8===s&&(s=9);const h=new re;return t.state=h,h.strm=t,h.status=Zt,h.wrap=n,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=i+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<i+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.sym_buf=h.lit_bufsize,h.sym_end=3*(h.lit_bufsize-1),h.level=e,h.strategy=r,h.method=a,le(t)};var _e={deflateInit:(t,e)=>oe(t,e,Ct,15,8,Bt),deflateInit2:oe,deflateReset:le,deflateResetKeep:he,deflateSetHeader:(t,e)=>ne(t)||2!==t.state.wrap?Ut:(t.state.gzhead=e,St),deflate:(t,e)=>{if(ne(t)||e>zt||e<0)return t?$t(t,Ut):Ut;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===Nt&&e!==kt)return $t(t,0===t.avail_out?Ot:Ut);const s=a.last_flush;if(a.last_flush=e,0!==a.pending){if(Kt(t),0===t.avail_out)return a.last_flush=-1,St}else if(0===t.avail_in&&Ht(e)<=Ht(s)&&e!==kt)return $t(t,Ot);if(a.status===Nt&&0!==t.avail_in)return $t(t,Ot);if(a.status===Zt&&0===a.wrap&&(a.status=Mt),a.status===Zt){let e=Ct+(a.w_bits-8<<4)<<8,s=-1;if(s=a.strategy>=Et||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=s<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Gt(a,e),0!==a.strstart&&(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),t.adler=1,a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(57===a.status)if(t.adler=0,qt(a,31),qt(a,139),qt(a,8),a.gzhead)qt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),qt(a,255&a.gzhead.time),qt(a,a.gzhead.time>>8&255),qt(a,a.gzhead.time>>16&255),qt(a,a.gzhead.time>>24&255),qt(a,9===a.level?2:a.strategy>=Et||a.level<2?4:0),qt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(qt(a,255&a.gzhead.extra.length),qt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=dt(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,9===a.level?2:a.strategy>=Et||a.level<2?4:0),qt(a,3),a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St;if(69===a.status){if(a.gzhead.extra){let e=a.pending,s=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+s>a.pending_buf_size;){let i=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=i,Kt(t),0!==a.pending)return a.last_flush=-1,St;e=0,s-=i}let i=new Uint8Array(a.gzhead.extra);a.pending_buf.set(i.subarray(a.gzindex,a.gzindex+s),a.pending),a.pending+=s,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(Kt(t),0!==a.pending))return a.last_flush=-1,St;qt(a,255&t.adler),qt(a,t.adler>>8&255),t.adler=0}if(a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(0!==t.avail_in||0!==a.lookahead||e!==yt&&a.status!==Nt){let s=0===a.level?te(a,e):a.strategy===Et?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Jt(t),0===t.lookahead)){if(e===yt)return 1;break}if(t.match_length=0,a=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===It?((t,e)=>{let a,s,i,r;const n=t.window;for(;;){if(t.lookahead<=Pt){if(Jt(t),t.lookahead<=Pt&&e===yt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,s=n[i],s===n[++i]&&s===n[++i]&&s===n[++i])){r=t.strstart+Pt;do{}while(s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&i<r);t.match_length=Pt-(r-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=wt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):ie[a.level].func(a,e);if(3!==s&&4!==s||(a.status=Nt),1===s||3===s)return 0===t.avail_out&&(a.last_flush=-1),St;if(2===s&&(e===bt?pt(a):e!==zt&&(gt(a,0,0,!1),e===vt&&(jt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),Kt(t),0===t.avail_out))return a.last_flush=-1,St}return e!==kt?St:a.wrap<=0?Ft:(2===a.wrap?(qt(a,255&t.adler),qt(a,t.adler>>8&255),qt(a,t.adler>>16&255),qt(a,t.adler>>24&255),qt(a,255&t.total_in),qt(a,t.total_in>>8&255),qt(a,t.total_in>>16&255),qt(a,t.total_in>>24&255)):(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),Kt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?St:Ft)},deflateEnd:t=>{if(ne(t))return Ut;const e=t.state.status;return t.state=null,e===Mt?$t(t,Dt):St},deflateSetDictionary:(t,e)=>{let a=e.length;if(ne(t))return Ut;const s=t.state,i=s.wrap;if(2===i||1===i&&s.status!==Zt||s.lookahead)return Ut;if(1===i&&(t.adler=ot(t.adler,e,a,0)),s.wrap=0,a>=s.w_size){0===i&&(jt(s.head),s.strstart=0,s.block_start=0,s.insert=0);let t=new Uint8Array(s.w_size);t.set(e.subarray(a-s.w_size,a),0),e=t,a=s.w_size}const r=t.avail_in,n=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Jt(s);s.lookahead>=3;){let t=s.strstart,e=s.lookahead-2;do{s.ins_h=Wt(s,s.ins_h,s.window[t+3-1]),s.prev[t&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=t,t++}while(--e);s.strstart=t,s.lookahead=2,Jt(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,t.next_in=n,t.input=h,t.avail_in=r,s.wrap=i,St},deflateInfo:"pako deflate (from Nodeca project)"};const de=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var fe=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)de(a,e)&&(t[e]=a[e])}}return t},ue=t=>{let e=0;for(let a=0,s=t.length;a<s;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,s=0,i=t.length;e<i;e++){let i=t[e];a.set(i,s),s+=i.length}return a};let ce=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){ce=!1}const ge=new Uint8Array(256);for(let t=0;t<256;t++)ge[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ge[254]=ge[254]=1;var me=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,s,i,r,n=t.length,h=0;for(i=0;i<n;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),r=0,i=0;r<h;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e};var we=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const pe=Object.prototype.toString,{Z_NO_FLUSH:ye,Z_SYNC_FLUSH:be,Z_FULL_FLUSH:ve,Z_FINISH:ke,Z_OK:ze,Z_STREAM_END:Se,Z_DEFAULT_COMPRESSION:Fe,Z_DEFAULT_STRATEGY:Ue,Z_DEFLATED:De}=ut;function Oe(t){this.options=fe({level:Fe,method:De,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ue},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new we,this.strm.avail_out=0;let a=_e.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ze)throw new Error(ft[a]);if(e.header&&_e.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?me(e.dictionary):"[object ArrayBuffer]"===pe.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=_e.deflateSetDictionary(this.strm,t),a!==ze)throw new Error(ft[a]);this._dict_set=!0}}Oe.prototype.push=function(t,e){const a=this.strm,s=this.options.chunkSize;let i,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?ke:ye,"string"==typeof t?a.input=me(t):"[object ArrayBuffer]"===pe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(s),a.next_out=0,a.avail_out=s),(r===be||r===ve)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(i=_e.deflate(a,r),i===Se)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),i=_e.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ze;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Oe.prototype.onData=function(t){this.chunks.push(t)},Oe.prototype.onEnd=function(t){t===ze&&(this.result=ue(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var xe={deflate:function(t,e){const a=new Oe(e);if(a.push(t,!0),a.err)throw a.msg||ft[a.err];return a.result}};const{deflate:Re}=xe;var Ee=Re;const Ie={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},Ae=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw"Pack format to Argument count mismatch";let s=[],i=!0;for(let s=0;s<t.length;s++)"<"==t[s]?i=!0:">"==t[s]?i=!1:(r(t[s],e[a]),a++);function r(t,e){if(!(t in Ie))throw"Unhandled character '"+t+"' in pack format";let a=Ie[t].bytes,r=new DataView(new ArrayBuffer(a));Ie[t].p.bind(r)(0,e,i);for(let t=0;t<a;t++)s.push(r.getUint8(t))}return s},Be=(t,e)=>{let a=0,s=[],i=!0;for(let e of t)"<"==e?i=!0:">"==e?i=!1:r(e);function r(t){if(!(t in Ie))throw"Unhandled character '"+t+"' in unpack format";let r=Ie[t].bytes,n=new DataView(new ArrayBuffer(r));for(let t=0;t<r;t++)n.setUint8(t,255&e[a+t]);let h=Ie[t].u.bind(n);s.push(h(0,i)),a+=r}return s};class Te extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t=await this.readRegister(1073745920),e=p[t>>>0];if(void 0===e)throw new Error(`Unknown Chip: Hex: ${a(t>>>0,8).toLowerCase()} Number: ${t}`);this.chipName=e.name,this.chipFamily=e.family;let s=k(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(s+4*t);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(t=100){return new Promise(e=>setTimeout(e,t))}async setRTS(t){await this.port.setSignals({requestToSend:t}),await this.setDTR(this.state_DTR)}async setDTR(t){this.state_DTR=t,await this.port.setSignals({dataTerminalReady:t})}async hardReset(t=!1){this.logger.log("Try hard reset."),t?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(t=>setTimeout(t,1e3))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],s=this._efuses[1],i=this._efuses[2],r=this._efuses[3];if(this.chipFamily==h){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(s>>16&255){if(1!=(s>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}else t=[24,254,52];e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=s>>8&255,e[4]=255&s,e[5]=a>>24&255}else if(this.chipFamily==l)e[0]=i>>8&255,e[1]=255&i,e[2]=s>>24&255,e[3]=s>>16&255,e[4]=s>>8&255,e[5]=255&s;else{if(this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=m&&this.chipFamily!=w)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=a>>24&255,e[3]=a>>16&255,e[4]=a>>8&255,e[5]=255&a}return e}async readRegister(t){this.debug&&this.logger.debug("Reading from Register "+a(t,8));let e=Ae("<I",t);await this.sendCommand(10,e);let[s,i]=await this.getResponse(10);return s}async checkCommand(t,e,s=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,s);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let p=0;if(this.IS_STUB||this.chipFamily==h?p=2:[l,o,_,d,f,u,c,g,m,w].includes(this.chipFamily)?p=4:[2,4].includes(n.length)&&(p=n.length),n.length<p)throw new Error("Didn't get enough status bytes");let y=n.slice(-p,n.length);if(n=n.slice(0,-p),this.debug&&(this.logger.debug("status",y),this.logger.debug("value",r),this.logger.debug("data",n)),1==y[0])throw 5==y[1]?new Error("Invalid (unsupported) command "+a(t)):new Error("Command failure error code "+a(y[1]));return[r,n]}async sendCommand(t,e,a=0){let s=(t=>{let e=[192];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e.push(192),e})([...Ae("<BBHI",0,t,e.length,a),...e]);this.debug&&this.logger.debug(`Writing ${s.length} byte${1==s.length?"":"s"}:`,s),await this.writeToStream(s)}async readPacket(t){let i=null,r=!1,n=[];for(;;){let h=Date.now();for(n=[];Date.now()-h<t;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await s(10)}if(0==n.length){throw new z("Timed out waiting for packet "+(null===i?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+e(n));for(let t of n)if(null===i){if(192!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid head of packet ("+a(t)+")");i=[]}else if(r)if(r=!1,220==t)i.push(192);else{if(221!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid SLIP escape (0xdb, "+a(t)+")");i.push(219)}else if(219==t)r=!0;else{if(192==t)return this.debug&&this.logger.debug("Received full packet: "+e(i)),i;i.push(t)}}throw new z("Invalid state")}async getResponse(t,e=3e3){for(let s=0;s<100;s++){const s=await this.readPacket(e);if(s.length<8)continue;const[i,r,n,h]=Be("<BBHI",s.slice(0,8));if(1!=i)continue;const l=s.slice(8);if(null==t||r==t)return[h,l];if(0!=l[0]&&5==l[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${a(t)}`)}throw"Response doesn't match request"}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==h)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=Ae("<II",t,this.IS_STUB?r:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e;try{await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),await this.port.close(),await this.port.open({baudRate:t}),this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(this._inputBuffer.length=0,await this._sync())return await s(100),!0;await s(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,n);for(let t=0;t<8;t++)try{let[t,e]=await this.getResponse(8,100);if(e.length>1&&0==e[0]&&0==e[1])return!0}catch(t){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,s=0,i=!1){if(t.byteLength>=8){var r=Array.from(new Uint8Array(t,0,4));let e=r[0],s=r[2],i=r[3];this.logger.log(`Image header, Magic=${a(e)}, FlashMode=${a(s)}, FlashSizeFreq=${a(i)}`)}let n,h=t.byteLength,l=0,o=y;i?(n=Ee(new Uint8Array(t),{level:9}).buffer,l=n.byteLength,this.logger.log(`Writing data with filesize: ${h}. Compressed Size: ${l}`),o=await this.flashDeflBegin(h,l,s)):(this.logger.log(`Writing data with filesize: ${h}`),n=t,await this.flashBegin(h,s));let _=[],d=0,f=0,u=0,c=Date.now(),g=this.getFlashWriteSize(),m=i?l:h;for(;m-u>0;)this.debug&&this.logger.log(`Writing at ${a(s+d*g,8)} `),m-u>=g?_=Array.from(new Uint8Array(n,u,g)):(_=Array.from(new Uint8Array(n,u,m-u)),i||(_=_.concat(new Array(g-_.length).fill(255)))),i?await this.flashDeflBlock(_,d,o):await this.flashBlock(_,d),d+=1,f+=i?Math.round(_.length*h/l):_.length,u+=g,e(Math.min(f,h),h);this.logger.log("Took "+(Date.now()-c)+"ms to write "+m+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,a=3e3){await this.checkCommand(3,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashDeflBlock(t,e,a=3e3){await this.checkCommand(17,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashBegin(t=0,e=0,s=!1){let i,r,n=this.getFlashWriteSize();!this.IS_STUB&&[l,o,_,d,f,u,c,g,m,w].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let p,b=Math.floor((t+n-1)/n);i=this.chipFamily==h?this.getEraseSize(e,t):t,p=this.IS_STUB?y:v(3e4,t);let k=Date.now();return r=Ae("<IIII",i,b,n,e),this.chipFamily!=l&&this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=m&&this.chipFamily!=w||(r=r.concat(Ae("<I",s?1:0))),this.logger.log("Erase size "+i+", blocks "+b+", block size "+a(n,4)+", offset "+a(e,4)+", encrypted "+(s?"yes":"no")),await this.checkCommand(2,r,0,p),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-k)+"ms to erase "+b+" bytes"),b}async flashDeflBegin(t=0,e=0,a=0,s=!1){let i,r=this.getFlashWriteSize(),n=Math.floor((e+r-1)/r),h=Math.floor((t+r-1)/r),l=0,o=0;return this.IS_STUB?(l=t,o=v(3e4,l)):(l=h*r,o=y),i=Ae("<IIII",l,n,r,a),await this.checkCommand(16,i,0,o),o}async flashFinish(){let t=Ae("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=Ae("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){return k(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,a=4294967295,s=0,i=0){let r=Ae("<IIII",t,e,a,s);i>0&&r.concat(Ae("<IIII",k(this.getChipFamily()).uartDateReg,0,0,i)),await this.checkCommand(9,r)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let s=t.regBase+t.mosiDlenOffs,i=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(s,e-1),a>0&&await this.writeRegister(i,a-1)}else{let s=t.regBase+t.usr1Offs,i=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(s,i)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,s=0){let i=k(this.getChipFamily()),r=i.regBase,n=r,h=r+i.usrOffs,l=r+i.usr2Offs,o=r+i.w0Offs,_=1<<18;if(s>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let d=8*e.length,f=await this.readRegister(h),u=await this.readRegister(l),c=1<<31;if(s>0&&(c|=268435456),d>0&&(c|=134217728),await this.setDataLengths(i,d,s),await this.writeRegister(h,c),await this.writeRegister(l,7<<28|t),0==d)await this.writeRegister(o,0);else{e.concat(new Array(e.length%4).fill(0));let t=Be("I".repeat(Math.floor(e.length/4)),e),s=o;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${a(e)} to register offset ${a(s)}`),await this.writeRegister(s,e),s+=4}await this.writeRegister(n,_),await this.waitDone(n,_);let g=await this.readRegister(o);return await this.writeRegister(h,f),await this.writeRegister(l,u),g}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,s=t>>16&255;this.logger.log(`FlashId: ${a(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${s.toString(16)}`),this.flashSize=i[s],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,s=Math.floor((e+a-1)/a),i=16-Math.floor(t/a)%16;return s<i&&(i=s),s<2*i?Math.floor((s+1)/2*a):(s-i)*a}async memBegin(t,e,a,s){return await this.checkCommand(5,Ae("<IIII",t,e,a,s))}async memBlock(t,e){return await this.checkCommand(7,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?y:500,a=Ae("<II",0==t?1:0,t);return await this.checkCommand(6,a,0,e)}async runStub(){const t=await S(this.chipFamily);let e,a=2048;this.logger.log("Uploading stub...");for(let e of["text","data"])if(Object.keys(t).includes(e)){let s=t[e+"_start"],i=t[e].length,r=Math.floor((i+a-1)/a);await this.memBegin(i,r,a,s);for(let s of Array(r).keys()){let r=s*a,n=r+a;n>i&&(n=i),await this.memBlock(t[e].slice(r,n),s)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const s=await this.readPacket(500);if(e=String.fromCharCode(...s),"OHAI"!=e)throw new Error("Failed to start stub. Unexpected response: "+e);this.logger.log("Stub is now running...");const i=new Ce(this.port,this.logger,this);return await i.detectFlashSize(),i}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(t=>{this._reader||t(void 0),this.addEventListener("disconnect",t,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class Ce extends Te{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,s,i){let r=await S(this.chipFamily),n=i,h=i+t;console.log(n,h),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&h>t)throw new Error("Software loader is resident at "+a(t,8)+"-"+a(e,8)+". Can't load binary at overlapping address range "+a(n,8)+"-"+a(h,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,b)}}const Pe=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:r}),t.log("Connected successfully."),new Te(e,t)};export{l as CHIP_FAMILY_ESP32,d as CHIP_FAMILY_ESP32C2,f as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32C5,c as CHIP_FAMILY_ESP32C6,g as CHIP_FAMILY_ESP32C61,m as CHIP_FAMILY_ESP32H2,w as CHIP_FAMILY_ESP32P4,o as CHIP_FAMILY_ESP32S2,_ as CHIP_FAMILY_ESP32S3,h as CHIP_FAMILY_ESP8266,Te as ESPLoader,Pe as connect};
@@ -1 +1 @@
1
- const t=t=>{let e=[];for(let a=0;a<t.length;a++){let s=t.charCodeAt(a);s<=255&&e.push(s)}return e},e=t=>"["+t.map(t=>a(t)).join(", ")+"]",a=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},s=t=>new Promise(e=>setTimeout(e,t)),i={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},r=115200,n=t(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),h=33382,l=50,o=12882,_=12883,d=12994,f=12995,u=12997,c=12998,g=207969,w=12914,m=12928,p={4293968129:{name:"ESP8266",family:h},15736195:{name:"ESP32",family:l},1990:{name:"ESP32-S2",family:o},9:{name:"ESP32-S3",family:_},1867591791:{name:"ESP32-C2",family:d},2084675695:{name:"ESP32-C2",family:d},203546735:{name:"ESP32-C2",family:d},1763790959:{name:"ESP32-C3",family:f},456216687:{name:"ESP32-C3",family:f},1216438383:{name:"ESP32-C3",family:f},1130455151:{name:"ESP32-C3",family:f},1607549039:{name:"ESP32-C5",family:u},285294703:{name:"ESP32-C5",family:u},1675706479:{name:"ESP32-C5",family:u},1548751960:{name:"ESP32-C5",family:u},3619110528:{name:"ESP32-H2",family:w},752910447:{name:"ESP32-C6",family:c},1913741423:{name:"ESP32-C61",family:g},182303440:{name:"ESP32-P4",family:m},117676761:{name:"ESP32-P4",family:m},0:{name:"ESP32-P4",family:m}},y=3e3,b=6e5,v=(t,e)=>{let a=Math.floor(t*(e/486));return a<y?y:a},k=t=>{switch(t){case l:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case o:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case _:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case h:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case d:case f:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case u:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case c:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case g:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case w:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case m:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class z extends Error{constructor(t){super(t),this.name="SlipReadError"}}const S=async e=>{let a;return e==l?a=await import("./esp32-BNIFdu1P.js"):e==o?a=await import("./esp32s2-Bk4mqADi.js"):e==_?a=await import("./esp32s3-Df3OUCOC.js"):e==h?a=await import("./esp8266-CQFcqJ_a.js"):e==d?a=await import("./esp32c2-BqxquOKw.js"):e==f?a=await import("./esp32c3-BOOqe8me.js"):e==u?a=await import("./esp32c5-C8uE-s4t.js"):e==c?a=await import("./esp32c6-Cg5qYgg7.js"):e==g?a=await import("./esp32c61-CzCdsydk.js"):e==w?a=await import("./esp32h2-DZa_lpff.js"):e==m&&(a=await import("./esp32p4-DyGqUAeZ.js")),{...a,text:t(atob(a.text)),data:t(atob(a.data))}};function F(t){let e=t.length;for(;--e>=0;)t[e]=0}const U=256,D=286,O=30,x=15,R=new Uint8Array([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]),I=new Uint8Array([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]),E=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),B=new Array(576);F(B);const T=new Array(60);F(T);const C=new Array(512);F(C);const L=new Array(256);F(L);const P=new Array(29);F(P);const Z=new Array(O);function M(t,e,a,s,i){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=s,this.max_length=i,this.has_stree=t&&t.length}let N,$,H;function j(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}F(Z);const V=t=>t<256?C[t]:C[256+(t>>>7)],W=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},K=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},Y=(t,e,a)=>{K(t,a[2*e],a[2*e+1])},q=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},G=(t,e,a)=>{const s=new Array(16);let i,r,n=0;for(i=1;i<=x;i++)n=n+a[i-1]<<1,s[i]=n;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=q(s[e]++,e))}},X=t=>{let e;for(e=0;e<D;e++)t.dyn_ltree[2*e]=0;for(e=0;e<O;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},Q=t=>{t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},J=(t,e,a,s)=>{const i=2*e,r=2*a;return t[i]<t[r]||t[i]===t[r]&&s[e]<=s[a]},tt=(t,e,a)=>{const s=t.heap[a];let i=a<<1;for(;i<=t.heap_len&&(i<t.heap_len&&J(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!J(e,s,t.heap[i],t.depth));)t.heap[a]=t.heap[i],a=i,i<<=1;t.heap[a]=s},et=(t,e,a)=>{let s,i,r,n,h=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+h++],s+=(255&t.pending_buf[t.sym_buf+h++])<<8,i=t.pending_buf[t.sym_buf+h++],0===s?Y(t,i,e):(r=L[i],Y(t,r+U+1,e),n=R[r],0!==n&&(i-=P[r],K(t,i,n)),s--,r=V(s),Y(t,r,a),n=I[r],0!==n&&(s-=Z[r],K(t,s,n)))}while(h<t.sym_next);Y(t,256,e)},at=(t,e)=>{const a=e.dyn_tree,s=e.stat_desc.static_tree,i=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,h,l,o=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=o=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=o<2?++o:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=s[2*l+1]);for(e.max_code=o,n=t.heap_len>>1;n>=1;n--)tt(t,a,n);l=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tt(t,a,1),h=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=h,a[2*l]=a[2*n]+a[2*h],t.depth[l]=(t.depth[n]>=t.depth[h]?t.depth[n]:t.depth[h])+1,a[2*n+1]=a[2*h+1]=l,t.heap[1]=l++,tt(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,s=e.max_code,i=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,h=e.stat_desc.extra_base,l=e.stat_desc.max_length;let o,_,d,f,u,c,g=0;for(f=0;f<=x;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)_=t.heap[o],f=a[2*a[2*_+1]+1]+1,f>l&&(f=l,g++),a[2*_+1]=f,_>s||(t.bl_count[f]++,u=0,_>=h&&(u=n[_-h]),c=a[2*_],t.opt_len+=c*(f+u),r&&(t.static_len+=c*(i[2*_+1]+u)));if(0!==g){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(f=l;0!==f;f--)for(_=t.bl_count[f];0!==_;)d=t.heap[--o],d>s||(a[2*d+1]!==f&&(t.opt_len+=(f-a[2*d+1])*a[2*d],a[2*d+1]=f),_--)}})(t,e),G(a,o,t.bl_count)},st=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),e[2*(a+1)+1]=65535,s=0;s<=a;s++)i=n,n=e[2*(s+1)+1],++h<l&&i===n||(h<o?t.bl_tree[2*i]+=h:0!==i?(i!==r&&t.bl_tree[2*i]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4))},it=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),s=0;s<=a;s++)if(i=n,n=e[2*(s+1)+1],!(++h<l&&i===n)){if(h<o)do{Y(t,i,t.bl_tree)}while(0!==--h);else 0!==i?(i!==r&&(Y(t,i,t.bl_tree),h--),Y(t,16,t.bl_tree),K(t,h-3,2)):h<=10?(Y(t,17,t.bl_tree),K(t,h-3,3)):(Y(t,18,t.bl_tree),K(t,h-11,7));h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4)}};let rt=!1;const nt=(t,e,a,s)=>{K(t,0+(s?1:0),3),Q(t),W(t,a),W(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var ht=(t,e,a,s)=>{let i,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<U;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),at(t,t.l_desc),at(t,t.d_desc),n=(t=>{let e;for(st(t,t.dyn_ltree,t.l_desc.max_code),st(t,t.dyn_dtree,t.d_desc.max_code),at(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*A[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=i&&(i=r)):i=r=a+5,a+4<=i&&-1!==e?nt(t,e,a,s):4===t.strategy||r===i?(K(t,2+(s?1:0),3),et(t,B,T)):(K(t,4+(s?1:0),3),((t,e,a,s)=>{let i;for(K(t,e-257,5),K(t,a-1,5),K(t,s-4,4),i=0;i<s;i++)K(t,t.bl_tree[2*A[i]+1],3);it(t,t.dyn_ltree,e-1),it(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),et(t,t.dyn_ltree,t.dyn_dtree)),X(t),s&&Q(t)},lt={_tr_init:t=>{rt||((()=>{let t,e,a,s,i;const r=new Array(16);for(a=0,s=0;s<28;s++)for(P[s]=a,t=0;t<1<<R[s];t++)L[a++]=s;for(L[a-1]=s,i=0,s=0;s<16;s++)for(Z[s]=i,t=0;t<1<<I[s];t++)C[i++]=s;for(i>>=7;s<O;s++)for(Z[s]=i<<7,t=0;t<1<<I[s]-7;t++)C[256+i++]=s;for(e=0;e<=x;e++)r[e]=0;for(t=0;t<=143;)B[2*t+1]=8,t++,r[8]++;for(;t<=255;)B[2*t+1]=9,t++,r[9]++;for(;t<=279;)B[2*t+1]=7,t++,r[7]++;for(;t<=287;)B[2*t+1]=8,t++,r[8]++;for(G(B,287,r),t=0;t<O;t++)T[2*t+1]=5,T[2*t]=q(t,5);N=new M(B,R,257,D,x),$=new M(T,I,0,O,x),H=new M(new Array(0),E,0,19,7)})(),rt=!0),t.l_desc=new j(t.dyn_ltree,N),t.d_desc=new j(t.dyn_dtree,$),t.bl_desc=new j(t.bl_tree,H),t.bi_buf=0,t.bi_valid=0,X(t)},_tr_stored_block:nt,_tr_flush_block:ht,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(L[a]+U+1)]++,t.dyn_dtree[2*V(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{K(t,2,3),Y(t,256,B),(t=>{16===t.bi_valid?(W(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var ot=(t,e,a,s)=>{let i=65535&t,r=t>>>16&65535,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{i=i+e[s++]|0,r=r+i|0}while(--n);i%=65521,r%=65521}return i|r<<16};const _t=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var s=0;s<8;s++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var dt=(t,e,a,s)=>{const i=_t,r=s+a;t^=-1;for(let a=s;a<r;a++)t=t>>>8^i[255&(t^e[a])];return-1^t},ft={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ct,_tr_stored_block:gt,_tr_flush_block:wt,_tr_tally:mt,_tr_align:pt}=lt,{Z_NO_FLUSH:yt,Z_PARTIAL_FLUSH:bt,Z_FULL_FLUSH:vt,Z_FINISH:kt,Z_BLOCK:zt,Z_OK:St,Z_STREAM_END:Ft,Z_STREAM_ERROR:Ut,Z_DATA_ERROR:Dt,Z_BUF_ERROR:Ot,Z_DEFAULT_COMPRESSION:xt,Z_FILTERED:Rt,Z_HUFFMAN_ONLY:It,Z_RLE:Et,Z_FIXED:At,Z_DEFAULT_STRATEGY:Bt,Z_UNKNOWN:Tt,Z_DEFLATED:Ct}=ut,Lt=258,Pt=262,Zt=42,Mt=113,Nt=666,$t=(t,e)=>(t.msg=ft[e],e),Ht=t=>2*t-(t>4?9:0),jt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Vt=t=>{let e,a,s,i=t.w_size;e=t.hash_size,s=e;do{a=t.head[--s],t.head[s]=a>=i?a-i:0}while(--e);e=i,s=e;do{a=t.prev[--s],t.prev[s]=a>=i?a-i:0}while(--e)};let Wt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Kt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Yt=(t,e)=>{wt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Kt(t.strm)},qt=(t,e)=>{t.pending_buf[t.pending++]=e},Gt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Xt=(t,e,a,s)=>{let i=t.avail_in;return i>s&&(i=s),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),a),1===t.state.wrap?t.adler=ot(t.adler,e,i,a):2===t.state.wrap&&(t.adler=dt(t.adler,e,i,a)),t.next_in+=i,t.total_in+=i,i)},Qt=(t,e)=>{let a,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match;const l=t.strstart>t.w_size-Pt?t.strstart-(t.w_size-Pt):0,o=t.window,_=t.w_mask,d=t.prev,f=t.strstart+Lt;let u=o[r+n-1],c=o[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(a=e,o[a+n]===c&&o[a+n-1]===u&&o[a]===o[r]&&o[++a]===o[r+1]){r+=2,a++;do{}while(o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&r<f);if(s=Lt-(f-r),r=f-Lt,s>n){if(t.match_start=e,n=s,s>=h)break;u=o[r+n-1],c=o[r+n]}}}while((e=d[e&_])>l&&0!==--i);return n<=t.lookahead?n:t.lookahead},Jt=t=>{const e=t.w_size;let a,s,i;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Pt)&&(t.window.set(t.window.subarray(e,e+e-s),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Vt(t),s+=e),0===t.strm.avail_in)break;if(a=Xt(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Wt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Wt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<Pt&&0!==t.strm.avail_in)},te=(t,e)=>{let a,s,i,r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n=0,h=t.strm.avail_in;do{if(a=65535,i=t.bi_valid+42>>3,t.strm.avail_out<i)break;if(i=t.strm.avail_out-i,s=t.strstart-t.block_start,a>s+t.strm.avail_in&&(a=s+t.strm.avail_in),a>i&&(a=i),a<r&&(0===a&&e!==kt||e===yt||a!==s+t.strm.avail_in))break;n=e===kt&&a===s+t.strm.avail_in?1:0,gt(t,0,0,n),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,Kt(t.strm),s&&(s>a&&(s=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+s),t.strm.next_out),t.strm.next_out+=s,t.strm.avail_out-=s,t.strm.total_out+=s,t.block_start+=s,a-=s),a&&(Xt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===n);return h-=t.strm.avail_in,h&&(h>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=h&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-h,t.strm.next_in),t.strstart),t.strstart+=h,t.insert+=h>t.w_size-t.insert?t.w_size-t.insert:h),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),n?4:e!==yt&&e!==kt&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(i=t.window_size-t.strstart,t.strm.avail_in>i&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,i+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),i>t.strm.avail_in&&(i=t.strm.avail_in),i&&(Xt(t.strm,t.window,t.strstart,i),t.strstart+=i,t.insert+=i>t.w_size-t.insert?t.w_size-t.insert:i),t.high_water<t.strstart&&(t.high_water=t.strstart),i=t.bi_valid+42>>3,i=t.pending_buf_size-i>65535?65535:t.pending_buf_size-i,r=i>t.w_size?t.w_size:i,s=t.strstart-t.block_start,(s>=r||(s||e===kt)&&e!==yt&&0===t.strm.avail_in&&s<=i)&&(a=s>i?i:s,n=e===kt&&0===t.strm.avail_in&&a===s?1:0,gt(t,t.block_start,a,n),t.block_start+=a,Kt(t.strm)),n?3:1)},ee=(t,e)=>{let a,s;for(;;){if(t.lookahead<Pt){if(Jt(t),t.lookahead<Pt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-Pt&&(t.match_length=Qt(t,a)),t.match_length>=3)if(s=mt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+1]);else s=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(s&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2},ae=(t,e)=>{let a,s,i;for(;;){if(t.lookahead<Pt){if(Jt(t),t.lookahead<Pt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-Pt&&(t.match_length=Qt(t,a),t.match_length<=5&&(t.strategy===Rt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,s=mt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,s&&(Yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(s=mt(t,0,t.window[t.strstart-1]),s&&Yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(s=mt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2};function se(t,e,a,s,i){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=s,this.func=i}const ie=[new se(0,0,0,0,te),new se(4,4,8,4,ee),new se(4,5,16,8,ee),new se(4,6,32,32,ee),new se(4,4,16,16,ae),new se(8,16,32,32,ae),new se(8,16,128,128,ae),new se(8,32,128,256,ae),new se(32,128,258,1024,ae),new se(32,258,258,4096,ae)];function re(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ct,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),jt(this.dyn_ltree),jt(this.dyn_dtree),jt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),jt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),jt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ne=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==Zt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Mt&&e.status!==Nt?1:0},he=t=>{if(ne(t))return $t(t,Ut);t.total_in=t.total_out=0,t.data_type=Tt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Zt:Mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,ct(e),St},le=t=>{const e=he(t);var a;return e===St&&((a=t.state).window_size=2*a.w_size,jt(a.head),a.max_lazy_match=ie[a.level].max_lazy,a.good_match=ie[a.level].good_length,a.nice_match=ie[a.level].nice_length,a.max_chain_length=ie[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},oe=(t,e,a,s,i,r)=>{if(!t)return Ut;let n=1;if(e===xt&&(e=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),i<1||i>9||a!==Ct||s<8||s>15||e<0||e>9||r<0||r>At||8===s&&1!==n)return $t(t,Ut);8===s&&(s=9);const h=new re;return t.state=h,h.strm=t,h.status=Zt,h.wrap=n,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=i+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<i+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.sym_buf=h.lit_bufsize,h.sym_end=3*(h.lit_bufsize-1),h.level=e,h.strategy=r,h.method=a,le(t)};var _e={deflateInit:(t,e)=>oe(t,e,Ct,15,8,Bt),deflateInit2:oe,deflateReset:le,deflateResetKeep:he,deflateSetHeader:(t,e)=>ne(t)||2!==t.state.wrap?Ut:(t.state.gzhead=e,St),deflate:(t,e)=>{if(ne(t)||e>zt||e<0)return t?$t(t,Ut):Ut;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===Nt&&e!==kt)return $t(t,0===t.avail_out?Ot:Ut);const s=a.last_flush;if(a.last_flush=e,0!==a.pending){if(Kt(t),0===t.avail_out)return a.last_flush=-1,St}else if(0===t.avail_in&&Ht(e)<=Ht(s)&&e!==kt)return $t(t,Ot);if(a.status===Nt&&0!==t.avail_in)return $t(t,Ot);if(a.status===Zt&&0===a.wrap&&(a.status=Mt),a.status===Zt){let e=Ct+(a.w_bits-8<<4)<<8,s=-1;if(s=a.strategy>=It||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=s<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Gt(a,e),0!==a.strstart&&(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),t.adler=1,a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(57===a.status)if(t.adler=0,qt(a,31),qt(a,139),qt(a,8),a.gzhead)qt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),qt(a,255&a.gzhead.time),qt(a,a.gzhead.time>>8&255),qt(a,a.gzhead.time>>16&255),qt(a,a.gzhead.time>>24&255),qt(a,9===a.level?2:a.strategy>=It||a.level<2?4:0),qt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(qt(a,255&a.gzhead.extra.length),qt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=dt(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,9===a.level?2:a.strategy>=It||a.level<2?4:0),qt(a,3),a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St;if(69===a.status){if(a.gzhead.extra){let e=a.pending,s=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+s>a.pending_buf_size;){let i=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=i,Kt(t),0!==a.pending)return a.last_flush=-1,St;e=0,s-=i}let i=new Uint8Array(a.gzhead.extra);a.pending_buf.set(i.subarray(a.gzindex,a.gzindex+s),a.pending),a.pending+=s,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(Kt(t),0!==a.pending))return a.last_flush=-1,St;qt(a,255&t.adler),qt(a,t.adler>>8&255),t.adler=0}if(a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(0!==t.avail_in||0!==a.lookahead||e!==yt&&a.status!==Nt){let s=0===a.level?te(a,e):a.strategy===It?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Jt(t),0===t.lookahead)){if(e===yt)return 1;break}if(t.match_length=0,a=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===Et?((t,e)=>{let a,s,i,r;const n=t.window;for(;;){if(t.lookahead<=Lt){if(Jt(t),t.lookahead<=Lt&&e===yt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,s=n[i],s===n[++i]&&s===n[++i]&&s===n[++i])){r=t.strstart+Lt;do{}while(s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&i<r);t.match_length=Lt-(r-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=mt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):ie[a.level].func(a,e);if(3!==s&&4!==s||(a.status=Nt),1===s||3===s)return 0===t.avail_out&&(a.last_flush=-1),St;if(2===s&&(e===bt?pt(a):e!==zt&&(gt(a,0,0,!1),e===vt&&(jt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),Kt(t),0===t.avail_out))return a.last_flush=-1,St}return e!==kt?St:a.wrap<=0?Ft:(2===a.wrap?(qt(a,255&t.adler),qt(a,t.adler>>8&255),qt(a,t.adler>>16&255),qt(a,t.adler>>24&255),qt(a,255&t.total_in),qt(a,t.total_in>>8&255),qt(a,t.total_in>>16&255),qt(a,t.total_in>>24&255)):(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),Kt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?St:Ft)},deflateEnd:t=>{if(ne(t))return Ut;const e=t.state.status;return t.state=null,e===Mt?$t(t,Dt):St},deflateSetDictionary:(t,e)=>{let a=e.length;if(ne(t))return Ut;const s=t.state,i=s.wrap;if(2===i||1===i&&s.status!==Zt||s.lookahead)return Ut;if(1===i&&(t.adler=ot(t.adler,e,a,0)),s.wrap=0,a>=s.w_size){0===i&&(jt(s.head),s.strstart=0,s.block_start=0,s.insert=0);let t=new Uint8Array(s.w_size);t.set(e.subarray(a-s.w_size,a),0),e=t,a=s.w_size}const r=t.avail_in,n=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Jt(s);s.lookahead>=3;){let t=s.strstart,e=s.lookahead-2;do{s.ins_h=Wt(s,s.ins_h,s.window[t+3-1]),s.prev[t&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=t,t++}while(--e);s.strstart=t,s.lookahead=2,Jt(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,t.next_in=n,t.input=h,t.avail_in=r,s.wrap=i,St},deflateInfo:"pako deflate (from Nodeca project)"};const de=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var fe=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)de(a,e)&&(t[e]=a[e])}}return t},ue=t=>{let e=0;for(let a=0,s=t.length;a<s;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,s=0,i=t.length;e<i;e++){let i=t[e];a.set(i,s),s+=i.length}return a};let ce=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){ce=!1}const ge=new Uint8Array(256);for(let t=0;t<256;t++)ge[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ge[254]=ge[254]=1;var we=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,s,i,r,n=t.length,h=0;for(i=0;i<n;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),r=0,i=0;r<h;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e};var me=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const pe=Object.prototype.toString,{Z_NO_FLUSH:ye,Z_SYNC_FLUSH:be,Z_FULL_FLUSH:ve,Z_FINISH:ke,Z_OK:ze,Z_STREAM_END:Se,Z_DEFAULT_COMPRESSION:Fe,Z_DEFAULT_STRATEGY:Ue,Z_DEFLATED:De}=ut;function Oe(t){this.options=fe({level:Fe,method:De,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ue},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new me,this.strm.avail_out=0;let a=_e.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ze)throw new Error(ft[a]);if(e.header&&_e.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?we(e.dictionary):"[object ArrayBuffer]"===pe.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=_e.deflateSetDictionary(this.strm,t),a!==ze)throw new Error(ft[a]);this._dict_set=!0}}Oe.prototype.push=function(t,e){const a=this.strm,s=this.options.chunkSize;let i,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?ke:ye,"string"==typeof t?a.input=we(t):"[object ArrayBuffer]"===pe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(s),a.next_out=0,a.avail_out=s),(r===be||r===ve)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(i=_e.deflate(a,r),i===Se)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),i=_e.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ze;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Oe.prototype.onData=function(t){this.chunks.push(t)},Oe.prototype.onEnd=function(t){t===ze&&(this.result=ue(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var xe={deflate:function(t,e){const a=new Oe(e);if(a.push(t,!0),a.err)throw a.msg||ft[a.err];return a.result}};const{deflate:Re}=xe;var Ie=Re;const Ee={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},Ae=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw"Pack format to Argument count mismatch";let s=[],i=!0;for(let s=0;s<t.length;s++)"<"==t[s]?i=!0:">"==t[s]?i=!1:(r(t[s],e[a]),a++);function r(t,e){if(!(t in Ee))throw"Unhandled character '"+t+"' in pack format";let a=Ee[t].bytes,r=new DataView(new ArrayBuffer(a));Ee[t].p.bind(r)(0,e,i);for(let t=0;t<a;t++)s.push(r.getUint8(t))}return s},Be=(t,e)=>{let a=0,s=[],i=!0;for(let e of t)"<"==e?i=!0:">"==e?i=!1:r(e);function r(t){if(!(t in Ee))throw"Unhandled character '"+t+"' in unpack format";let r=Ee[t].bytes,n=new DataView(new ArrayBuffer(r));for(let t=0;t<r;t++)n.setUint8(t,255&e[a+t]);let h=Ee[t].u.bind(n);s.push(h(0,i)),a+=r}return s};class Te extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t=await this.readRegister(1073745920),e=p[t>>>0];if(void 0===e)throw new Error(`Unknown Chip: Hex: ${a(t>>>0,8).toLowerCase()} Number: ${t}`);this.chipName=e.name,this.chipFamily=e.family;let s=k(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(s+4*t);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(t=100){return new Promise(e=>setTimeout(e,t))}async setRTS(t){await this.port.setSignals({requestToSend:t}),await this.setDTR(this.state_DTR)}async setDTR(t){this.state_DTR=t,await this.port.setSignals({dataTerminalReady:t})}async hardReset(t=!1){this.logger.log("Try hard reset."),t?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(t=>setTimeout(t,1e3))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],s=this._efuses[1],i=this._efuses[2],r=this._efuses[3];if(this.chipFamily==h){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(s>>16&255){if(1!=(s>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}else t=[24,254,52];e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=s>>8&255,e[4]=255&s,e[5]=a>>24&255}else if(this.chipFamily==l)e[0]=i>>8&255,e[1]=255&i,e[2]=s>>24&255,e[3]=s>>16&255,e[4]=s>>8&255,e[5]=255&s;else{if(this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=w&&this.chipFamily!=m)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=a>>24&255,e[3]=a>>16&255,e[4]=a>>8&255,e[5]=255&a}return e}async readRegister(t){this.debug&&this.logger.debug("Reading from Register "+a(t,8));let e=Ae("<I",t);await this.sendCommand(10,e);let[s,i]=await this.getResponse(10);return s}async checkCommand(t,e,s=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,s);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let p=0;if(this.IS_STUB||this.chipFamily==h?p=2:[l,o,_,d,f,u,c,g,w,m].includes(this.chipFamily)?p=4:[2,4].includes(n.length)&&(p=n.length),n.length<p)throw new Error("Didn't get enough status bytes");let y=n.slice(-p,n.length);if(n=n.slice(0,-p),this.debug&&(this.logger.debug("status",y),this.logger.debug("value",r),this.logger.debug("data",n)),1==y[0])throw 5==y[1]?new Error("Invalid (unsupported) command "+a(t)):new Error("Command failure error code "+a(y[1]));return[r,n]}async sendCommand(t,e,a=0){let s=(t=>{let e=[192];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e.push(192),e})([...Ae("<BBHI",0,t,e.length,a),...e]);this.debug&&this.logger.debug(`Writing ${s.length} byte${1==s.length?"":"s"}:`,s),await this.writeToStream(s)}async readPacket(t){let i=null,r=!1,n=[];for(;;){let h=Date.now();for(n=[];Date.now()-h<t;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await s(10)}if(0==n.length){throw new z("Timed out waiting for packet "+(null===i?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+e(n));for(let t of n)if(null===i){if(192!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid head of packet ("+a(t)+")");i=[]}else if(r)if(r=!1,220==t)i.push(192);else{if(221!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid SLIP escape (0xdb, "+a(t)+")");i.push(219)}else if(219==t)r=!0;else{if(192==t)return this.debug&&this.logger.debug("Received full packet: "+e(i)),i;i.push(t)}}throw new z("Invalid state")}async getResponse(t,e=3e3){for(let s=0;s<100;s++){const s=await this.readPacket(e);if(s.length<8)continue;const[i,r,n,h]=Be("<BBHI",s.slice(0,8));if(1!=i)continue;const l=s.slice(8);if(null==t||r==t)return[h,l];if(0!=l[0]&&5==l[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${a(t)}`)}throw"Response doesn't match request"}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==h)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=Ae("<II",t,this.IS_STUB?r:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e;try{await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),await this.port.close(),await this.port.open({baudRate:t}),this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(this._inputBuffer.length=0,await this._sync())return await s(100),!0;await s(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,n);for(let t=0;t<8;t++)try{let[t,e]=await this.getResponse(8,100);if(e.length>1&&0==e[0]&&0==e[1])return!0}catch(t){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,s=0,i=!1){if(t.byteLength>=8){var r=Array.from(new Uint8Array(t,0,4));let e=r[0],s=r[2],i=r[3];this.logger.log(`Image header, Magic=${a(e)}, FlashMode=${a(s)}, FlashSizeFreq=${a(i)}`)}let n,h=t.byteLength,l=0,o=y;i?(n=Ie(new Uint8Array(t),{level:9}).buffer,l=n.byteLength,this.logger.log(`Writing data with filesize: ${h}. Compressed Size: ${l}`),o=await this.flashDeflBegin(h,l,s)):(this.logger.log(`Writing data with filesize: ${h}`),n=t,await this.flashBegin(h,s));let _=[],d=0,f=0,u=0,c=Date.now(),g=this.getFlashWriteSize(),w=i?l:h;for(;w-u>0;)this.debug&&this.logger.log(`Writing at ${a(s+d*g,8)} `),w-u>=g?_=Array.from(new Uint8Array(n,u,g)):(_=Array.from(new Uint8Array(n,u,w-u)),i||(_=_.concat(new Array(g-_.length).fill(255)))),i?await this.flashDeflBlock(_,d,o):await this.flashBlock(_,d),d+=1,f+=i?Math.round(_.length*h/l):_.length,u+=g,e(Math.min(f,h),h);this.logger.log("Took "+(Date.now()-c)+"ms to write "+w+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,a=3e3){await this.checkCommand(3,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashDeflBlock(t,e,a=3e3){await this.checkCommand(17,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashBegin(t=0,e=0,s=!1){let i,r,n=this.getFlashWriteSize();!this.IS_STUB&&[l,o,_,d,f,u,c,g,w,m].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let p,b=Math.floor((t+n-1)/n);i=this.chipFamily==h?this.getEraseSize(e,t):t,p=this.IS_STUB?y:v(3e4,t);let k=Date.now();return r=Ae("<IIII",i,b,n,e),this.chipFamily!=l&&this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=w&&this.chipFamily!=m||(r=r.concat(Ae("<I",s?1:0))),this.logger.log("Erase size "+i+", blocks "+b+", block size "+a(n,4)+", offset "+a(e,4)+", encrypted "+(s?"yes":"no")),await this.checkCommand(2,r,0,p),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-k)+"ms to erase "+b+" bytes"),b}async flashDeflBegin(t=0,e=0,a=0,s=!1){let i,r=this.getFlashWriteSize(),n=Math.floor((e+r-1)/r),h=Math.floor((t+r-1)/r),l=0,o=0;return this.IS_STUB?(l=t,o=v(3e4,l)):(l=h*r,o=y),i=Ae("<IIII",l,n,r,a),await this.checkCommand(16,i,0,o),o}async flashFinish(){let t=Ae("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=Ae("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){return k(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,a=4294967295,s=0,i=0){let r=Ae("<IIII",t,e,a,s);i>0&&r.concat(Ae("<IIII",k(this.getChipFamily()).uartDateReg,0,0,i)),await this.checkCommand(9,r)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let s=t.regBase+t.mosiDlenOffs,i=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(s,e-1),a>0&&await this.writeRegister(i,a-1)}else{let s=t.regBase+t.usr1Offs,i=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(s,i)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,s=0){let i=k(this.getChipFamily()),r=i.regBase,n=r,h=r+i.usrOffs,l=r+i.usr2Offs,o=r+i.w0Offs,_=1<<18;if(s>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let d=8*e.length,f=await this.readRegister(h),u=await this.readRegister(l),c=1<<31;if(s>0&&(c|=268435456),d>0&&(c|=134217728),await this.setDataLengths(i,d,s),await this.writeRegister(h,c),await this.writeRegister(l,7<<28|t),0==d)await this.writeRegister(o,0);else{e.concat(new Array(e.length%4).fill(0));let t=Be("I".repeat(Math.floor(e.length/4)),e),s=o;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${a(e)} to register offset ${a(s)}`),await this.writeRegister(s,e),s+=4}await this.writeRegister(n,_),await this.waitDone(n,_);let g=await this.readRegister(o);return await this.writeRegister(h,f),await this.writeRegister(l,u),g}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,s=t>>16&255;this.logger.log(`FlashId: ${a(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${s.toString(16)}`),this.flashSize=i[s],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,s=Math.floor((e+a-1)/a),i=16-Math.floor(t/a)%16;return s<i&&(i=s),s<2*i?Math.floor((s+1)/2*a):(s-i)*a}async memBegin(t,e,a,s){return await this.checkCommand(5,Ae("<IIII",t,e,a,s))}async memBlock(t,e){return await this.checkCommand(7,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?y:500,a=Ae("<II",0==t?1:0,t);return await this.checkCommand(6,a,0,e)}async runStub(){const t=await S(this.chipFamily);let e,a=2048;this.logger.log("Uploading stub...");for(let e of["text","data"])if(Object.keys(t).includes(e)){let s=t[e+"_start"],i=t[e].length,r=Math.floor((i+a-1)/a);await this.memBegin(i,r,a,s);for(let s of Array(r).keys()){let r=s*a,n=r+a;n>i&&(n=i),await this.memBlock(t[e].slice(r,n),s)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const s=await this.readPacket(500);if(e=String.fromCharCode(...s),"OHAI"!=e)throw new Error("Failed to start stub. Unexpected response: "+e);this.logger.log("Stub is now running...");const i=new Ce(this.port,this.logger,this);return await i.detectFlashSize(),i}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(t=>{this._reader||t(void 0),this.addEventListener("disconnect",t,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class Ce extends Te{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,s,i){let r=await S(this.chipFamily),n=i,h=i+t;console.log(n,h),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&h>t)throw new Error("Software loader is resident at "+a(t,8)+"-"+a(e,8)+". Can't load binary at overlapping address range "+a(n,8)+"-"+a(h,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,b)}}const Le=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:r}),t.log("Connected successfully."),new Te(e,t)};export{l as CHIP_FAMILY_ESP32,d as CHIP_FAMILY_ESP32C2,f as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32C5,c as CHIP_FAMILY_ESP32C6,g as CHIP_FAMILY_ESP32C61,w as CHIP_FAMILY_ESP32H2,m as CHIP_FAMILY_ESP32P4,o as CHIP_FAMILY_ESP32S2,_ as CHIP_FAMILY_ESP32S3,h as CHIP_FAMILY_ESP8266,Te as ESPLoader,Le as connect};
1
+ const t=t=>{let e=[];for(let a=0;a<t.length;a++){let s=t.charCodeAt(a);s<=255&&e.push(s)}return e},e=t=>"["+t.map(t=>a(t)).join(", ")+"]",a=(t,e=2)=>{let a=t.toString(16).toUpperCase();return a.startsWith("-")?"-0x"+a.substring(1).padStart(e,"0"):"0x"+a.padStart(e,"0")},s=t=>new Promise(e=>setTimeout(e,t)),i={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},r=115200,n=t(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),h=33382,l=50,o=12882,_=12883,d=12994,f=12995,u=12997,c=12998,g=207969,m=12914,w=12928,p={4293968129:{name:"ESP8266",family:h},15736195:{name:"ESP32",family:l},1990:{name:"ESP32-S2",family:o},9:{name:"ESP32-S3",family:_},203546735:{name:"ESP32-C2",family:d},1867591791:{name:"ESP32-C2",family:d},2084675695:{name:"ESP32-C2",family:d},456216687:{name:"ESP32-C3",family:f},1130455151:{name:"ESP32-C3",family:f},1216438383:{name:"ESP32-C3",family:f},1763790959:{name:"ESP32-C3",family:f},285294703:{name:"ESP32-C5",family:u},1607549039:{name:"ESP32-C5",family:u},1548751960:{name:"ESP32-C5",family:u},1675706479:{name:"ESP32-C5",family:u},752910447:{name:"ESP32-C6",family:c},606167151:{name:"ESP32-C61",family:g},871374959:{name:"ESP32-C61",family:g},1333878895:{name:"ESP32-C61",family:g},1913741423:{name:"ESP32-C61",family:g},2548236392:{name:"ESP32-H2",family:m},3619110528:{name:"ESP32-H2",family:m},0:{name:"ESP32-P4",family:w},117676761:{name:"ESP32-P4",family:w},182303440:{name:"ESP32-P4",family:w}},y=3e3,b=6e5,v=(t,e)=>{let a=Math.floor(t*(e/486));return a<y?y:a},k=t=>{switch(t){case l:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case o:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case _:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case h:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case d:case f:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case u:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case c:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case g:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case m:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case w:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class z extends Error{constructor(t){super(t),this.name="SlipReadError"}}const S=async e=>{let a;return e==l?a=await import("./esp32-BNIFdu1P.js"):e==o?a=await import("./esp32s2-Bk4mqADi.js"):e==_?a=await import("./esp32s3-Df3OUCOC.js"):e==h?a=await import("./esp8266-CQFcqJ_a.js"):e==d?a=await import("./esp32c2-BqxquOKw.js"):e==f?a=await import("./esp32c3-BOOqe8me.js"):e==u?a=await import("./esp32c5-C8uE-s4t.js"):e==c?a=await import("./esp32c6-Cg5qYgg7.js"):e==g?a=await import("./esp32c61-CzCdsydk.js"):e==m?a=await import("./esp32h2-DZa_lpff.js"):e==w&&(a=await import("./esp32p4-DyGqUAeZ.js")),{...a,text:t(atob(a.text)),data:t(atob(a.data))}};function F(t){let e=t.length;for(;--e>=0;)t[e]=0}const U=256,D=286,O=30,x=15,R=new Uint8Array([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]),E=new Uint8Array([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]),I=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),A=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),B=new Array(576);F(B);const T=new Array(60);F(T);const C=new Array(512);F(C);const P=new Array(256);F(P);const L=new Array(29);F(L);const Z=new Array(O);function M(t,e,a,s,i){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=s,this.max_length=i,this.has_stree=t&&t.length}let N,$,H;function j(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}F(Z);const V=t=>t<256?C[t]:C[256+(t>>>7)],W=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},K=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,W(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},Y=(t,e,a)=>{K(t,a[2*e],a[2*e+1])},q=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},G=(t,e,a)=>{const s=new Array(16);let i,r,n=0;for(i=1;i<=x;i++)n=n+a[i-1]<<1,s[i]=n;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=q(s[e]++,e))}},X=t=>{let e;for(e=0;e<D;e++)t.dyn_ltree[2*e]=0;for(e=0;e<O;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},Q=t=>{t.bi_valid>8?W(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},J=(t,e,a,s)=>{const i=2*e,r=2*a;return t[i]<t[r]||t[i]===t[r]&&s[e]<=s[a]},tt=(t,e,a)=>{const s=t.heap[a];let i=a<<1;for(;i<=t.heap_len&&(i<t.heap_len&&J(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!J(e,s,t.heap[i],t.depth));)t.heap[a]=t.heap[i],a=i,i<<=1;t.heap[a]=s},et=(t,e,a)=>{let s,i,r,n,h=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+h++],s+=(255&t.pending_buf[t.sym_buf+h++])<<8,i=t.pending_buf[t.sym_buf+h++],0===s?Y(t,i,e):(r=P[i],Y(t,r+U+1,e),n=R[r],0!==n&&(i-=L[r],K(t,i,n)),s--,r=V(s),Y(t,r,a),n=E[r],0!==n&&(s-=Z[r],K(t,s,n)))}while(h<t.sym_next);Y(t,256,e)},at=(t,e)=>{const a=e.dyn_tree,s=e.stat_desc.static_tree,i=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,h,l,o=-1;for(t.heap_len=0,t.heap_max=573,n=0;n<r;n++)0!==a[2*n]?(t.heap[++t.heap_len]=o=n,t.depth[n]=0):a[2*n+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=o<2?++o:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=s[2*l+1]);for(e.max_code=o,n=t.heap_len>>1;n>=1;n--)tt(t,a,n);l=r;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],tt(t,a,1),h=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=h,a[2*l]=a[2*n]+a[2*h],t.depth[l]=(t.depth[n]>=t.depth[h]?t.depth[n]:t.depth[h])+1,a[2*n+1]=a[2*h+1]=l,t.heap[1]=l++,tt(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,s=e.max_code,i=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,h=e.stat_desc.extra_base,l=e.stat_desc.max_length;let o,_,d,f,u,c,g=0;for(f=0;f<=x;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,o=t.heap_max+1;o<573;o++)_=t.heap[o],f=a[2*a[2*_+1]+1]+1,f>l&&(f=l,g++),a[2*_+1]=f,_>s||(t.bl_count[f]++,u=0,_>=h&&(u=n[_-h]),c=a[2*_],t.opt_len+=c*(f+u),r&&(t.static_len+=c*(i[2*_+1]+u)));if(0!==g){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(f=l;0!==f;f--)for(_=t.bl_count[f];0!==_;)d=t.heap[--o],d>s||(a[2*d+1]!==f&&(t.opt_len+=(f-a[2*d+1])*a[2*d],a[2*d+1]=f),_--)}})(t,e),G(a,o,t.bl_count)},st=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),e[2*(a+1)+1]=65535,s=0;s<=a;s++)i=n,n=e[2*(s+1)+1],++h<l&&i===n||(h<o?t.bl_tree[2*i]+=h:0!==i?(i!==r&&t.bl_tree[2*i]++,t.bl_tree[32]++):h<=10?t.bl_tree[34]++:t.bl_tree[36]++,h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4))},it=(t,e,a)=>{let s,i,r=-1,n=e[1],h=0,l=7,o=4;for(0===n&&(l=138,o=3),s=0;s<=a;s++)if(i=n,n=e[2*(s+1)+1],!(++h<l&&i===n)){if(h<o)do{Y(t,i,t.bl_tree)}while(0!==--h);else 0!==i?(i!==r&&(Y(t,i,t.bl_tree),h--),Y(t,16,t.bl_tree),K(t,h-3,2)):h<=10?(Y(t,17,t.bl_tree),K(t,h-3,3)):(Y(t,18,t.bl_tree),K(t,h-11,7));h=0,r=i,0===n?(l=138,o=3):i===n?(l=6,o=3):(l=7,o=4)}};let rt=!1;const nt=(t,e,a,s)=>{K(t,0+(s?1:0),3),Q(t),W(t,a),W(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var ht=(t,e,a,s)=>{let i,r,n=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<U;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),at(t,t.l_desc),at(t,t.d_desc),n=(t=>{let e;for(st(t,t.dyn_ltree,t.l_desc.max_code),st(t,t.dyn_dtree,t.d_desc.max_code),at(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*A[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=i&&(i=r)):i=r=a+5,a+4<=i&&-1!==e?nt(t,e,a,s):4===t.strategy||r===i?(K(t,2+(s?1:0),3),et(t,B,T)):(K(t,4+(s?1:0),3),((t,e,a,s)=>{let i;for(K(t,e-257,5),K(t,a-1,5),K(t,s-4,4),i=0;i<s;i++)K(t,t.bl_tree[2*A[i]+1],3);it(t,t.dyn_ltree,e-1),it(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),et(t,t.dyn_ltree,t.dyn_dtree)),X(t),s&&Q(t)},lt={_tr_init:t=>{rt||((()=>{let t,e,a,s,i;const r=new Array(16);for(a=0,s=0;s<28;s++)for(L[s]=a,t=0;t<1<<R[s];t++)P[a++]=s;for(P[a-1]=s,i=0,s=0;s<16;s++)for(Z[s]=i,t=0;t<1<<E[s];t++)C[i++]=s;for(i>>=7;s<O;s++)for(Z[s]=i<<7,t=0;t<1<<E[s]-7;t++)C[256+i++]=s;for(e=0;e<=x;e++)r[e]=0;for(t=0;t<=143;)B[2*t+1]=8,t++,r[8]++;for(;t<=255;)B[2*t+1]=9,t++,r[9]++;for(;t<=279;)B[2*t+1]=7,t++,r[7]++;for(;t<=287;)B[2*t+1]=8,t++,r[8]++;for(G(B,287,r),t=0;t<O;t++)T[2*t+1]=5,T[2*t]=q(t,5);N=new M(B,R,257,D,x),$=new M(T,E,0,O,x),H=new M(new Array(0),I,0,19,7)})(),rt=!0),t.l_desc=new j(t.dyn_ltree,N),t.d_desc=new j(t.dyn_dtree,$),t.bl_desc=new j(t.bl_tree,H),t.bi_buf=0,t.bi_valid=0,X(t)},_tr_stored_block:nt,_tr_flush_block:ht,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(P[a]+U+1)]++,t.dyn_dtree[2*V(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{K(t,2,3),Y(t,256,B),(t=>{16===t.bi_valid?(W(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var ot=(t,e,a,s)=>{let i=65535&t,r=t>>>16&65535,n=0;for(;0!==a;){n=a>2e3?2e3:a,a-=n;do{i=i+e[s++]|0,r=r+i|0}while(--n);i%=65521,r%=65521}return i|r<<16};const _t=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var s=0;s<8;s++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var dt=(t,e,a,s)=>{const i=_t,r=s+a;t^=-1;for(let a=s;a<r;a++)t=t>>>8^i[255&(t^e[a])];return-1^t},ft={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ct,_tr_stored_block:gt,_tr_flush_block:mt,_tr_tally:wt,_tr_align:pt}=lt,{Z_NO_FLUSH:yt,Z_PARTIAL_FLUSH:bt,Z_FULL_FLUSH:vt,Z_FINISH:kt,Z_BLOCK:zt,Z_OK:St,Z_STREAM_END:Ft,Z_STREAM_ERROR:Ut,Z_DATA_ERROR:Dt,Z_BUF_ERROR:Ot,Z_DEFAULT_COMPRESSION:xt,Z_FILTERED:Rt,Z_HUFFMAN_ONLY:Et,Z_RLE:It,Z_FIXED:At,Z_DEFAULT_STRATEGY:Bt,Z_UNKNOWN:Tt,Z_DEFLATED:Ct}=ut,Pt=258,Lt=262,Zt=42,Mt=113,Nt=666,$t=(t,e)=>(t.msg=ft[e],e),Ht=t=>2*t-(t>4?9:0),jt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Vt=t=>{let e,a,s,i=t.w_size;e=t.hash_size,s=e;do{a=t.head[--s],t.head[s]=a>=i?a-i:0}while(--e);e=i,s=e;do{a=t.prev[--s],t.prev[s]=a>=i?a-i:0}while(--e)};let Wt=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const Kt=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},Yt=(t,e)=>{mt(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Kt(t.strm)},qt=(t,e)=>{t.pending_buf[t.pending++]=e},Gt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Xt=(t,e,a,s)=>{let i=t.avail_in;return i>s&&(i=s),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),a),1===t.state.wrap?t.adler=ot(t.adler,e,i,a):2===t.state.wrap&&(t.adler=dt(t.adler,e,i,a)),t.next_in+=i,t.total_in+=i,i)},Qt=(t,e)=>{let a,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match;const l=t.strstart>t.w_size-Lt?t.strstart-(t.w_size-Lt):0,o=t.window,_=t.w_mask,d=t.prev,f=t.strstart+Pt;let u=o[r+n-1],c=o[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(a=e,o[a+n]===c&&o[a+n-1]===u&&o[a]===o[r]&&o[++a]===o[r+1]){r+=2,a++;do{}while(o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&o[++r]===o[++a]&&r<f);if(s=Pt-(f-r),r=f-Pt,s>n){if(t.match_start=e,n=s,s>=h)break;u=o[r+n-1],c=o[r+n]}}}while((e=d[e&_])>l&&0!==--i);return n<=t.lookahead?n:t.lookahead},Jt=t=>{const e=t.w_size;let a,s,i;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Lt)&&(t.window.set(t.window.subarray(e,e+e-s),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Vt(t),s+=e),0===t.strm.avail_in)break;if(a=Xt(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Wt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Wt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<Lt&&0!==t.strm.avail_in)},te=(t,e)=>{let a,s,i,r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n=0,h=t.strm.avail_in;do{if(a=65535,i=t.bi_valid+42>>3,t.strm.avail_out<i)break;if(i=t.strm.avail_out-i,s=t.strstart-t.block_start,a>s+t.strm.avail_in&&(a=s+t.strm.avail_in),a>i&&(a=i),a<r&&(0===a&&e!==kt||e===yt||a!==s+t.strm.avail_in))break;n=e===kt&&a===s+t.strm.avail_in?1:0,gt(t,0,0,n),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,Kt(t.strm),s&&(s>a&&(s=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+s),t.strm.next_out),t.strm.next_out+=s,t.strm.avail_out-=s,t.strm.total_out+=s,t.block_start+=s,a-=s),a&&(Xt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===n);return h-=t.strm.avail_in,h&&(h>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=h&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-h,t.strm.next_in),t.strstart),t.strstart+=h,t.insert+=h>t.w_size-t.insert?t.w_size-t.insert:h),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),n?4:e!==yt&&e!==kt&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(i=t.window_size-t.strstart,t.strm.avail_in>i&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,i+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),i>t.strm.avail_in&&(i=t.strm.avail_in),i&&(Xt(t.strm,t.window,t.strstart,i),t.strstart+=i,t.insert+=i>t.w_size-t.insert?t.w_size-t.insert:i),t.high_water<t.strstart&&(t.high_water=t.strstart),i=t.bi_valid+42>>3,i=t.pending_buf_size-i>65535?65535:t.pending_buf_size-i,r=i>t.w_size?t.w_size:i,s=t.strstart-t.block_start,(s>=r||(s||e===kt)&&e!==yt&&0===t.strm.avail_in&&s<=i)&&(a=s>i?i:s,n=e===kt&&0===t.strm.avail_in&&a===s?1:0,gt(t,t.block_start,a,n),t.block_start+=a,Kt(t.strm)),n?3:1)},ee=(t,e)=>{let a,s;for(;;){if(t.lookahead<Lt){if(Jt(t),t.lookahead<Lt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-Lt&&(t.match_length=Qt(t,a)),t.match_length>=3)if(s=wt(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!==--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+1]);else s=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(s&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2},ae=(t,e)=>{let a,s,i;for(;;){if(t.lookahead<Lt){if(Jt(t),t.lookahead<Lt&&e===yt)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-Lt&&(t.match_length=Qt(t,a),t.match_length<=5&&(t.strategy===Rt||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,s=wt(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Wt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!==--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,s&&(Yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(s=wt(t,0,t.window[t.strstart-1]),s&&Yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(s=wt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2};function se(t,e,a,s,i){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=s,this.func=i}const ie=[new se(0,0,0,0,te),new se(4,4,8,4,ee),new se(4,5,16,8,ee),new se(4,6,32,32,ee),new se(4,4,16,16,ae),new se(8,16,32,32,ae),new se(8,16,128,128,ae),new se(8,32,128,256,ae),new se(32,128,258,1024,ae),new se(32,258,258,4096,ae)];function re(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ct,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),jt(this.dyn_ltree),jt(this.dyn_dtree),jt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),jt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),jt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ne=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==Zt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Mt&&e.status!==Nt?1:0},he=t=>{if(ne(t))return $t(t,Ut);t.total_in=t.total_out=0,t.data_type=Tt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Zt:Mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,ct(e),St},le=t=>{const e=he(t);var a;return e===St&&((a=t.state).window_size=2*a.w_size,jt(a.head),a.max_lazy_match=ie[a.level].max_lazy,a.good_match=ie[a.level].good_length,a.nice_match=ie[a.level].nice_length,a.max_chain_length=ie[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},oe=(t,e,a,s,i,r)=>{if(!t)return Ut;let n=1;if(e===xt&&(e=6),s<0?(n=0,s=-s):s>15&&(n=2,s-=16),i<1||i>9||a!==Ct||s<8||s>15||e<0||e>9||r<0||r>At||8===s&&1!==n)return $t(t,Ut);8===s&&(s=9);const h=new re;return t.state=h,h.strm=t,h.status=Zt,h.wrap=n,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=i+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+3-1)/3),h.window=new Uint8Array(2*h.w_size),h.head=new Uint16Array(h.hash_size),h.prev=new Uint16Array(h.w_size),h.lit_bufsize=1<<i+6,h.pending_buf_size=4*h.lit_bufsize,h.pending_buf=new Uint8Array(h.pending_buf_size),h.sym_buf=h.lit_bufsize,h.sym_end=3*(h.lit_bufsize-1),h.level=e,h.strategy=r,h.method=a,le(t)};var _e={deflateInit:(t,e)=>oe(t,e,Ct,15,8,Bt),deflateInit2:oe,deflateReset:le,deflateResetKeep:he,deflateSetHeader:(t,e)=>ne(t)||2!==t.state.wrap?Ut:(t.state.gzhead=e,St),deflate:(t,e)=>{if(ne(t)||e>zt||e<0)return t?$t(t,Ut):Ut;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===Nt&&e!==kt)return $t(t,0===t.avail_out?Ot:Ut);const s=a.last_flush;if(a.last_flush=e,0!==a.pending){if(Kt(t),0===t.avail_out)return a.last_flush=-1,St}else if(0===t.avail_in&&Ht(e)<=Ht(s)&&e!==kt)return $t(t,Ot);if(a.status===Nt&&0!==t.avail_in)return $t(t,Ot);if(a.status===Zt&&0===a.wrap&&(a.status=Mt),a.status===Zt){let e=Ct+(a.w_bits-8<<4)<<8,s=-1;if(s=a.strategy>=Et||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=s<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Gt(a,e),0!==a.strstart&&(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),t.adler=1,a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(57===a.status)if(t.adler=0,qt(a,31),qt(a,139),qt(a,8),a.gzhead)qt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),qt(a,255&a.gzhead.time),qt(a,a.gzhead.time>>8&255),qt(a,a.gzhead.time>>16&255),qt(a,a.gzhead.time>>24&255),qt(a,9===a.level?2:a.strategy>=Et||a.level<2?4:0),qt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(qt(a,255&a.gzhead.extra.length),qt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=dt(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,0),qt(a,9===a.level?2:a.strategy>=Et||a.level<2?4:0),qt(a,3),a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St;if(69===a.status){if(a.gzhead.extra){let e=a.pending,s=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+s>a.pending_buf_size;){let i=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=i,Kt(t),0!==a.pending)return a.last_flush=-1,St;e=0,s-=i}let i=new Uint8Array(a.gzhead.extra);a.pending_buf.set(i.subarray(a.gzindex,a.gzindex+s),a.pending),a.pending+=s,a.gzhead.hcrc&&a.pending>e&&(t.adler=dt(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,s=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s)),Kt(t),0!==a.pending)return a.last_flush=-1,St;s=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,qt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>s&&(t.adler=dt(t.adler,a.pending_buf,a.pending-s,s))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(Kt(t),0!==a.pending))return a.last_flush=-1,St;qt(a,255&t.adler),qt(a,t.adler>>8&255),t.adler=0}if(a.status=Mt,Kt(t),0!==a.pending)return a.last_flush=-1,St}if(0!==t.avail_in||0!==a.lookahead||e!==yt&&a.status!==Nt){let s=0===a.level?te(a,e):a.strategy===Et?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Jt(t),0===t.lookahead)){if(e===yt)return 1;break}if(t.match_length=0,a=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===It?((t,e)=>{let a,s,i,r;const n=t.window;for(;;){if(t.lookahead<=Pt){if(Jt(t),t.lookahead<=Pt&&e===yt)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,s=n[i],s===n[++i]&&s===n[++i]&&s===n[++i])){r=t.strstart+Pt;do{}while(s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&s===n[++i]&&i<r);t.match_length=Pt-(r-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=wt(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=wt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(Yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===kt?(Yt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Yt(t,!1),0===t.strm.avail_out)?1:2})(a,e):ie[a.level].func(a,e);if(3!==s&&4!==s||(a.status=Nt),1===s||3===s)return 0===t.avail_out&&(a.last_flush=-1),St;if(2===s&&(e===bt?pt(a):e!==zt&&(gt(a,0,0,!1),e===vt&&(jt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),Kt(t),0===t.avail_out))return a.last_flush=-1,St}return e!==kt?St:a.wrap<=0?Ft:(2===a.wrap?(qt(a,255&t.adler),qt(a,t.adler>>8&255),qt(a,t.adler>>16&255),qt(a,t.adler>>24&255),qt(a,255&t.total_in),qt(a,t.total_in>>8&255),qt(a,t.total_in>>16&255),qt(a,t.total_in>>24&255)):(Gt(a,t.adler>>>16),Gt(a,65535&t.adler)),Kt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?St:Ft)},deflateEnd:t=>{if(ne(t))return Ut;const e=t.state.status;return t.state=null,e===Mt?$t(t,Dt):St},deflateSetDictionary:(t,e)=>{let a=e.length;if(ne(t))return Ut;const s=t.state,i=s.wrap;if(2===i||1===i&&s.status!==Zt||s.lookahead)return Ut;if(1===i&&(t.adler=ot(t.adler,e,a,0)),s.wrap=0,a>=s.w_size){0===i&&(jt(s.head),s.strstart=0,s.block_start=0,s.insert=0);let t=new Uint8Array(s.w_size);t.set(e.subarray(a-s.w_size,a),0),e=t,a=s.w_size}const r=t.avail_in,n=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Jt(s);s.lookahead>=3;){let t=s.strstart,e=s.lookahead-2;do{s.ins_h=Wt(s,s.ins_h,s.window[t+3-1]),s.prev[t&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=t,t++}while(--e);s.strstart=t,s.lookahead=2,Jt(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=2,s.match_available=0,t.next_in=n,t.input=h,t.avail_in=r,s.wrap=i,St},deflateInfo:"pako deflate (from Nodeca project)"};const de=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var fe=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)de(a,e)&&(t[e]=a[e])}}return t},ue=t=>{let e=0;for(let a=0,s=t.length;a<s;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,s=0,i=t.length;e<i;e++){let i=t[e];a.set(i,s),s+=i.length}return a};let ce=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){ce=!1}const ge=new Uint8Array(256);for(let t=0;t<256;t++)ge[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ge[254]=ge[254]=1;var me=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,s,i,r,n=t.length,h=0;for(i=0;i<n;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),h+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(h),r=0,i=0;r<h;i++)a=t.charCodeAt(i),55296==(64512&a)&&i+1<n&&(s=t.charCodeAt(i+1),56320==(64512&s)&&(a=65536+(a-55296<<10)+(s-56320),i++)),a<128?e[r++]=a:a<2048?(e[r++]=192|a>>>6,e[r++]=128|63&a):a<65536?(e[r++]=224|a>>>12,e[r++]=128|a>>>6&63,e[r++]=128|63&a):(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63,e[r++]=128|a>>>6&63,e[r++]=128|63&a);return e};var we=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const pe=Object.prototype.toString,{Z_NO_FLUSH:ye,Z_SYNC_FLUSH:be,Z_FULL_FLUSH:ve,Z_FINISH:ke,Z_OK:ze,Z_STREAM_END:Se,Z_DEFAULT_COMPRESSION:Fe,Z_DEFAULT_STRATEGY:Ue,Z_DEFLATED:De}=ut;function Oe(t){this.options=fe({level:Fe,method:De,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ue},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new we,this.strm.avail_out=0;let a=_e.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ze)throw new Error(ft[a]);if(e.header&&_e.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?me(e.dictionary):"[object ArrayBuffer]"===pe.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=_e.deflateSetDictionary(this.strm,t),a!==ze)throw new Error(ft[a]);this._dict_set=!0}}Oe.prototype.push=function(t,e){const a=this.strm,s=this.options.chunkSize;let i,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?ke:ye,"string"==typeof t?a.input=me(t):"[object ArrayBuffer]"===pe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(s),a.next_out=0,a.avail_out=s),(r===be||r===ve)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(i=_e.deflate(a,r),i===Se)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),i=_e.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ze;if(0!==a.avail_out){if(r>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},Oe.prototype.onData=function(t){this.chunks.push(t)},Oe.prototype.onEnd=function(t){t===ze&&(this.result=ue(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var xe={deflate:function(t,e){const a=new Oe(e);if(a.push(t,!0),a.err)throw a.msg||ft[a.err];return a.result}};const{deflate:Re}=xe;var Ee=Re;const Ie={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},Ae=(t,...e)=>{let a=0;if(t.replace(/[<>]/,"").length!=e.length)throw"Pack format to Argument count mismatch";let s=[],i=!0;for(let s=0;s<t.length;s++)"<"==t[s]?i=!0:">"==t[s]?i=!1:(r(t[s],e[a]),a++);function r(t,e){if(!(t in Ie))throw"Unhandled character '"+t+"' in pack format";let a=Ie[t].bytes,r=new DataView(new ArrayBuffer(a));Ie[t].p.bind(r)(0,e,i);for(let t=0;t<a;t++)s.push(r.getUint8(t))}return s},Be=(t,e)=>{let a=0,s=[],i=!0;for(let e of t)"<"==e?i=!0:">"==e?i=!1:r(e);function r(t){if(!(t in Ie))throw"Unhandled character '"+t+"' in unpack format";let r=Ie[t].bytes,n=new DataView(new ArrayBuffer(r));for(let t=0;t<r;t++)n.setUint8(t,255&e[a+t]);let h=Ie[t].u.bind(n);s.push(h(0,i)),a+=r}return s};class Te extends EventTarget{constructor(t,e,a){super(),this.port=t,this.logger=e,this._parent=a,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let t=await this.readRegister(1073745920),e=p[t>>>0];if(void 0===e)throw new Error(`Unknown Chip: Hex: ${a(t>>>0,8).toLowerCase()} Number: ${t}`);this.chipName=e.name,this.chipFamily=e.family;let s=k(this.getChipFamily()).macFuse;for(let t=0;t<4;t++)this._efuses[t]=await this.readRegister(s+4*t);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:t,done:e}=await this._reader.read();if(e){this._reader.releaseLock();break}t&&0!==t.length&&this._inputBuffer.push(...Array.from(t))}}catch(t){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(t=100){return new Promise(e=>setTimeout(e,t))}async setRTS(t){await this.port.setSignals({requestToSend:t}),await this.setDTR(this.state_DTR)}async setDTR(t){this.state_DTR=t,await this.port.setSignals({dataTerminalReady:t})}async hardReset(t=!1){this.logger.log("Try hard reset."),t?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(t=>setTimeout(t,1e3))}macAddr(){let t,e=new Array(6).fill(0),a=this._efuses[0],s=this._efuses[1],i=this._efuses[2],r=this._efuses[3];if(this.chipFamily==h){if(0!=r)t=[r>>16&255,r>>8&255,255&r];else if(s>>16&255){if(1!=(s>>16&255))throw new Error("Couldnt determine OUI");t=[172,208,116]}else t=[24,254,52];e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=s>>8&255,e[4]=255&s,e[5]=a>>24&255}else if(this.chipFamily==l)e[0]=i>>8&255,e[1]=255&i,e[2]=s>>24&255,e[3]=s>>16&255,e[4]=s>>8&255,e[5]=255&s;else{if(this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=m&&this.chipFamily!=w)throw new Error("Unknown chip family");e[0]=s>>8&255,e[1]=255&s,e[2]=a>>24&255,e[3]=a>>16&255,e[4]=a>>8&255,e[5]=255&a}return e}async readRegister(t){this.debug&&this.logger.debug("Reading from Register "+a(t,8));let e=Ae("<I",t);await this.sendCommand(10,e);let[s,i]=await this.getResponse(10);return s}async checkCommand(t,e,s=0,i=3e3){i=Math.min(i,12e5),await this.sendCommand(t,e,s);let[r,n]=await this.getResponse(t,i);if(null===n)throw new Error("Didn't get enough status bytes");let p=0;if(this.IS_STUB||this.chipFamily==h?p=2:[l,o,_,d,f,u,c,g,m,w].includes(this.chipFamily)?p=4:[2,4].includes(n.length)&&(p=n.length),n.length<p)throw new Error("Didn't get enough status bytes");let y=n.slice(-p,n.length);if(n=n.slice(0,-p),this.debug&&(this.logger.debug("status",y),this.logger.debug("value",r),this.logger.debug("data",n)),1==y[0])throw 5==y[1]?new Error("Invalid (unsupported) command "+a(t)):new Error("Command failure error code "+a(y[1]));return[r,n]}async sendCommand(t,e,a=0){let s=(t=>{let e=[192];for(let a of t)219==a?e=e.concat([219,221]):192==a?e=e.concat([219,220]):e.push(a);return e.push(192),e})([...Ae("<BBHI",0,t,e.length,a),...e]);this.debug&&this.logger.debug(`Writing ${s.length} byte${1==s.length?"":"s"}:`,s),await this.writeToStream(s)}async readPacket(t){let i=null,r=!1,n=[];for(;;){let h=Date.now();for(n=[];Date.now()-h<t;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await s(10)}if(0==n.length){throw new z("Timed out waiting for packet "+(null===i?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+e(n));for(let t of n)if(null===i){if(192!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid head of packet ("+a(t)+")");i=[]}else if(r)if(r=!1,220==t)i.push(192);else{if(221!=t)throw this.debug&&(this.logger.debug("Read invalid data: "+e(n)),this.logger.debug("Remaining data in serial buffer: "+e(this._inputBuffer))),new z("Invalid SLIP escape (0xdb, "+a(t)+")");i.push(219)}else if(219==t)r=!0;else{if(192==t)return this.debug&&this.logger.debug("Received full packet: "+e(i)),i;i.push(t)}}throw new z("Invalid state")}async getResponse(t,e=3e3){for(let s=0;s<100;s++){const s=await this.readPacket(e);if(s.length<8)continue;const[i,r,n,h]=Be("<BBHI",s.slice(0,8));if(1!=i)continue;const l=s.slice(8);if(null==t||r==t)return[h,l];if(0!=l[0]&&5==l[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${a(t)}`)}throw"Response doesn't match request"}checksum(t,e=239){for(let a of t)e^=a;return e}async setBaudrate(t){if(this.chipFamily==h)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+t+"...");try{let e=Ae("<II",t,this.IS_STUB?r:0);await this.checkCommand(15,e)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(t):await this.reconfigurePort(t)}async reconfigurePort(t){var e;try{await(null===(e=this._reader)||void 0===e?void 0:e.cancel()),await this.port.close(),await this.port.open({baudRate:t}),this.readLoop(),this.logger.log(`Changed baud rate to ${t}`)}catch(e){throw console.error(e),new Error(`Unable to change the baud rate to ${t}: ${e}`)}}async sync(){for(let t=0;t<5;t++){if(this._inputBuffer.length=0,await this._sync())return await s(100),!0;await s(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,n);for(let t=0;t<8;t++)try{let[t,e]=await this.getResponse(8,100);if(e.length>1&&0==e[0]&&0==e[1])return!0}catch(t){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(t,e,s=0,i=!1){if(t.byteLength>=8){var r=Array.from(new Uint8Array(t,0,4));let e=r[0],s=r[2],i=r[3];this.logger.log(`Image header, Magic=${a(e)}, FlashMode=${a(s)}, FlashSizeFreq=${a(i)}`)}let n,h=t.byteLength,l=0,o=y;i?(n=Ee(new Uint8Array(t),{level:9}).buffer,l=n.byteLength,this.logger.log(`Writing data with filesize: ${h}. Compressed Size: ${l}`),o=await this.flashDeflBegin(h,l,s)):(this.logger.log(`Writing data with filesize: ${h}`),n=t,await this.flashBegin(h,s));let _=[],d=0,f=0,u=0,c=Date.now(),g=this.getFlashWriteSize(),m=i?l:h;for(;m-u>0;)this.debug&&this.logger.log(`Writing at ${a(s+d*g,8)} `),m-u>=g?_=Array.from(new Uint8Array(n,u,g)):(_=Array.from(new Uint8Array(n,u,m-u)),i||(_=_.concat(new Array(g-_.length).fill(255)))),i?await this.flashDeflBlock(_,d,o):await this.flashBlock(_,d),d+=1,f+=i?Math.round(_.length*h/l):_.length,u+=g,e(Math.min(f,h),h);this.logger.log("Took "+(Date.now()-c)+"ms to write "+m+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),i?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(t,e,a=3e3){await this.checkCommand(3,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashDeflBlock(t,e,a=3e3){await this.checkCommand(17,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t),a)}async flashBegin(t=0,e=0,s=!1){let i,r,n=this.getFlashWriteSize();!this.IS_STUB&&[l,o,_,d,f,u,c,g,m,w].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let p,b=Math.floor((t+n-1)/n);i=this.chipFamily==h?this.getEraseSize(e,t):t,p=this.IS_STUB?y:v(3e4,t);let k=Date.now();return r=Ae("<IIII",i,b,n,e),this.chipFamily!=l&&this.chipFamily!=o&&this.chipFamily!=_&&this.chipFamily!=d&&this.chipFamily!=f&&this.chipFamily!=u&&this.chipFamily!=c&&this.chipFamily!=g&&this.chipFamily!=m&&this.chipFamily!=w||(r=r.concat(Ae("<I",s?1:0))),this.logger.log("Erase size "+i+", blocks "+b+", block size "+a(n,4)+", offset "+a(e,4)+", encrypted "+(s?"yes":"no")),await this.checkCommand(2,r,0,p),0==t||this.IS_STUB||this.logger.log("Took "+(Date.now()-k)+"ms to erase "+b+" bytes"),b}async flashDeflBegin(t=0,e=0,a=0,s=!1){let i,r=this.getFlashWriteSize(),n=Math.floor((e+r-1)/r),h=Math.floor((t+r-1)/r),l=0,o=0;return this.IS_STUB?(l=t,o=v(3e4,l)):(l=h*r,o=y),i=Ae("<IIII",l,n,r,a),await this.checkCommand(16,i,0,o),o}async flashFinish(){let t=Ae("<I",1);await this.checkCommand(4,t)}async flashDeflFinish(){let t=Ae("<I",1);await this.checkCommand(18,t)}getBootloaderOffset(){return k(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(t,e,a=4294967295,s=0,i=0){let r=Ae("<IIII",t,e,a,s);i>0&&r.concat(Ae("<IIII",k(this.getChipFamily()).uartDateReg,0,0,i)),await this.checkCommand(9,r)}async setDataLengths(t,e,a){if(-1!=t.mosiDlenOffs){let s=t.regBase+t.mosiDlenOffs,i=t.regBase+t.misoDlenOffs;e>0&&await this.writeRegister(s,e-1),a>0&&await this.writeRegister(i,a-1)}else{let s=t.regBase+t.usr1Offs,i=(0==a?0:a-1)<<8|(0==e?0:e-1)<<17;await this.writeRegister(s,i)}}async waitDone(t,e){for(let a=0;a<10;a++){if(0==(await this.readRegister(t)&e))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(t,e,s=0){let i=k(this.getChipFamily()),r=i.regBase,n=r,h=r+i.usrOffs,l=r+i.usr2Offs,o=r+i.w0Offs,_=1<<18;if(s>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let d=8*e.length,f=await this.readRegister(h),u=await this.readRegister(l),c=1<<31;if(s>0&&(c|=268435456),d>0&&(c|=134217728),await this.setDataLengths(i,d,s),await this.writeRegister(h,c),await this.writeRegister(l,7<<28|t),0==d)await this.writeRegister(o,0);else{e.concat(new Array(e.length%4).fill(0));let t=Be("I".repeat(Math.floor(e.length/4)),e),s=o;this.logger.debug(`Words Length: ${t.length}`);for(const e of t)this.logger.debug(`Writing word ${a(e)} to register offset ${a(s)}`),await this.writeRegister(s,e),s+=4}await this.writeRegister(n,_),await this.waitDone(n,_);let g=await this.readRegister(o);return await this.writeRegister(h,f),await this.writeRegister(l,u),g}async detectFlashSize(){this.logger.log("Detecting Flash Size");let t=await this.flashId(),e=255&t,s=t>>16&255;this.logger.log(`FlashId: ${a(t)}`),this.logger.log(`Flash Manufacturer: ${e.toString(16)}`),this.logger.log(`Flash Device: ${(t>>8&255).toString(16)}${s.toString(16)}`),this.flashSize=i[s],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(t,e){let a=4096,s=Math.floor((e+a-1)/a),i=16-Math.floor(t/a)%16;return s<i&&(i=s),s<2*i?Math.floor((s+1)/2*a):(s-i)*a}async memBegin(t,e,a,s){return await this.checkCommand(5,Ae("<IIII",t,e,a,s))}async memBlock(t,e){return await this.checkCommand(7,Ae("<IIII",t.length,e,0,0).concat(t),this.checksum(t))}async memFinish(t=0){let e=this.IS_STUB?y:500,a=Ae("<II",0==t?1:0,t);return await this.checkCommand(6,a,0,e)}async runStub(){const t=await S(this.chipFamily);let e,a=2048;this.logger.log("Uploading stub...");for(let e of["text","data"])if(Object.keys(t).includes(e)){let s=t[e+"_start"],i=t[e].length,r=Math.floor((i+a-1)/a);await this.memBegin(i,r,a,s);for(let s of Array(r).keys()){let r=s*a,n=r+a;n>i&&(n=i),await this.memBlock(t[e].slice(r,n),s)}}this.logger.log("Running stub..."),await this.memFinish(t.entry);const s=await this.readPacket(500);if(e=String.fromCharCode(...s),"OHAI"!=e)throw new Error("Failed to start stub. Unexpected response: "+e);this.logger.log("Stub is now running...");const i=new Ce(this.port,this.logger,this);return await i.detectFlashSize(),i}async writeToStream(t){const e=this.port.writable.getWriter();await e.write(new Uint8Array(t));try{e.releaseLock()}catch(t){console.error("Ignoring release lock error",t)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(t=>{this._reader||t(void 0),this.addEventListener("disconnect",t,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class Ce extends Te{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(t,e,s,i){let r=await S(this.chipFamily),n=i,h=i+t;console.log(n,h),console.log(r.data_start,r.data.length,r.text_start,r.text.length);for(let[t,e]of[[r.data_start,r.data_start+r.data.length],[r.text_start,r.text_start+r.text.length]])if(n<e&&h>t)throw new Error("Software loader is resident at "+a(t,8)+"-"+a(e,8)+". Can't load binary at overlapping address range "+a(n,8)+"-"+a(h,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,b)}}const Pe=async t=>{const e=await navigator.serial.requestPort();return t.log("Connecting..."),await e.open({baudRate:r}),t.log("Connected successfully."),new Te(e,t)};export{l as CHIP_FAMILY_ESP32,d as CHIP_FAMILY_ESP32C2,f as CHIP_FAMILY_ESP32C3,u as CHIP_FAMILY_ESP32C5,c as CHIP_FAMILY_ESP32C6,g as CHIP_FAMILY_ESP32C61,m as CHIP_FAMILY_ESP32H2,w as CHIP_FAMILY_ESP32P4,o as CHIP_FAMILY_ESP32S2,_ as CHIP_FAMILY_ESP32S3,h as CHIP_FAMILY_ESP8266,Te as ESPLoader,Pe as connect};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tasmota-webserial-esptool",
3
- "version": "6.4.0",
3
+ "version": "6.4.1",
4
4
  "description": "Flash ESP devices using WebSerial",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
package/src/const.ts CHANGED
@@ -241,23 +241,27 @@ export const CHIP_DETECT_MAGIC_VALUES: ChipInfo = {
241
241
  0x00f01d83: { name: "ESP32", family: CHIP_FAMILY_ESP32 },
242
242
  0x000007c6: { name: "ESP32-S2", family: CHIP_FAMILY_ESP32S2 },
243
243
  0x9: { name: "ESP32-S3", family: CHIP_FAMILY_ESP32S3 },
244
+ 0x0c21e06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
244
245
  0x6f51306f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
245
246
  0x7c41a06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
246
- 0x0c21e06f: { name: "ESP32-C2", family: CHIP_FAMILY_ESP32C2 },
247
- 0x6921506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
248
247
  0x1b31506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
249
- 0x4881606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
250
248
  0x4361606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
249
+ 0x4881606f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
250
+ 0x6921506f: { name: "ESP32-C3", family: CHIP_FAMILY_ESP32C3 },
251
+ 0x1101406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
251
252
  0x5fd1406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
252
- 0x1101406F: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
253
- 0x63E1406F: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
254
- 0x5C501458: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
255
- 0xd7b73e80: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
253
+ 0x5c501458: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
254
+ 0x63e1406f: { name: "ESP32-C5", family: CHIP_FAMILY_ESP32C5 },
256
255
  0x2ce0806f: { name: "ESP32-C6", family: CHIP_FAMILY_ESP32C6 },
256
+ 0x2421606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
257
+ 0x33f0206f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
258
+ 0x4f81606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
257
259
  0x7211606f: { name: "ESP32-C61", family: CHIP_FAMILY_ESP32C61 },
258
- 0x0addbad0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
259
- 0x7039ad9: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
260
+ 0x97e30068: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
261
+ 0xd7b73e80: { name: "ESP32-H2", family: CHIP_FAMILY_ESP32H2 },
260
262
  0x0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
263
+ 0x7039ad9: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
264
+ 0x0addbad0: { name: "ESP32-P4", family: CHIP_FAMILY_ESP32P4 },
261
265
  };
262
266
 
263
267
  // Commands supported by ESP8266 ROM bootloader