@openclaw/whatsapp 2026.5.28 → 2026.5.31-beta.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.
Files changed (157) hide show
  1. package/dist/{access-control-Z0fYaWrx.js → access-control-C53zKYSN.js} +1 -1
  2. package/dist/{accounts-BMGM1RtF.js → accounts-DgViSyJx.js} +1 -0
  3. package/dist/{action-runtime-BdhkGtaP.js → action-runtime-Cyp5GNIT.js} +2 -2
  4. package/dist/action-runtime-api.js +1 -1
  5. package/dist/action-runtime.runtime.js +1 -1
  6. package/dist/api.js +9 -9
  7. package/dist/{approval-handler.runtime-C25wPeBf.js → approval-handler.runtime-BVmOu6x1.js} +1 -2
  8. package/dist/{auth-store-BrKb0mwT.js → auth-store-CZ22aNcV.js} +4 -2
  9. package/dist/{channel-D3y4A5Dd.js → channel-DA2BAIo5.js} +17 -64
  10. package/dist/channel-config-api.js +1 -1
  11. package/dist/channel-plugin-api.js +1 -1
  12. package/dist/{channel-react-action-Cd2qkLqp.js → channel-react-action-zvbaCnGe.js} +3 -3
  13. package/dist/{channel.runtime-C228XUjs.js → channel.runtime-Q1LZDB5s.js} +4 -4
  14. package/dist/{channel.setup-BJQyTUUP.js → channel.setup-DHXOo4h5.js} +2 -3
  15. package/dist/{config-schema-CsNDlDpL.js → config-schema-CROZuhT-.js} +16 -0
  16. package/dist/{connection-controller-mpPGmqGq.js → connection-controller-Bnm4INld.js} +2 -2
  17. package/dist/contract-api.js +1 -1
  18. package/dist/light-runtime-api.js +1 -1
  19. package/dist/{login-CE4UYnyO.js → login-2fuBM7Je.js} +4 -4
  20. package/dist/{login-qr-LBvhEes5.js → login-qr-B1o7GFy8.js} +10 -6
  21. package/dist/login-qr-runtime.js +1 -1
  22. package/dist/{monitor-Ccph7Y8M.js → monitor-BVRq04Dt.js} +36 -18
  23. package/dist/runtime-api.js +7 -7
  24. package/dist/{send-C4LG-Cl6.js → send-DSlVXKL_.js} +53 -41
  25. package/dist/{send-api-C66vkRl9.js → send-api-Bjn-h80j.js} +3 -2
  26. package/dist/{session-D8UW2Vbn.js → session-DyGWNClj.js} +1 -1
  27. package/dist/{setup-core-DpfT4K-2.js → setup-core-OvPMaAsx.js} +4 -4
  28. package/dist/{setup-finalize-CFnxX7la.js → setup-finalize-Dk23pfKc.js} +3 -3
  29. package/dist/setup-plugin-api.js +1 -1
  30. package/dist/{setup-surface-DRsmp0ZS.js → setup-surface-F-jVrH8u.js} +3 -3
  31. package/node_modules/@audio/decode-aac/LICENSE +9 -0
  32. package/node_modules/@audio/decode-aac/README.md +60 -0
  33. package/node_modules/@audio/decode-aac/decode-aac.d.ts +16 -0
  34. package/node_modules/@audio/decode-aac/decode-aac.js +391 -0
  35. package/node_modules/@audio/decode-aac/package.json +47 -0
  36. package/node_modules/@audio/decode-aac/src/aac.wasm.cjs +0 -0
  37. package/node_modules/@audio/decode-aiff/LICENSE +21 -0
  38. package/node_modules/@audio/decode-aiff/README.md +53 -0
  39. package/node_modules/@audio/decode-aiff/decode-aiff.d.ts +16 -0
  40. package/node_modules/@audio/decode-aiff/decode-aiff.js +583 -0
  41. package/node_modules/@audio/decode-aiff/package.json +42 -0
  42. package/node_modules/@audio/decode-amr/LICENSE +191 -0
  43. package/node_modules/@audio/decode-amr/README.md +65 -0
  44. package/node_modules/@audio/decode-amr/decode-amr.d.ts +16 -0
  45. package/node_modules/@audio/decode-amr/decode-amr.js +159 -0
  46. package/node_modules/@audio/decode-amr/package.json +48 -0
  47. package/node_modules/@audio/decode-amr/src/amr.wasm.cjs +0 -0
  48. package/node_modules/@audio/decode-caf/LICENSE +21 -0
  49. package/node_modules/@audio/decode-caf/README.md +55 -0
  50. package/node_modules/@audio/decode-caf/decode-caf.d.ts +16 -0
  51. package/node_modules/@audio/decode-caf/decode-caf.js +190 -0
  52. package/node_modules/@audio/decode-caf/package.json +43 -0
  53. package/node_modules/{audio-buffer → @audio/decode-flac}/LICENSE +5 -2
  54. package/node_modules/@audio/decode-flac/README.md +23 -0
  55. package/node_modules/@audio/decode-flac/decode-flac.d.ts +16 -0
  56. package/node_modules/@audio/decode-flac/decode-flac.js +2994 -0
  57. package/node_modules/@audio/decode-flac/meta.js +115 -0
  58. package/node_modules/@audio/decode-flac/package.json +49 -0
  59. package/node_modules/@audio/decode-mp3/LICENSE +25 -0
  60. package/node_modules/@audio/decode-mp3/README.md +23 -0
  61. package/node_modules/@audio/decode-mp3/decode-mp3.d.ts +16 -0
  62. package/node_modules/@audio/decode-mp3/decode-mp3.js +868 -0
  63. package/node_modules/@audio/decode-mp3/meta.js +143 -0
  64. package/node_modules/@audio/decode-mp3/package.json +50 -0
  65. package/node_modules/@audio/decode-opus/LICENSE +25 -0
  66. package/node_modules/@audio/decode-opus/README.md +23 -0
  67. package/node_modules/@audio/decode-opus/decode-opus.d.ts +16 -0
  68. package/node_modules/@audio/decode-opus/decode-opus.js +3179 -0
  69. package/node_modules/@audio/decode-opus/package.json +47 -0
  70. package/node_modules/@audio/decode-qoa/LICENSE +25 -0
  71. package/node_modules/@audio/decode-qoa/README.md +21 -0
  72. package/node_modules/@audio/decode-qoa/decode-qoa.d.ts +16 -0
  73. package/node_modules/@audio/decode-qoa/decode-qoa.js +278 -0
  74. package/node_modules/@audio/decode-qoa/package.json +46 -0
  75. package/node_modules/@audio/decode-vorbis/LICENSE +25 -0
  76. package/node_modules/@audio/decode-vorbis/README.md +23 -0
  77. package/node_modules/@audio/decode-vorbis/decode-vorbis.d.ts +16 -0
  78. package/node_modules/@audio/decode-vorbis/decode-vorbis.js +2984 -0
  79. package/node_modules/@audio/decode-vorbis/package.json +47 -0
  80. package/node_modules/@audio/decode-wav/decode-wav.js +104 -0
  81. package/node_modules/@audio/decode-wav/meta.js +114 -0
  82. package/node_modules/@audio/decode-wav/package.json +27 -0
  83. package/node_modules/@audio/decode-webm/LICENSE +21 -0
  84. package/node_modules/@audio/decode-webm/README.md +57 -0
  85. package/node_modules/@audio/decode-webm/decode-webm.d.ts +16 -0
  86. package/node_modules/@audio/decode-webm/decode-webm.js +3964 -0
  87. package/node_modules/@audio/decode-webm/package.json +51 -0
  88. package/node_modules/@audio/decode-wma/LICENSE +12 -0
  89. package/node_modules/@audio/decode-wma/README.md +76 -0
  90. package/node_modules/@audio/decode-wma/decode-wma.d.ts +33 -0
  91. package/node_modules/@audio/decode-wma/decode-wma.js +525 -0
  92. package/node_modules/@audio/decode-wma/package.json +47 -0
  93. package/node_modules/@audio/decode-wma/src/wma.wasm.cjs +0 -0
  94. package/node_modules/audio-decode/.claude/settings.json +204 -0
  95. package/node_modules/audio-decode/.github/workflows/test.js.yml +11 -20
  96. package/node_modules/audio-decode/.gitmodules +9 -0
  97. package/node_modules/audio-decode/audio-decode.d.ts +48 -10
  98. package/node_modules/audio-decode/audio-decode.js +193 -77
  99. package/node_modules/audio-decode/meta.js +11 -0
  100. package/node_modules/audio-decode/package.json +49 -21
  101. package/node_modules/audio-decode/readme.md +129 -29
  102. package/node_modules/audio-decode/stream.d.ts +15 -0
  103. package/node_modules/audio-decode/stream.js +1 -0
  104. package/node_modules/audio-decode/test.html +29 -10
  105. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +2 -2
  106. package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +1 -1
  107. package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +1 -1
  108. package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +1 -1
  109. package/node_modules/lru-cache/dist/commonjs/index.d.ts +2 -2
  110. package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -1
  111. package/node_modules/lru-cache/dist/commonjs/index.js.map +1 -1
  112. package/node_modules/lru-cache/dist/commonjs/index.min.js.map +1 -1
  113. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts +2 -2
  114. package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +1 -1
  115. package/node_modules/lru-cache/dist/commonjs/node/index.js.map +1 -1
  116. package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +1 -1
  117. package/node_modules/lru-cache/dist/esm/browser/index.d.ts +2 -2
  118. package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +1 -1
  119. package/node_modules/lru-cache/dist/esm/browser/index.js.map +1 -1
  120. package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +1 -1
  121. package/node_modules/lru-cache/dist/esm/index.d.ts +2 -2
  122. package/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -1
  123. package/node_modules/lru-cache/dist/esm/index.js.map +1 -1
  124. package/node_modules/lru-cache/dist/esm/index.min.js.map +1 -1
  125. package/node_modules/lru-cache/dist/esm/node/index.d.ts +2 -2
  126. package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +1 -1
  127. package/node_modules/lru-cache/dist/esm/node/index.js.map +1 -1
  128. package/node_modules/lru-cache/dist/esm/node/index.min.js.map +1 -1
  129. package/node_modules/lru-cache/package.json +1 -1
  130. package/node_modules/typebox/build/type/script/mapping.d.mts +5 -2
  131. package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
  132. package/node_modules/typebox/build/type/script/parser.d.mts +3 -1
  133. package/node_modules/typebox/build/type/script/parser.mjs +2 -1
  134. package/node_modules/typebox/package.json +29 -29
  135. package/npm-shrinkwrap.json +156 -39
  136. package/openclaw.plugin.json +76 -0
  137. package/package.json +6 -6
  138. package/node_modules/audio-buffer/.eslintrc.json +0 -44
  139. package/node_modules/audio-buffer/.github/workflows/node.js.yml +0 -31
  140. package/node_modules/audio-buffer/.travis.yml +0 -7
  141. package/node_modules/audio-buffer/index.js +0 -76
  142. package/node_modules/audio-buffer/package.json +0 -37
  143. package/node_modules/audio-buffer/readme.md +0 -56
  144. package/node_modules/audio-decode/.eslintrc.json +0 -43
  145. package/node_modules/audio-decode/.travis.yml +0 -13
  146. package/node_modules/audio-decode/tea.yaml +0 -6
  147. package/node_modules/audio-decode/test-case.js +0 -11
  148. package/node_modules/audio-decode/test.js +0 -107
  149. package/node_modules/node-wav/README.md +0 -35
  150. package/node_modules/node-wav/file.wav +0 -0
  151. package/node_modules/node-wav/index.js +0 -291
  152. package/node_modules/node-wav/package.json +0 -29
  153. package/node_modules/node-wav/tests/file1.wav +0 -0
  154. package/node_modules/node-wav/tests/test.js +0 -66
  155. package/node_modules/node-wav/x.js +0 -12
  156. package/node_modules/node-wav/x.json +0 -86702
  157. package/node_modules/node-wav/x.js~ +0 -13
@@ -0,0 +1,2994 @@
1
+ // ../../node_modules/simple-yenc/dist/esm.js
2
+ var t = (t2, n = 4294967295, e2 = 79764919) => {
3
+ const r = new Int32Array(256);
4
+ let o, s, i, c = n;
5
+ for (o = 0; o < 256; o++) {
6
+ for (i = o << 24, s = 8; s > 0; --s) i = 2147483648 & i ? i << 1 ^ e2 : i << 1;
7
+ r[o] = i;
8
+ }
9
+ for (o = 0; o < t2.length; o++) c = c << 8 ^ r[255 & (c >> 24 ^ t2[o])];
10
+ return c;
11
+ };
12
+ var e = (n, e2 = t) => {
13
+ const r = (t2) => new Uint8Array(t2.length / 2).map(((n2, e3) => parseInt(t2.substring(2 * e3, 2 * (e3 + 1)), 16))), o = (t2) => r(t2)[0], s = /* @__PURE__ */ new Map();
14
+ [, 8364, , 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249, 338, , 381, , , 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732, 8482, 353, 8250, 339, , 382, 376].forEach(((t2, n2) => s.set(t2, n2)));
15
+ const i = new Uint8Array(n.length);
16
+ let c, a, l, f = false, g = 0, h = 42, p = n.length > 13 && "dynEncode" === n.substring(0, 9), u = 0;
17
+ p && (u = 11, a = o(n.substring(9, u)), a <= 1 && (u += 2, h = o(n.substring(11, u))), 1 === a && (u += 8, l = ((t2) => new DataView(r(t2).buffer).getInt32(0, true))(n.substring(13, u))));
18
+ const d = 256 - h;
19
+ for (let t2 = u; t2 < n.length; t2++) if (c = n.charCodeAt(t2), 61 !== c || f) {
20
+ if (92 === c && t2 < n.length - 5 && p) {
21
+ const e3 = n.charCodeAt(t2 + 1);
22
+ 117 !== e3 && 85 !== e3 || (c = parseInt(n.substring(t2 + 2, t2 + 6), 16), t2 += 5);
23
+ }
24
+ if (c > 255) {
25
+ const t3 = s.get(c);
26
+ t3 && (c = t3 + 127);
27
+ }
28
+ f && (f = false, c -= 64), i[g++] = c < h && c > 0 ? c + d : c - h;
29
+ } else f = true;
30
+ const m = i.subarray(0, g);
31
+ if (p && 1 === a) {
32
+ const t2 = e2(m);
33
+ if (t2 !== l) {
34
+ const n2 = "Decode failed crc32 validation";
35
+ throw console.error("`simple-yenc`\n", n2 + "\n", "Expected: " + l + "; Got: " + t2 + "\n", "Visit https://github.com/eshaz/simple-yenc for more information"), Error(n2);
36
+ }
37
+ }
38
+ return m;
39
+ };
40
+
41
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js
42
+ function WASMAudioDecoderCommon() {
43
+ const uint8Array2 = Uint8Array;
44
+ const float32Array = Float32Array;
45
+ if (!WASMAudioDecoderCommon.modules) {
46
+ Object.defineProperties(WASMAudioDecoderCommon, {
47
+ modules: {
48
+ value: /* @__PURE__ */ new WeakMap()
49
+ },
50
+ setModule: {
51
+ value(Ref, module) {
52
+ WASMAudioDecoderCommon.modules.set(Ref, Promise.resolve(module));
53
+ }
54
+ },
55
+ getModule: {
56
+ value(Ref, wasmString) {
57
+ let module = WASMAudioDecoderCommon.modules.get(Ref);
58
+ if (!module) {
59
+ if (!wasmString) {
60
+ wasmString = Ref.wasm;
61
+ module = WASMAudioDecoderCommon.inflateDynEncodeString(
62
+ wasmString
63
+ ).then((data3) => WebAssembly.compile(data3));
64
+ } else {
65
+ module = WebAssembly.compile(e(wasmString));
66
+ }
67
+ WASMAudioDecoderCommon.modules.set(Ref, module);
68
+ }
69
+ return module;
70
+ }
71
+ },
72
+ concatFloat32: {
73
+ value(buffers, length2) {
74
+ let ret = new float32Array(length2), i = 0, offset = 0;
75
+ while (i < buffers.length) {
76
+ ret.set(buffers[i], offset);
77
+ offset += buffers[i++].length;
78
+ }
79
+ return ret;
80
+ }
81
+ },
82
+ getDecodedAudio: {
83
+ value: (errors, channelData, samplesDecoded, sampleRate2, bitDepth2) => ({
84
+ errors,
85
+ channelData,
86
+ samplesDecoded,
87
+ sampleRate: sampleRate2,
88
+ bitDepth: bitDepth2
89
+ })
90
+ },
91
+ getDecodedAudioMultiChannel: {
92
+ value(errors, input, channelsDecoded, samplesDecoded, sampleRate2, bitDepth2) {
93
+ let channelData = [], i, j;
94
+ for (i = 0; i < channelsDecoded; i++) {
95
+ const channel2 = [];
96
+ for (j = 0; j < input.length; ) channel2.push(input[j++][i] || []);
97
+ channelData.push(
98
+ WASMAudioDecoderCommon.concatFloat32(channel2, samplesDecoded)
99
+ );
100
+ }
101
+ return WASMAudioDecoderCommon.getDecodedAudio(
102
+ errors,
103
+ channelData,
104
+ samplesDecoded,
105
+ sampleRate2,
106
+ bitDepth2
107
+ );
108
+ }
109
+ },
110
+ /*
111
+ ******************
112
+ * Compression Code
113
+ ******************
114
+ */
115
+ inflateDynEncodeString: {
116
+ value(source) {
117
+ source = e(source);
118
+ return new Promise((resolve) => {
119
+ const puffString = String.raw`dynEncode012804c7886d(‰›•)((()>+ˆ*§§)§ˆ,§§§§)§ˆ+§§§)§+.-()(*)-+)(ˆ.7*§)i¸¸,3§(i¸¸,3/G+.••—š¡*(,˜ŽŽ(,3‡‡‰˜‡Š‰›+)2å:-œ),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)’^*<H,H(P*4’U((I-H(H*i0’J,^*DH+H-H*œšI+H,I*4)33H(H*H)“^*DH(H+H)^*@H+i§H)œi§›™3æ*).§K(iH“I/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)œ’J.H.W)(i)’c)(H,i)“I,H-i*’I-4)33i(I.*hH(V)(H+n5(H(i*’I-i(I,i)I.+hH,i*’J+iHn,hi(I-i*I,+hH,H/’H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)œ’J(H(V)(J(i)’c)(H)H(i)œ’H,c)(3H*i*’I*H,i)’I,4(3(-H(H,’W)(H-’I-H,i*’I,4)3(3(3H,H-’I1H+I,H.i)œH1V)(“J.i(v5(33H.-H(H,’i(c)(H,i*’I,4)333–)-§i*I*+§H*iHn,hiž73H,H(i)8(H+šJ+H)P*(H*’V)(J-“r,§H)P*,H.i)œ’H+H,“i)œ’V)(-H*i*’I*H+i)œI+H-H.’I.H,H-’i)œI,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7’H,c)(i)H+i´8’W)(œH,’I,H+i*’I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,’H-b((3H(P*0i)’I.4)3H-i¨*n5*H-iÅ*s,hiž73H-i)œJ+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)œJ+i¸7’V)(H(H+iø7’V)(8(’J/H(P*0J+s,hi73H+H,H.’J,’I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+’H.H+H/“’U((b((H(H(P*0i)’J+^*0H,i)“I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)žc)(H,i*’I,H+i)’I+4)33i)I-3H-3!2)0§K(i2“J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,’J(H,P*8J/s50H,H.i+’J0^*<i¦I*H.H,P*4J1’J.U(*H.U((J2›i')o5/H.U()I.H,H(^*<H0H1’U((H.i0œJ.i§›i0ži')™o5/H/H.H2šJ*H(’J.q50H,P*0J/H*’I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0’H(H1’U((b((H/i)’I/H(i)’I(H*i)“I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-’H(’i0c)(H(i*’I(4)33iè1i1H,i-’iÈ*8)Bi(I(+hH(ido,hH,i-’H(’i-c)(H(i*’I(4)33iÈ6iè6H,i-’iF8)BiØ1i)b((41-H,i-’H(’i/c)(H(i*’I(4)3(3(-H,i-’H(’i1c)(H(i*’I(4)3(3(-H,i-’H(’i0c)(H(i*’I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)’^*TH,H,iø-’^*PH,H,iX’^*LH,H,i(’^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iErš5)H(i©*’I1H-i)’I0i(i;H.i,’J(i(H(i(rCJ(“J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-’H-V)(i)œ’H,i+8(c)(H/i)“I/H-i*’I-H*i)’I*4)-H(i)œi¨1’I/+hH(H*o,hH,i-’H/V)(i)œ’i(c)(H/i*’I/H(i)’I(4)33i¤I*H,iø-’H,i¸)’H,i-’i;8)5+H0H1’I2i(I-+hH-H2p,hH,H,iP’8*J*i(p5-H*i7u,hH,i-’H-i)œ’H*c)(H-i)’I-4*3i(I/i+I.i+I(*h*h*hH*i8“6*(*)3H-m,hi£I*403H-i)œH,’W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.’J(H-’J.p,hi¢I*4.3H,i-’H-i)œ’I*+hH(,hH*H/c)(H*i*’I*H(i)“I(4)-H.I-4+3(3(33H,W)1m,hiŸI*4,3H,iø-’H,i¸)’H,i-’H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-’o5,3H,i(’H,iX’H,i-’H1i)œ’H08)J(,hi I*H(i(p5,H0H,V)šH,V)˜’o5,3H,H,iP’H,iH’8+I*4+3(3(3H,i$6i¬78+I*3H*H3šm5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2’L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(‹(›(«(Ë(ë( (*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7œ‰šœ‡Ž‰œš›*S7•œ‰Š”U”—Љ”›S0›‘–U œ`;
120
+ WASMAudioDecoderCommon.getModule(WASMAudioDecoderCommon, puffString).then((wasm) => WebAssembly.instantiate(wasm, {})).then(({ exports }) => {
121
+ const instanceExports = new Map(Object.entries(exports));
122
+ const puff = instanceExports.get("puff");
123
+ const memory = instanceExports.get("memory")["buffer"];
124
+ const dataArray = new uint8Array2(memory);
125
+ const heapView = new DataView(memory);
126
+ let heapPos = instanceExports.get("__heap_base");
127
+ const sourceLength = source.length;
128
+ const sourceLengthPtr = heapPos;
129
+ heapPos += 4;
130
+ heapView.setInt32(sourceLengthPtr, sourceLength, true);
131
+ const sourcePtr = heapPos;
132
+ heapPos += sourceLength;
133
+ dataArray.set(source, sourcePtr);
134
+ const destLengthPtr = heapPos;
135
+ heapPos += 4;
136
+ heapView.setInt32(
137
+ destLengthPtr,
138
+ dataArray.byteLength - heapPos,
139
+ true
140
+ );
141
+ puff(heapPos, destLengthPtr, sourcePtr, sourceLengthPtr);
142
+ resolve(
143
+ dataArray.slice(
144
+ heapPos,
145
+ heapPos + heapView.getInt32(destLengthPtr, true)
146
+ )
147
+ );
148
+ });
149
+ });
150
+ }
151
+ }
152
+ });
153
+ }
154
+ Object.defineProperty(this, "wasm", {
155
+ enumerable: true,
156
+ get: () => this._wasm
157
+ });
158
+ this.getOutputChannels = (outputData, channelsDecoded, samplesDecoded) => {
159
+ let output = [], i = 0;
160
+ while (i < channelsDecoded)
161
+ output.push(
162
+ outputData.slice(
163
+ i * samplesDecoded,
164
+ i++ * samplesDecoded + samplesDecoded
165
+ )
166
+ );
167
+ return output;
168
+ };
169
+ this.allocateTypedArray = (len, TypedArray, setPointer = true) => {
170
+ const ptr = this._wasm.malloc(TypedArray.BYTES_PER_ELEMENT * len);
171
+ if (setPointer) this._pointers.add(ptr);
172
+ return {
173
+ ptr,
174
+ len,
175
+ buf: new TypedArray(this._wasm.HEAP, ptr, len)
176
+ };
177
+ };
178
+ this.free = () => {
179
+ this._pointers.forEach((ptr) => {
180
+ this._wasm.free(ptr);
181
+ });
182
+ this._pointers.clear();
183
+ };
184
+ this.codeToString = (ptr) => {
185
+ const characters = [], heap = new Uint8Array(this._wasm.HEAP);
186
+ for (let character = heap[ptr]; character !== 0; character = heap[++ptr])
187
+ characters.push(character);
188
+ return String.fromCharCode.apply(null, characters);
189
+ };
190
+ this.addError = (errors, message, frameLength2, frameNumber2, inputBytes, outputSamples) => {
191
+ errors.push({
192
+ message,
193
+ frameLength: frameLength2,
194
+ frameNumber: frameNumber2,
195
+ inputBytes,
196
+ outputSamples
197
+ });
198
+ };
199
+ this.instantiate = (_EmscriptenWASM, _module) => {
200
+ if (_module) WASMAudioDecoderCommon.setModule(_EmscriptenWASM, _module);
201
+ this._wasm = new _EmscriptenWASM(WASMAudioDecoderCommon).instantiate();
202
+ this._pointers = /* @__PURE__ */ new Set();
203
+ return this._wasm.ready.then(() => this);
204
+ };
205
+ }
206
+
207
+ // ../_build/empty-worker.js
208
+ var empty_worker_default = null;
209
+
210
+ // ../../node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js
211
+ var getWorker = () => globalThis.Worker || empty_worker_default;
212
+ var WASMAudioDecoderWorker = class extends getWorker() {
213
+ constructor(options, name, Decoder2, EmscriptenWASM2) {
214
+ if (!WASMAudioDecoderCommon.modules) new WASMAudioDecoderCommon();
215
+ let source = WASMAudioDecoderCommon.modules.get(Decoder2);
216
+ if (!source) {
217
+ let type = "text/javascript", isNode, webworkerSourceCode = `'use strict';(${((_Decoder, _WASMAudioDecoderCommon, _EmscriptenWASM) => {
218
+ let decoder2, moduleResolve, modulePromise = new Promise((resolve) => {
219
+ moduleResolve = resolve;
220
+ });
221
+ self.onmessage = ({ data: { id, command, data: data3 } }) => {
222
+ let messagePromise = modulePromise, messagePayload = { id }, transferList;
223
+ if (command === "init") {
224
+ Object.defineProperties(_Decoder, {
225
+ WASMAudioDecoderCommon: { value: _WASMAudioDecoderCommon },
226
+ EmscriptenWASM: { value: _EmscriptenWASM },
227
+ module: { value: data3.module },
228
+ isWebWorker: { value: true }
229
+ });
230
+ decoder2 = new _Decoder(data3.options);
231
+ moduleResolve();
232
+ } else if (command === "free") {
233
+ decoder2.free();
234
+ } else if (command === "ready") {
235
+ messagePromise = messagePromise.then(() => decoder2.ready);
236
+ } else if (command === "reset") {
237
+ messagePromise = messagePromise.then(() => decoder2.reset());
238
+ } else {
239
+ Object.assign(
240
+ messagePayload,
241
+ decoder2[command](
242
+ // detach buffers
243
+ Array.isArray(data3) ? data3.map((data4) => new Uint8Array(data4)) : new Uint8Array(data3)
244
+ )
245
+ );
246
+ transferList = messagePayload.channelData ? messagePayload.channelData.map((channel2) => channel2.buffer) : [];
247
+ }
248
+ messagePromise.then(
249
+ () => self.postMessage(messagePayload, transferList)
250
+ );
251
+ };
252
+ }).toString()})(${Decoder2}, ${WASMAudioDecoderCommon}, ${EmscriptenWASM2})`;
253
+ try {
254
+ isNode = typeof process.versions.node !== "undefined";
255
+ } catch {
256
+ }
257
+ source = isNode ? `data:${type};base64,${Buffer.from(webworkerSourceCode).toString(
258
+ "base64"
259
+ )}` : URL.createObjectURL(new Blob([webworkerSourceCode], { type }));
260
+ WASMAudioDecoderCommon.modules.set(Decoder2, source);
261
+ }
262
+ super(source, { name });
263
+ this._id = Number.MIN_SAFE_INTEGER;
264
+ this._enqueuedOperations = /* @__PURE__ */ new Map();
265
+ this.onmessage = ({ data: data3 }) => {
266
+ const { id, ...rest } = data3;
267
+ this._enqueuedOperations.get(id)(rest);
268
+ this._enqueuedOperations.delete(id);
269
+ };
270
+ new EmscriptenWASM2(WASMAudioDecoderCommon).getModule().then((module) => {
271
+ this.postToDecoder("init", { module, options });
272
+ });
273
+ }
274
+ async postToDecoder(command, data3) {
275
+ return new Promise((resolve) => {
276
+ this.postMessage({
277
+ command,
278
+ id: this._id,
279
+ data: data3
280
+ });
281
+ this._enqueuedOperations.set(this._id++, resolve);
282
+ });
283
+ }
284
+ get ready() {
285
+ return this.postToDecoder("ready");
286
+ }
287
+ async free() {
288
+ await this.postToDecoder("free").finally(() => {
289
+ this.terminate();
290
+ });
291
+ }
292
+ async reset() {
293
+ await this.postToDecoder("reset");
294
+ }
295
+ };
296
+
297
+ // ../../node_modules/@wasm-audio-decoders/common/src/utilities.js
298
+ var assignNames = (Class, name) => {
299
+ Object.defineProperty(Class, "name", { value: name });
300
+ };
301
+
302
+ // ../../node_modules/codec-parser/src/constants.js
303
+ var symbol = Symbol;
304
+ var mappingJoin = ", ";
305
+ var channelMappings = (() => {
306
+ const front = "front";
307
+ const side = "side";
308
+ const rear = "rear";
309
+ const left = "left";
310
+ const center = "center";
311
+ const right = "right";
312
+ return ["", front + " ", side + " ", rear + " "].map(
313
+ (x) => [
314
+ [left, right],
315
+ [left, right, center],
316
+ [left, center, right],
317
+ [center, left, right],
318
+ [center]
319
+ ].flatMap((y) => y.map((z) => x + z).join(mappingJoin))
320
+ );
321
+ })();
322
+ var lfe = "LFE";
323
+ var monophonic = "monophonic (mono)";
324
+ var stereo = "stereo";
325
+ var surround = "surround";
326
+ var getChannelMapping = (channelCount, ...mappings) => `${[
327
+ monophonic,
328
+ stereo,
329
+ `linear ${surround}`,
330
+ "quadraphonic",
331
+ `5.0 ${surround}`,
332
+ `5.1 ${surround}`,
333
+ `6.1 ${surround}`,
334
+ `7.1 ${surround}`
335
+ ][channelCount - 1]} (${mappings.join(mappingJoin)})`;
336
+ var vorbisOpusChannelMapping = [
337
+ monophonic,
338
+ getChannelMapping(2, channelMappings[0][0]),
339
+ getChannelMapping(3, channelMappings[0][2]),
340
+ getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]),
341
+ getChannelMapping(5, channelMappings[1][2], channelMappings[3][0]),
342
+ getChannelMapping(6, channelMappings[1][2], channelMappings[3][0], lfe),
343
+ getChannelMapping(7, channelMappings[1][2], channelMappings[2][0], channelMappings[3][4], lfe),
344
+ getChannelMapping(8, channelMappings[1][2], channelMappings[2][0], channelMappings[3][0], lfe)
345
+ ];
346
+ var rate192000 = 192e3;
347
+ var rate176400 = 176400;
348
+ var rate96000 = 96e3;
349
+ var rate88200 = 88200;
350
+ var rate64000 = 64e3;
351
+ var rate48000 = 48e3;
352
+ var rate44100 = 44100;
353
+ var rate32000 = 32e3;
354
+ var rate24000 = 24e3;
355
+ var rate22050 = 22050;
356
+ var rate16000 = 16e3;
357
+ var rate12000 = 12e3;
358
+ var rate11025 = 11025;
359
+ var rate8000 = 8e3;
360
+ var rate7350 = 7350;
361
+ var absoluteGranulePosition = "absoluteGranulePosition";
362
+ var bandwidth = "bandwidth";
363
+ var bitDepth = "bitDepth";
364
+ var bitrate = "bitrate";
365
+ var bitrateMaximum = bitrate + "Maximum";
366
+ var bitrateMinimum = bitrate + "Minimum";
367
+ var bitrateNominal = bitrate + "Nominal";
368
+ var buffer = "buffer";
369
+ var bufferFullness = buffer + "Fullness";
370
+ var codec = "codec";
371
+ var codecFrames = codec + "Frames";
372
+ var coupledStreamCount = "coupledStreamCount";
373
+ var crc = "crc";
374
+ var crc16 = crc + "16";
375
+ var crc32 = crc + "32";
376
+ var data = "data";
377
+ var description = "description";
378
+ var duration = "duration";
379
+ var emphasis = "emphasis";
380
+ var hasOpusPadding = "hasOpusPadding";
381
+ var header = "header";
382
+ var isContinuedPacket = "isContinuedPacket";
383
+ var isCopyrighted = "isCopyrighted";
384
+ var isFirstPage = "isFirstPage";
385
+ var isHome = "isHome";
386
+ var isLastPage = "isLastPage";
387
+ var isOriginal = "isOriginal";
388
+ var isPrivate = "isPrivate";
389
+ var isVbr = "isVbr";
390
+ var layer = "layer";
391
+ var length = "length";
392
+ var mode = "mode";
393
+ var modeExtension = mode + "Extension";
394
+ var mpeg = "mpeg";
395
+ var mpegVersion = mpeg + "Version";
396
+ var numberAACFrames = "numberAACFrames";
397
+ var outputGain = "outputGain";
398
+ var preSkip = "preSkip";
399
+ var profile = "profile";
400
+ var profileBits = symbol();
401
+ var protection = "protection";
402
+ var rawData = "rawData";
403
+ var segments = "segments";
404
+ var subarray = "subarray";
405
+ var version = "version";
406
+ var vorbis = "vorbis";
407
+ var vorbisComments = vorbis + "Comments";
408
+ var vorbisSetup = vorbis + "Setup";
409
+ var block = "block";
410
+ var blockingStrategy = block + "ingStrategy";
411
+ var blockingStrategyBits = symbol();
412
+ var blockSize = block + "Size";
413
+ var blocksize0 = block + "size0";
414
+ var blocksize1 = block + "size1";
415
+ var blockSizeBits = symbol();
416
+ var channel = "channel";
417
+ var channelMappingFamily = channel + "MappingFamily";
418
+ var channelMappingTable = channel + "MappingTable";
419
+ var channelMode = channel + "Mode";
420
+ var channelModeBits = symbol();
421
+ var channels = channel + "s";
422
+ var copyright = "copyright";
423
+ var copyrightId = copyright + "Id";
424
+ var copyrightIdStart = copyright + "IdStart";
425
+ var frame = "frame";
426
+ var frameCount = frame + "Count";
427
+ var frameLength = frame + "Length";
428
+ var Number2 = "Number";
429
+ var frameNumber = frame + Number2;
430
+ var framePadding = frame + "Padding";
431
+ var frameSize = frame + "Size";
432
+ var Rate = "Rate";
433
+ var inputSampleRate = "inputSample" + Rate;
434
+ var page = "page";
435
+ var pageChecksum = page + "Checksum";
436
+ var pageSegmentBytes = symbol();
437
+ var pageSegmentTable = page + "SegmentTable";
438
+ var pageSequenceNumber = page + "Sequence" + Number2;
439
+ var sample = "sample";
440
+ var sampleNumber = sample + Number2;
441
+ var sampleRate = sample + Rate;
442
+ var sampleRateBits = symbol();
443
+ var samples = sample + "s";
444
+ var stream = "stream";
445
+ var streamCount = stream + "Count";
446
+ var streamInfo = stream + "Info";
447
+ var streamSerialNumber = stream + "Serial" + Number2;
448
+ var streamStructureVersion = stream + "StructureVersion";
449
+ var total = "total";
450
+ var totalBytesOut = total + "BytesOut";
451
+ var totalDuration = total + "Duration";
452
+ var totalSamples = total + "Samples";
453
+ var readRawData = symbol();
454
+ var incrementRawData = symbol();
455
+ var mapCodecFrameStats = symbol();
456
+ var mapFrameStats = symbol();
457
+ var logWarning = symbol();
458
+ var logError2 = symbol();
459
+ var syncFrame = symbol();
460
+ var fixedLengthFrameSync = symbol();
461
+ var getHeader = symbol();
462
+ var setHeader = symbol();
463
+ var getFrame = symbol();
464
+ var parseFrame = symbol();
465
+ var parseOggPage = symbol();
466
+ var checkCodecUpdate = symbol();
467
+ var reset = symbol();
468
+ var enable = symbol();
469
+ var getHeaderFromUint8Array = symbol();
470
+ var checkFrameFooterCrc16 = symbol();
471
+ var uint8Array = Uint8Array;
472
+ var dataView = DataView;
473
+ var reserved = "reserved";
474
+ var bad = "bad";
475
+ var free = "free";
476
+ var none = "none";
477
+ var sixteenBitCRC = "16bit CRC";
478
+
479
+ // ../../node_modules/codec-parser/src/utilities.js
480
+ var getCrcTable = (crcTable, crcInitialValueFunction, crcFunction) => {
481
+ for (let byte = 0; byte < crcTable[length]; byte++) {
482
+ let crc2 = crcInitialValueFunction(byte);
483
+ for (let bit = 8; bit > 0; bit--) crc2 = crcFunction(crc2);
484
+ crcTable[byte] = crc2;
485
+ }
486
+ return crcTable;
487
+ };
488
+ var crc8Table = getCrcTable(
489
+ new uint8Array(256),
490
+ (b) => b,
491
+ (crc2) => crc2 & 128 ? 7 ^ crc2 << 1 : crc2 << 1
492
+ );
493
+ var flacCrc16Table = [
494
+ getCrcTable(
495
+ new Uint16Array(256),
496
+ (b) => b << 8,
497
+ (crc2) => crc2 << 1 ^ (crc2 & 1 << 15 ? 32773 : 0)
498
+ )
499
+ ];
500
+ var crc32Table = [
501
+ getCrcTable(
502
+ new Uint32Array(256),
503
+ (b) => b,
504
+ (crc2) => crc2 >>> 1 ^ (crc2 & 1) * 3988292384
505
+ )
506
+ ];
507
+ for (let i = 0; i < 15; i++) {
508
+ flacCrc16Table.push(new Uint16Array(256));
509
+ crc32Table.push(new Uint32Array(256));
510
+ for (let j = 0; j <= 255; j++) {
511
+ flacCrc16Table[i + 1][j] = flacCrc16Table[0][flacCrc16Table[i][j] >>> 8] ^ flacCrc16Table[i][j] << 8;
512
+ crc32Table[i + 1][j] = crc32Table[i][j] >>> 8 ^ crc32Table[0][crc32Table[i][j] & 255];
513
+ }
514
+ }
515
+ var crc8 = (data3) => {
516
+ let crc2 = 0;
517
+ const dataLength = data3[length];
518
+ for (let i = 0; i !== dataLength; i++) crc2 = crc8Table[crc2 ^ data3[i]];
519
+ return crc2;
520
+ };
521
+ var flacCrc16 = (data3) => {
522
+ const dataLength = data3[length];
523
+ const crcChunkSize = dataLength - 16;
524
+ let crc2 = 0;
525
+ let i = 0;
526
+ while (i <= crcChunkSize) {
527
+ crc2 ^= data3[i++] << 8 | data3[i++];
528
+ crc2 = flacCrc16Table[15][crc2 >> 8] ^ flacCrc16Table[14][crc2 & 255] ^ flacCrc16Table[13][data3[i++]] ^ flacCrc16Table[12][data3[i++]] ^ flacCrc16Table[11][data3[i++]] ^ flacCrc16Table[10][data3[i++]] ^ flacCrc16Table[9][data3[i++]] ^ flacCrc16Table[8][data3[i++]] ^ flacCrc16Table[7][data3[i++]] ^ flacCrc16Table[6][data3[i++]] ^ flacCrc16Table[5][data3[i++]] ^ flacCrc16Table[4][data3[i++]] ^ flacCrc16Table[3][data3[i++]] ^ flacCrc16Table[2][data3[i++]] ^ flacCrc16Table[1][data3[i++]] ^ flacCrc16Table[0][data3[i++]];
529
+ }
530
+ while (i !== dataLength)
531
+ crc2 = (crc2 & 255) << 8 ^ flacCrc16Table[0][crc2 >> 8 ^ data3[i++]];
532
+ return crc2;
533
+ };
534
+ var crc32Function = (data3) => {
535
+ const dataLength = data3[length];
536
+ const crcChunkSize = dataLength - 16;
537
+ let crc2 = 0;
538
+ let i = 0;
539
+ while (i <= crcChunkSize)
540
+ crc2 = crc32Table[15][(data3[i++] ^ crc2) & 255] ^ crc32Table[14][(data3[i++] ^ crc2 >>> 8) & 255] ^ crc32Table[13][(data3[i++] ^ crc2 >>> 16) & 255] ^ crc32Table[12][data3[i++] ^ crc2 >>> 24] ^ crc32Table[11][data3[i++]] ^ crc32Table[10][data3[i++]] ^ crc32Table[9][data3[i++]] ^ crc32Table[8][data3[i++]] ^ crc32Table[7][data3[i++]] ^ crc32Table[6][data3[i++]] ^ crc32Table[5][data3[i++]] ^ crc32Table[4][data3[i++]] ^ crc32Table[3][data3[i++]] ^ crc32Table[2][data3[i++]] ^ crc32Table[1][data3[i++]] ^ crc32Table[0][data3[i++]];
541
+ while (i !== dataLength)
542
+ crc2 = crc32Table[0][(crc2 ^ data3[i++]) & 255] ^ crc2 >>> 8;
543
+ return crc2 ^ -1;
544
+ };
545
+ var concatBuffers = (...buffers) => {
546
+ const buffer2 = new uint8Array(
547
+ buffers.reduce((acc, buf) => acc + buf[length], 0)
548
+ );
549
+ buffers.reduce((offset, buf) => {
550
+ buffer2.set(buf, offset);
551
+ return offset + buf[length];
552
+ }, 0);
553
+ return buffer2;
554
+ };
555
+ var bytesToString = (bytes) => String.fromCharCode(...bytes);
556
+ var reverseTable = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];
557
+ var reverse = (val) => reverseTable[val & 15] << 4 | reverseTable[val >> 4];
558
+ var BitReader = class {
559
+ constructor(data3) {
560
+ this._data = data3;
561
+ this._pos = data3[length] * 8;
562
+ }
563
+ set position(position) {
564
+ this._pos = position;
565
+ }
566
+ get position() {
567
+ return this._pos;
568
+ }
569
+ read(bits) {
570
+ const byte = Math.floor(this._pos / 8);
571
+ const bit = this._pos % 8;
572
+ this._pos -= bits;
573
+ const window = (reverse(this._data[byte - 1]) << 8) + reverse(this._data[byte]);
574
+ return window >> 7 - bit & 255;
575
+ }
576
+ };
577
+ var readInt64le = (view, offset) => {
578
+ try {
579
+ return view.getBigInt64(offset, true);
580
+ } catch {
581
+ const sign = view.getUint8(offset + 7) & 128 ? -1 : 1;
582
+ let firstPart = view.getUint32(offset, true);
583
+ let secondPart = view.getUint32(offset + 4, true);
584
+ if (sign === -1) {
585
+ firstPart = ~firstPart + 1;
586
+ secondPart = ~secondPart + 1;
587
+ }
588
+ if (secondPart > 1048575) {
589
+ console.warn("This platform does not support BigInt");
590
+ }
591
+ return sign * (firstPart + secondPart * 2 ** 32);
592
+ }
593
+ };
594
+
595
+ // ../../node_modules/codec-parser/src/codecs/HeaderCache.js
596
+ var HeaderCache = class {
597
+ constructor(onCodecHeader, onCodecUpdate) {
598
+ this._onCodecHeader = onCodecHeader;
599
+ this._onCodecUpdate = onCodecUpdate;
600
+ this[reset]();
601
+ }
602
+ [enable]() {
603
+ this._isEnabled = true;
604
+ }
605
+ [reset]() {
606
+ this._headerCache = /* @__PURE__ */ new Map();
607
+ this._codecUpdateData = /* @__PURE__ */ new WeakMap();
608
+ this._codecHeaderSent = false;
609
+ this._codecShouldUpdate = false;
610
+ this._bitrate = null;
611
+ this._isEnabled = false;
612
+ }
613
+ [checkCodecUpdate](bitrate2, totalDuration2) {
614
+ if (this._onCodecUpdate) {
615
+ if (this._bitrate !== bitrate2) {
616
+ this._bitrate = bitrate2;
617
+ this._codecShouldUpdate = true;
618
+ }
619
+ const codecData = this._codecUpdateData.get(
620
+ this._headerCache.get(this._currentHeader)
621
+ );
622
+ if (this._codecShouldUpdate && codecData) {
623
+ this._onCodecUpdate(
624
+ {
625
+ bitrate: bitrate2,
626
+ ...codecData
627
+ },
628
+ totalDuration2
629
+ );
630
+ }
631
+ this._codecShouldUpdate = false;
632
+ }
633
+ }
634
+ [getHeader](key) {
635
+ const header2 = this._headerCache.get(key);
636
+ if (header2) {
637
+ this._updateCurrentHeader(key);
638
+ }
639
+ return header2;
640
+ }
641
+ [setHeader](key, header2, codecUpdateFields) {
642
+ if (this._isEnabled) {
643
+ if (!this._codecHeaderSent) {
644
+ this._onCodecHeader({ ...header2 });
645
+ this._codecHeaderSent = true;
646
+ }
647
+ this._updateCurrentHeader(key);
648
+ this._headerCache.set(key, header2);
649
+ this._codecUpdateData.set(header2, codecUpdateFields);
650
+ }
651
+ }
652
+ _updateCurrentHeader(key) {
653
+ if (this._onCodecUpdate && key !== this._currentHeader) {
654
+ this._codecShouldUpdate = true;
655
+ this._currentHeader = key;
656
+ }
657
+ }
658
+ };
659
+
660
+ // ../../node_modules/codec-parser/src/globals.js
661
+ var headerStore = /* @__PURE__ */ new WeakMap();
662
+ var frameStore = /* @__PURE__ */ new WeakMap();
663
+
664
+ // ../../node_modules/codec-parser/src/codecs/Parser.js
665
+ var Parser = class {
666
+ constructor(codecParser, headerCache) {
667
+ this._codecParser = codecParser;
668
+ this._headerCache = headerCache;
669
+ }
670
+ *[syncFrame]() {
671
+ let frameData;
672
+ do {
673
+ frameData = yield* this.Frame[getFrame](
674
+ this._codecParser,
675
+ this._headerCache,
676
+ 0
677
+ );
678
+ if (frameData) return frameData;
679
+ this._codecParser[incrementRawData](1);
680
+ } while (true);
681
+ }
682
+ /**
683
+ * @description Searches for Frames within bytes containing a sequence of known codec frames.
684
+ * @param {boolean} ignoreNextFrame Set to true to return frames even if the next frame may not exist at the expected location
685
+ * @returns {Frame}
686
+ */
687
+ *[fixedLengthFrameSync](ignoreNextFrame) {
688
+ let frameData = yield* this[syncFrame]();
689
+ const frameLength2 = frameStore.get(frameData)[length];
690
+ if (ignoreNextFrame || this._codecParser._flushing || // check if there is a frame right after this one
691
+ (yield* this.Header[getHeader](
692
+ this._codecParser,
693
+ this._headerCache,
694
+ frameLength2
695
+ ))) {
696
+ this._headerCache[enable]();
697
+ this._codecParser[incrementRawData](frameLength2);
698
+ this._codecParser[mapFrameStats](frameData);
699
+ return frameData;
700
+ }
701
+ this._codecParser[logWarning](
702
+ `Missing ${frame} at ${frameLength2} bytes from current position.`,
703
+ `Dropping current ${frame} and trying again.`
704
+ );
705
+ this._headerCache[reset]();
706
+ this._codecParser[incrementRawData](1);
707
+ }
708
+ };
709
+
710
+ // ../../node_modules/codec-parser/src/containers/Frame.js
711
+ var Frame = class {
712
+ constructor(headerValue, dataValue) {
713
+ frameStore.set(this, { [header]: headerValue });
714
+ this[data] = dataValue;
715
+ }
716
+ };
717
+
718
+ // ../../node_modules/codec-parser/src/codecs/CodecFrame.js
719
+ var CodecFrame = class extends Frame {
720
+ static *[getFrame](Header, Frame2, codecParser, headerCache, readOffset) {
721
+ const headerValue = yield* Header[getHeader](
722
+ codecParser,
723
+ headerCache,
724
+ readOffset
725
+ );
726
+ if (headerValue) {
727
+ const frameLengthValue = headerStore.get(headerValue)[frameLength];
728
+ const samplesValue = headerStore.get(headerValue)[samples];
729
+ const frame2 = (yield* codecParser[readRawData](
730
+ frameLengthValue,
731
+ readOffset
732
+ ))[subarray](0, frameLengthValue);
733
+ return new Frame2(headerValue, frame2, samplesValue);
734
+ } else {
735
+ return null;
736
+ }
737
+ }
738
+ constructor(headerValue, dataValue, samplesValue) {
739
+ super(headerValue, dataValue);
740
+ this[header] = headerValue;
741
+ this[samples] = samplesValue;
742
+ this[duration] = samplesValue / headerValue[sampleRate] * 1e3;
743
+ this[frameNumber] = null;
744
+ this[totalBytesOut] = null;
745
+ this[totalSamples] = null;
746
+ this[totalDuration] = null;
747
+ frameStore.get(this)[length] = dataValue[length];
748
+ }
749
+ };
750
+
751
+ // ../../node_modules/codec-parser/src/metadata/ID3v2.js
752
+ var unsynchronizationFlag = "unsynchronizationFlag";
753
+ var extendedHeaderFlag = "extendedHeaderFlag";
754
+ var experimentalFlag = "experimentalFlag";
755
+ var footerPresent = "footerPresent";
756
+ var ID3v2 = class _ID3v2 {
757
+ static *getID3v2Header(codecParser, headerCache, readOffset) {
758
+ const headerLength = 10;
759
+ const header2 = {};
760
+ let data3 = yield* codecParser[readRawData](3, readOffset);
761
+ if (data3[0] !== 73 || data3[1] !== 68 || data3[2] !== 51) return null;
762
+ data3 = yield* codecParser[readRawData](headerLength, readOffset);
763
+ header2[version] = `id3v2.${data3[3]}.${data3[4]}`;
764
+ if (data3[5] & 15) return null;
765
+ header2[unsynchronizationFlag] = !!(data3[5] & 128);
766
+ header2[extendedHeaderFlag] = !!(data3[5] & 64);
767
+ header2[experimentalFlag] = !!(data3[5] & 32);
768
+ header2[footerPresent] = !!(data3[5] & 16);
769
+ if (data3[6] & 128 || data3[7] & 128 || data3[8] & 128 || data3[9] & 128)
770
+ return null;
771
+ const dataLength = data3[6] << 21 | data3[7] << 14 | data3[8] << 7 | data3[9];
772
+ header2[length] = headerLength + dataLength;
773
+ return new _ID3v2(header2);
774
+ }
775
+ constructor(header2) {
776
+ this[version] = header2[version];
777
+ this[unsynchronizationFlag] = header2[unsynchronizationFlag];
778
+ this[extendedHeaderFlag] = header2[extendedHeaderFlag];
779
+ this[experimentalFlag] = header2[experimentalFlag];
780
+ this[footerPresent] = header2[footerPresent];
781
+ this[length] = header2[length];
782
+ }
783
+ };
784
+
785
+ // ../../node_modules/codec-parser/src/codecs/CodecHeader.js
786
+ var CodecHeader = class {
787
+ /**
788
+ * @private
789
+ */
790
+ constructor(header2) {
791
+ headerStore.set(this, header2);
792
+ this[bitDepth] = header2[bitDepth];
793
+ this[bitrate] = null;
794
+ this[channels] = header2[channels];
795
+ this[channelMode] = header2[channelMode];
796
+ this[sampleRate] = header2[sampleRate];
797
+ }
798
+ };
799
+
800
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGHeader.js
801
+ var bitrateMatrix = {
802
+ // bits | V1,L1 | V1,L2 | V1,L3 | V2,L1 | V2,L2 & L3
803
+ 0: [free, free, free, free, free],
804
+ 16: [32, 32, 32, 32, 8],
805
+ // 0b00100000: [64, 48, 40, 48, 16,],
806
+ // 0b00110000: [96, 56, 48, 56, 24,],
807
+ // 0b01000000: [128, 64, 56, 64, 32,],
808
+ // 0b01010000: [160, 80, 64, 80, 40,],
809
+ // 0b01100000: [192, 96, 80, 96, 48,],
810
+ // 0b01110000: [224, 112, 96, 112, 56,],
811
+ // 0b10000000: [256, 128, 112, 128, 64,],
812
+ // 0b10010000: [288, 160, 128, 144, 80,],
813
+ // 0b10100000: [320, 192, 160, 160, 96,],
814
+ // 0b10110000: [352, 224, 192, 176, 112,],
815
+ // 0b11000000: [384, 256, 224, 192, 128,],
816
+ // 0b11010000: [416, 320, 256, 224, 144,],
817
+ // 0b11100000: [448, 384, 320, 256, 160,],
818
+ 240: [bad, bad, bad, bad, bad]
819
+ };
820
+ var calcBitrate = (idx, interval, intervalOffset) => 8 * ((idx + intervalOffset) % interval + interval) * (1 << (idx + intervalOffset) / interval) - 8 * interval * (interval / 8 | 0);
821
+ for (let i = 2; i < 15; i++)
822
+ bitrateMatrix[i << 4] = [
823
+ i * 32,
824
+ // V1,L1
825
+ calcBitrate(i, 4, 0),
826
+ // V1,L2
827
+ calcBitrate(i, 4, -1),
828
+ // V1,L3
829
+ calcBitrate(i, 8, 4),
830
+ // V2,L1
831
+ calcBitrate(i, 8, 0)
832
+ // V2,L2 & L3
833
+ ];
834
+ var v1Layer1 = 0;
835
+ var v1Layer2 = 1;
836
+ var v1Layer3 = 2;
837
+ var v2Layer1 = 3;
838
+ var v2Layer23 = 4;
839
+ var bands = "bands ";
840
+ var to31 = " to 31";
841
+ var layer12ModeExtensions = {
842
+ 0: bands + 4 + to31,
843
+ 16: bands + 8 + to31,
844
+ 32: bands + 12 + to31,
845
+ 48: bands + 16 + to31
846
+ };
847
+ var bitrateIndex = "bitrateIndex";
848
+ var v2 = "v2";
849
+ var v1 = "v1";
850
+ var intensityStereo = "Intensity stereo ";
851
+ var msStereo = ", MS stereo ";
852
+ var on = "on";
853
+ var off = "off";
854
+ var layer3ModeExtensions = {
855
+ 0: intensityStereo + off + msStereo + off,
856
+ 16: intensityStereo + on + msStereo + off,
857
+ 32: intensityStereo + off + msStereo + on,
858
+ 48: intensityStereo + on + msStereo + on
859
+ };
860
+ var layersValues = {
861
+ 0: { [description]: reserved },
862
+ 2: {
863
+ [description]: "Layer III",
864
+ [framePadding]: 1,
865
+ [modeExtension]: layer3ModeExtensions,
866
+ [v1]: {
867
+ [bitrateIndex]: v1Layer3,
868
+ [samples]: 1152
869
+ },
870
+ [v2]: {
871
+ [bitrateIndex]: v2Layer23,
872
+ [samples]: 576
873
+ }
874
+ },
875
+ 4: {
876
+ [description]: "Layer II",
877
+ [framePadding]: 1,
878
+ [modeExtension]: layer12ModeExtensions,
879
+ [samples]: 1152,
880
+ [v1]: {
881
+ [bitrateIndex]: v1Layer2
882
+ },
883
+ [v2]: {
884
+ [bitrateIndex]: v2Layer23
885
+ }
886
+ },
887
+ 6: {
888
+ [description]: "Layer I",
889
+ [framePadding]: 4,
890
+ [modeExtension]: layer12ModeExtensions,
891
+ [samples]: 384,
892
+ [v1]: {
893
+ [bitrateIndex]: v1Layer1
894
+ },
895
+ [v2]: {
896
+ [bitrateIndex]: v2Layer1
897
+ }
898
+ }
899
+ };
900
+ var mpegVersionDescription = "MPEG Version ";
901
+ var isoIec = "ISO/IEC ";
902
+ var mpegVersions = {
903
+ 0: {
904
+ [description]: `${mpegVersionDescription}2.5 (later extension of MPEG 2)`,
905
+ [layer]: v2,
906
+ [sampleRate]: {
907
+ 0: rate11025,
908
+ 4: rate12000,
909
+ 8: rate8000,
910
+ 12: reserved
911
+ }
912
+ },
913
+ 8: { [description]: reserved },
914
+ 16: {
915
+ [description]: `${mpegVersionDescription}2 (${isoIec}13818-3)`,
916
+ [layer]: v2,
917
+ [sampleRate]: {
918
+ 0: rate22050,
919
+ 4: rate24000,
920
+ 8: rate16000,
921
+ 12: reserved
922
+ }
923
+ },
924
+ 24: {
925
+ [description]: `${mpegVersionDescription}1 (${isoIec}11172-3)`,
926
+ [layer]: v1,
927
+ [sampleRate]: {
928
+ 0: rate44100,
929
+ 4: rate48000,
930
+ 8: rate32000,
931
+ 12: reserved
932
+ }
933
+ },
934
+ length
935
+ };
936
+ var protectionValues = {
937
+ 0: sixteenBitCRC,
938
+ 1: none
939
+ };
940
+ var emphasisValues = {
941
+ 0: none,
942
+ 1: "50/15 ms",
943
+ 2: reserved,
944
+ 3: "CCIT J.17"
945
+ };
946
+ var channelModes = {
947
+ 0: { [channels]: 2, [description]: stereo },
948
+ 64: { [channels]: 2, [description]: "joint " + stereo },
949
+ 128: { [channels]: 2, [description]: "dual channel" },
950
+ 192: { [channels]: 1, [description]: monophonic }
951
+ };
952
+ var MPEGHeader = class _MPEGHeader extends CodecHeader {
953
+ static *[getHeader](codecParser, headerCache, readOffset) {
954
+ const header2 = {};
955
+ const id3v2Header = yield* ID3v2.getID3v2Header(
956
+ codecParser,
957
+ headerCache,
958
+ readOffset
959
+ );
960
+ if (id3v2Header) {
961
+ yield* codecParser[readRawData](id3v2Header[length], readOffset);
962
+ codecParser[incrementRawData](id3v2Header[length]);
963
+ }
964
+ const data3 = yield* codecParser[readRawData](4, readOffset);
965
+ const key = bytesToString(data3[subarray](0, 4));
966
+ const cachedHeader = headerCache[getHeader](key);
967
+ if (cachedHeader) return new _MPEGHeader(cachedHeader);
968
+ if (data3[0] !== 255 || data3[1] < 224) return null;
969
+ const mpegVersionValues2 = mpegVersions[data3[1] & 24];
970
+ if (mpegVersionValues2[description] === reserved) return null;
971
+ const layerBits = data3[1] & 6;
972
+ if (layersValues[layerBits][description] === reserved) return null;
973
+ const layerValues2 = {
974
+ ...layersValues[layerBits],
975
+ ...layersValues[layerBits][mpegVersionValues2[layer]]
976
+ };
977
+ header2[mpegVersion] = mpegVersionValues2[description];
978
+ header2[layer] = layerValues2[description];
979
+ header2[samples] = layerValues2[samples];
980
+ header2[protection] = protectionValues[data3[1] & 1];
981
+ header2[length] = 4;
982
+ header2[bitrate] = bitrateMatrix[data3[2] & 240][layerValues2[bitrateIndex]];
983
+ if (header2[bitrate] === bad) return null;
984
+ header2[sampleRate] = mpegVersionValues2[sampleRate][data3[2] & 12];
985
+ if (header2[sampleRate] === reserved) return null;
986
+ header2[framePadding] = data3[2] & 2 && layerValues2[framePadding];
987
+ header2[isPrivate] = !!(data3[2] & 1);
988
+ header2[frameLength] = Math.floor(
989
+ 125 * header2[bitrate] * header2[samples] / header2[sampleRate] + header2[framePadding]
990
+ );
991
+ if (!header2[frameLength]) return null;
992
+ const channelModeBits2 = data3[3] & 192;
993
+ header2[channelMode] = channelModes[channelModeBits2][description];
994
+ header2[channels] = channelModes[channelModeBits2][channels];
995
+ header2[modeExtension] = layerValues2[modeExtension][data3[3] & 48];
996
+ header2[isCopyrighted] = !!(data3[3] & 8);
997
+ header2[isOriginal] = !!(data3[3] & 4);
998
+ header2[emphasis] = emphasisValues[data3[3] & 3];
999
+ if (header2[emphasis] === reserved) return null;
1000
+ header2[bitDepth] = 16;
1001
+ {
1002
+ const { length: length2, frameLength: frameLength2, samples: samples2, ...codecUpdateFields } = header2;
1003
+ headerCache[setHeader](key, header2, codecUpdateFields);
1004
+ }
1005
+ return new _MPEGHeader(header2);
1006
+ }
1007
+ /**
1008
+ * @private
1009
+ * Call MPEGHeader.getHeader(Array<Uint8>) to get instance
1010
+ */
1011
+ constructor(header2) {
1012
+ super(header2);
1013
+ this[bitrate] = header2[bitrate];
1014
+ this[emphasis] = header2[emphasis];
1015
+ this[framePadding] = header2[framePadding];
1016
+ this[isCopyrighted] = header2[isCopyrighted];
1017
+ this[isOriginal] = header2[isOriginal];
1018
+ this[isPrivate] = header2[isPrivate];
1019
+ this[layer] = header2[layer];
1020
+ this[modeExtension] = header2[modeExtension];
1021
+ this[mpegVersion] = header2[mpegVersion];
1022
+ this[protection] = header2[protection];
1023
+ }
1024
+ };
1025
+
1026
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGFrame.js
1027
+ var MPEGFrame = class _MPEGFrame extends CodecFrame {
1028
+ static *[getFrame](codecParser, headerCache, readOffset) {
1029
+ return yield* super[getFrame](
1030
+ MPEGHeader,
1031
+ _MPEGFrame,
1032
+ codecParser,
1033
+ headerCache,
1034
+ readOffset
1035
+ );
1036
+ }
1037
+ constructor(header2, frame2, samples2) {
1038
+ super(header2, frame2, samples2);
1039
+ }
1040
+ };
1041
+
1042
+ // ../../node_modules/codec-parser/src/codecs/mpeg/MPEGParser.js
1043
+ var MPEGParser = class extends Parser {
1044
+ constructor(codecParser, headerCache, onCodec) {
1045
+ super(codecParser, headerCache);
1046
+ this.Frame = MPEGFrame;
1047
+ this.Header = MPEGHeader;
1048
+ onCodec(this[codec]);
1049
+ }
1050
+ get [codec]() {
1051
+ return mpeg;
1052
+ }
1053
+ *[parseFrame]() {
1054
+ return yield* this[fixedLengthFrameSync]();
1055
+ }
1056
+ };
1057
+
1058
+ // ../../node_modules/codec-parser/src/codecs/aac/AACHeader.js
1059
+ var mpegVersionValues = {
1060
+ 0: "MPEG-4",
1061
+ 8: "MPEG-2"
1062
+ };
1063
+ var layerValues = {
1064
+ 0: "valid",
1065
+ 2: bad,
1066
+ 4: bad,
1067
+ 6: bad
1068
+ };
1069
+ var protectionValues2 = {
1070
+ 0: sixteenBitCRC,
1071
+ 1: none
1072
+ };
1073
+ var profileValues = {
1074
+ 0: "AAC Main",
1075
+ 64: "AAC LC (Low Complexity)",
1076
+ 128: "AAC SSR (Scalable Sample Rate)",
1077
+ 192: "AAC LTP (Long Term Prediction)"
1078
+ };
1079
+ var sampleRates = {
1080
+ 0: rate96000,
1081
+ 4: rate88200,
1082
+ 8: rate64000,
1083
+ 12: rate48000,
1084
+ 16: rate44100,
1085
+ 20: rate32000,
1086
+ 24: rate24000,
1087
+ 28: rate22050,
1088
+ 32: rate16000,
1089
+ 36: rate12000,
1090
+ 40: rate11025,
1091
+ 44: rate8000,
1092
+ 48: rate7350,
1093
+ 52: reserved,
1094
+ 56: reserved,
1095
+ 60: "frequency is written explicitly"
1096
+ };
1097
+ var channelModeValues = {
1098
+ 0: { [channels]: 0, [description]: "Defined in AOT Specific Config" },
1099
+ /*
1100
+ 'monophonic (mono)'
1101
+ 'stereo (left, right)'
1102
+ 'linear surround (front center, front left, front right)'
1103
+ 'quadraphonic (front center, front left, front right, rear center)'
1104
+ '5.0 surround (front center, front left, front right, rear left, rear right)'
1105
+ '5.1 surround (front center, front left, front right, rear left, rear right, LFE)'
1106
+ '7.1 surround (front center, front left, front right, side left, side right, rear left, rear right, LFE)'
1107
+ */
1108
+ 64: { [channels]: 1, [description]: monophonic },
1109
+ 128: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1110
+ 192: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[1][3]) },
1111
+ 256: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][3], channelMappings[3][4]) },
1112
+ 320: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][3], channelMappings[3][0]) },
1113
+ 384: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][3], channelMappings[3][0], lfe) },
1114
+ 448: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][3], channelMappings[2][0], channelMappings[3][0], lfe) }
1115
+ };
1116
+ var AACHeader = class _AACHeader extends CodecHeader {
1117
+ static *[getHeader](codecParser, headerCache, readOffset) {
1118
+ const header2 = {};
1119
+ const data3 = yield* codecParser[readRawData](7, readOffset);
1120
+ const key = bytesToString([
1121
+ data3[0],
1122
+ data3[1],
1123
+ data3[2],
1124
+ data3[3] & 252 | data3[6] & 3
1125
+ // frame length, buffer fullness varies so don't cache it
1126
+ ]);
1127
+ const cachedHeader = headerCache[getHeader](key);
1128
+ if (!cachedHeader) {
1129
+ if (data3[0] !== 255 || data3[1] < 240) return null;
1130
+ header2[mpegVersion] = mpegVersionValues[data3[1] & 8];
1131
+ header2[layer] = layerValues[data3[1] & 6];
1132
+ if (header2[layer] === bad) return null;
1133
+ const protectionBit = data3[1] & 1;
1134
+ header2[protection] = protectionValues2[protectionBit];
1135
+ header2[length] = protectionBit ? 7 : 9;
1136
+ header2[profileBits] = data3[2] & 192;
1137
+ header2[sampleRateBits] = data3[2] & 60;
1138
+ const privateBit = data3[2] & 2;
1139
+ header2[profile] = profileValues[header2[profileBits]];
1140
+ header2[sampleRate] = sampleRates[header2[sampleRateBits]];
1141
+ if (header2[sampleRate] === reserved) return null;
1142
+ header2[isPrivate] = !!privateBit;
1143
+ header2[channelModeBits] = (data3[2] << 8 | data3[3]) & 448;
1144
+ header2[channelMode] = channelModeValues[header2[channelModeBits]][description];
1145
+ header2[channels] = channelModeValues[header2[channelModeBits]][channels];
1146
+ header2[isOriginal] = !!(data3[3] & 32);
1147
+ header2[isHome] = !!(data3[3] & 8);
1148
+ header2[copyrightId] = !!(data3[3] & 8);
1149
+ header2[copyrightIdStart] = !!(data3[3] & 4);
1150
+ header2[bitDepth] = 16;
1151
+ header2[samples] = 1024;
1152
+ header2[numberAACFrames] = data3[6] & 3;
1153
+ {
1154
+ const {
1155
+ length: length2,
1156
+ channelModeBits: channelModeBits2,
1157
+ profileBits: profileBits2,
1158
+ sampleRateBits: sampleRateBits2,
1159
+ frameLength: frameLength2,
1160
+ samples: samples2,
1161
+ numberAACFrames: numberAACFrames2,
1162
+ ...codecUpdateFields
1163
+ } = header2;
1164
+ headerCache[setHeader](key, header2, codecUpdateFields);
1165
+ }
1166
+ } else {
1167
+ Object.assign(header2, cachedHeader);
1168
+ }
1169
+ header2[frameLength] = (data3[3] << 11 | data3[4] << 3 | data3[5] >> 5) & 8191;
1170
+ if (!header2[frameLength]) return null;
1171
+ const bufferFullnessBits = (data3[5] << 6 | data3[6] >> 2) & 2047;
1172
+ header2[bufferFullness] = bufferFullnessBits === 2047 ? "VBR" : bufferFullnessBits;
1173
+ return new _AACHeader(header2);
1174
+ }
1175
+ /**
1176
+ * @private
1177
+ * Call AACHeader.getHeader(Array<Uint8>) to get instance
1178
+ */
1179
+ constructor(header2) {
1180
+ super(header2);
1181
+ this[copyrightId] = header2[copyrightId];
1182
+ this[copyrightIdStart] = header2[copyrightIdStart];
1183
+ this[bufferFullness] = header2[bufferFullness];
1184
+ this[isHome] = header2[isHome];
1185
+ this[isOriginal] = header2[isOriginal];
1186
+ this[isPrivate] = header2[isPrivate];
1187
+ this[layer] = header2[layer];
1188
+ this[length] = header2[length];
1189
+ this[mpegVersion] = header2[mpegVersion];
1190
+ this[numberAACFrames] = header2[numberAACFrames];
1191
+ this[profile] = header2[profile];
1192
+ this[protection] = header2[protection];
1193
+ }
1194
+ get audioSpecificConfig() {
1195
+ const header2 = headerStore.get(this);
1196
+ const audioSpecificConfig = header2[profileBits] + 64 << 5 | header2[sampleRateBits] << 5 | header2[channelModeBits] >> 3;
1197
+ const bytes = new uint8Array(2);
1198
+ new dataView(bytes[buffer]).setUint16(0, audioSpecificConfig, false);
1199
+ return bytes;
1200
+ }
1201
+ };
1202
+
1203
+ // ../../node_modules/codec-parser/src/codecs/aac/AACFrame.js
1204
+ var AACFrame = class _AACFrame extends CodecFrame {
1205
+ static *[getFrame](codecParser, headerCache, readOffset) {
1206
+ return yield* super[getFrame](
1207
+ AACHeader,
1208
+ _AACFrame,
1209
+ codecParser,
1210
+ headerCache,
1211
+ readOffset
1212
+ );
1213
+ }
1214
+ constructor(header2, frame2, samples2) {
1215
+ super(header2, frame2, samples2);
1216
+ }
1217
+ };
1218
+
1219
+ // ../../node_modules/codec-parser/src/codecs/aac/AACParser.js
1220
+ var AACParser = class extends Parser {
1221
+ constructor(codecParser, headerCache, onCodec) {
1222
+ super(codecParser, headerCache);
1223
+ this.Frame = AACFrame;
1224
+ this.Header = AACHeader;
1225
+ onCodec(this[codec]);
1226
+ }
1227
+ get [codec]() {
1228
+ return "aac";
1229
+ }
1230
+ *[parseFrame]() {
1231
+ return yield* this[fixedLengthFrameSync]();
1232
+ }
1233
+ };
1234
+
1235
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACFrame.js
1236
+ var FLACFrame = class _FLACFrame extends CodecFrame {
1237
+ static _getFrameFooterCrc16(data3) {
1238
+ return (data3[data3[length] - 2] << 8) + data3[data3[length] - 1];
1239
+ }
1240
+ // check frame footer crc
1241
+ // https://xiph.org/flac/format.html#frame_footer
1242
+ static [checkFrameFooterCrc16](data3) {
1243
+ const expectedCrc16 = _FLACFrame._getFrameFooterCrc16(data3);
1244
+ const actualCrc16 = flacCrc16(data3[subarray](0, -2));
1245
+ return expectedCrc16 === actualCrc16;
1246
+ }
1247
+ constructor(data3, header2, streamInfoValue) {
1248
+ header2[streamInfo] = streamInfoValue;
1249
+ header2[crc16] = _FLACFrame._getFrameFooterCrc16(data3);
1250
+ super(header2, data3, headerStore.get(header2)[samples]);
1251
+ }
1252
+ };
1253
+
1254
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACHeader.js
1255
+ var getFromStreamInfo = "get from STREAMINFO metadata block";
1256
+ var blockingStrategyValues = {
1257
+ 0: "Fixed",
1258
+ 1: "Variable"
1259
+ };
1260
+ var blockSizeValues = {
1261
+ 0: reserved,
1262
+ 16: 192
1263
+ // 0b00100000: 576,
1264
+ // 0b00110000: 1152,
1265
+ // 0b01000000: 2304,
1266
+ // 0b01010000: 4608,
1267
+ // 0b01100000: "8-bit (blocksize-1) from end of header",
1268
+ // 0b01110000: "16-bit (blocksize-1) from end of header",
1269
+ // 0b10000000: 256,
1270
+ // 0b10010000: 512,
1271
+ // 0b10100000: 1024,
1272
+ // 0b10110000: 2048,
1273
+ // 0b11000000: 4096,
1274
+ // 0b11010000: 8192,
1275
+ // 0b11100000: 16384,
1276
+ // 0b11110000: 32768,
1277
+ };
1278
+ for (let i = 2; i < 16; i++)
1279
+ blockSizeValues[i << 4] = i < 6 ? 576 * 2 ** (i - 2) : 2 ** i;
1280
+ var sampleRateValues = {
1281
+ 0: getFromStreamInfo,
1282
+ 1: rate88200,
1283
+ 2: rate176400,
1284
+ 3: rate192000,
1285
+ 4: rate8000,
1286
+ 5: rate16000,
1287
+ 6: rate22050,
1288
+ 7: rate24000,
1289
+ 8: rate32000,
1290
+ 9: rate44100,
1291
+ 10: rate48000,
1292
+ 11: rate96000,
1293
+ // 0b00001100: "8-bit sample rate (in kHz) from end of header",
1294
+ // 0b00001101: "16-bit sample rate (in Hz) from end of header",
1295
+ // 0b00001110: "16-bit sample rate (in tens of Hz) from end of header",
1296
+ 15: bad
1297
+ };
1298
+ var channelAssignments = {
1299
+ /*'
1300
+ 'monophonic (mono)'
1301
+ 'stereo (left, right)'
1302
+ 'linear surround (left, right, center)'
1303
+ 'quadraphonic (front left, front right, rear left, rear right)'
1304
+ '5.0 surround (front left, front right, front center, rear left, rear right)'
1305
+ '5.1 surround (front left, front right, front center, LFE, rear left, rear right)'
1306
+ '6.1 surround (front left, front right, front center, LFE, rear center, side left, side right)'
1307
+ '7.1 surround (front left, front right, front center, LFE, rear left, rear right, side left, side right)'
1308
+ */
1309
+ 0: { [channels]: 1, [description]: monophonic },
1310
+ 16: { [channels]: 2, [description]: getChannelMapping(2, channelMappings[0][0]) },
1311
+ 32: { [channels]: 3, [description]: getChannelMapping(3, channelMappings[0][1]) },
1312
+ 48: { [channels]: 4, [description]: getChannelMapping(4, channelMappings[1][0], channelMappings[3][0]) },
1313
+ 64: { [channels]: 5, [description]: getChannelMapping(5, channelMappings[1][1], channelMappings[3][0]) },
1314
+ 80: { [channels]: 6, [description]: getChannelMapping(6, channelMappings[1][1], lfe, channelMappings[3][0]) },
1315
+ 96: { [channels]: 7, [description]: getChannelMapping(7, channelMappings[1][1], lfe, channelMappings[3][4], channelMappings[2][0]) },
1316
+ 112: { [channels]: 8, [description]: getChannelMapping(8, channelMappings[1][1], lfe, channelMappings[3][0], channelMappings[2][0]) },
1317
+ 128: { [channels]: 2, [description]: `${stereo} (left, diff)` },
1318
+ 144: { [channels]: 2, [description]: `${stereo} (diff, right)` },
1319
+ 160: { [channels]: 2, [description]: `${stereo} (avg, diff)` },
1320
+ 176: reserved,
1321
+ 192: reserved,
1322
+ 208: reserved,
1323
+ 224: reserved,
1324
+ 240: reserved
1325
+ };
1326
+ var bitDepthValues = {
1327
+ 0: getFromStreamInfo,
1328
+ 2: 8,
1329
+ 4: 12,
1330
+ 6: reserved,
1331
+ 8: 16,
1332
+ 10: 20,
1333
+ 12: 24,
1334
+ 14: reserved
1335
+ };
1336
+ var FLACHeader = class _FLACHeader extends CodecHeader {
1337
+ // https://datatracker.ietf.org/doc/html/rfc3629#section-3
1338
+ // Char. number range | UTF-8 octet sequence
1339
+ // (hexadecimal) | (binary)
1340
+ // --------------------+---------------------------------------------
1341
+ // 0000 0000-0000 007F | 0xxxxxxx
1342
+ // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
1343
+ // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
1344
+ // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
1345
+ static _decodeUTF8Int(data3) {
1346
+ if (data3[0] > 254) {
1347
+ return null;
1348
+ }
1349
+ if (data3[0] < 128) return { value: data3[0], length: 1 };
1350
+ let length2 = 1;
1351
+ for (let zeroMask = 64; zeroMask & data3[0]; zeroMask >>= 1) length2++;
1352
+ let idx = length2 - 1, value = 0, shift = 0;
1353
+ for (; idx > 0; shift += 6, idx--) {
1354
+ if ((data3[idx] & 192) !== 128) {
1355
+ return null;
1356
+ }
1357
+ value |= (data3[idx] & 63) << shift;
1358
+ }
1359
+ value |= (data3[idx] & 127 >> length2) << shift;
1360
+ return { value, length: length2 };
1361
+ }
1362
+ static [getHeaderFromUint8Array](data3, headerCache) {
1363
+ const codecParserStub = {
1364
+ [readRawData]: function* () {
1365
+ return data3;
1366
+ }
1367
+ };
1368
+ return _FLACHeader[getHeader](codecParserStub, headerCache, 0).next().value;
1369
+ }
1370
+ static *[getHeader](codecParser, headerCache, readOffset) {
1371
+ let data3 = yield* codecParser[readRawData](6, readOffset);
1372
+ if (data3[0] !== 255 || !(data3[1] === 248 || data3[1] === 249)) {
1373
+ return null;
1374
+ }
1375
+ const header2 = {};
1376
+ const key = bytesToString(data3[subarray](0, 4));
1377
+ const cachedHeader = headerCache[getHeader](key);
1378
+ if (!cachedHeader) {
1379
+ header2[blockingStrategyBits] = data3[1] & 1;
1380
+ header2[blockingStrategy] = blockingStrategyValues[header2[blockingStrategyBits]];
1381
+ header2[blockSizeBits] = data3[2] & 240;
1382
+ header2[sampleRateBits] = data3[2] & 15;
1383
+ header2[blockSize] = blockSizeValues[header2[blockSizeBits]];
1384
+ if (header2[blockSize] === reserved) {
1385
+ return null;
1386
+ }
1387
+ header2[sampleRate] = sampleRateValues[header2[sampleRateBits]];
1388
+ if (header2[sampleRate] === bad) {
1389
+ return null;
1390
+ }
1391
+ if (data3[3] & 1) {
1392
+ return null;
1393
+ }
1394
+ const channelAssignment = channelAssignments[data3[3] & 240];
1395
+ if (channelAssignment === reserved) {
1396
+ return null;
1397
+ }
1398
+ header2[channels] = channelAssignment[channels];
1399
+ header2[channelMode] = channelAssignment[description];
1400
+ header2[bitDepth] = bitDepthValues[data3[3] & 14];
1401
+ if (header2[bitDepth] === reserved) {
1402
+ return null;
1403
+ }
1404
+ } else {
1405
+ Object.assign(header2, cachedHeader);
1406
+ }
1407
+ header2[length] = 5;
1408
+ data3 = yield* codecParser[readRawData](header2[length] + 8, readOffset);
1409
+ const decodedUtf8 = _FLACHeader._decodeUTF8Int(data3[subarray](4));
1410
+ if (!decodedUtf8) {
1411
+ return null;
1412
+ }
1413
+ if (header2[blockingStrategyBits]) {
1414
+ header2[sampleNumber] = decodedUtf8.value;
1415
+ } else {
1416
+ header2[frameNumber] = decodedUtf8.value;
1417
+ }
1418
+ header2[length] += decodedUtf8[length];
1419
+ if (header2[blockSizeBits] === 96) {
1420
+ if (data3[length] < header2[length])
1421
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1422
+ header2[blockSize] = data3[header2[length] - 1] + 1;
1423
+ header2[length] += 1;
1424
+ } else if (header2[blockSizeBits] === 112) {
1425
+ if (data3[length] < header2[length])
1426
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1427
+ header2[blockSize] = (data3[header2[length] - 1] << 8) + data3[header2[length]] + 1;
1428
+ header2[length] += 2;
1429
+ }
1430
+ header2[samples] = header2[blockSize];
1431
+ if (header2[sampleRateBits] === 12) {
1432
+ if (data3[length] < header2[length])
1433
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1434
+ header2[sampleRate] = data3[header2[length] - 1] * 1e3;
1435
+ header2[length] += 1;
1436
+ } else if (header2[sampleRateBits] === 13) {
1437
+ if (data3[length] < header2[length])
1438
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1439
+ header2[sampleRate] = (data3[header2[length] - 1] << 8) + data3[header2[length]];
1440
+ header2[length] += 2;
1441
+ } else if (header2[sampleRateBits] === 14) {
1442
+ if (data3[length] < header2[length])
1443
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1444
+ header2[sampleRate] = ((data3[header2[length] - 1] << 8) + data3[header2[length]]) * 10;
1445
+ header2[length] += 2;
1446
+ }
1447
+ if (data3[length] < header2[length])
1448
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1449
+ header2[crc] = data3[header2[length] - 1];
1450
+ if (header2[crc] !== crc8(data3[subarray](0, header2[length] - 1))) {
1451
+ return null;
1452
+ }
1453
+ {
1454
+ if (!cachedHeader) {
1455
+ const {
1456
+ blockingStrategyBits: blockingStrategyBits2,
1457
+ frameNumber: frameNumber2,
1458
+ sampleNumber: sampleNumber2,
1459
+ samples: samples2,
1460
+ sampleRateBits: sampleRateBits2,
1461
+ blockSizeBits: blockSizeBits2,
1462
+ crc: crc2,
1463
+ length: length2,
1464
+ ...codecUpdateFields
1465
+ } = header2;
1466
+ headerCache[setHeader](key, header2, codecUpdateFields);
1467
+ }
1468
+ }
1469
+ return new _FLACHeader(header2);
1470
+ }
1471
+ /**
1472
+ * @private
1473
+ * Call FLACHeader.getHeader(Array<Uint8>) to get instance
1474
+ */
1475
+ constructor(header2) {
1476
+ super(header2);
1477
+ this[crc16] = null;
1478
+ this[blockingStrategy] = header2[blockingStrategy];
1479
+ this[blockSize] = header2[blockSize];
1480
+ this[frameNumber] = header2[frameNumber];
1481
+ this[sampleNumber] = header2[sampleNumber];
1482
+ this[streamInfo] = null;
1483
+ }
1484
+ };
1485
+
1486
+ // ../../node_modules/codec-parser/src/codecs/flac/FLACParser.js
1487
+ var MIN_FLAC_FRAME_SIZE = 2;
1488
+ var MAX_FLAC_FRAME_SIZE = 512 * 1024;
1489
+ var FLACParser = class extends Parser {
1490
+ constructor(codecParser, headerCache, onCodec) {
1491
+ super(codecParser, headerCache);
1492
+ this.Frame = FLACFrame;
1493
+ this.Header = FLACHeader;
1494
+ onCodec(this[codec]);
1495
+ }
1496
+ get [codec]() {
1497
+ return "flac";
1498
+ }
1499
+ *_getNextFrameSyncOffset(offset) {
1500
+ const data3 = yield* this._codecParser[readRawData](2, 0);
1501
+ const dataLength = data3[length] - 2;
1502
+ while (offset < dataLength) {
1503
+ const firstByte = data3[offset];
1504
+ if (firstByte === 255) {
1505
+ const secondByte = data3[offset + 1];
1506
+ if (secondByte === 248 || secondByte === 249) break;
1507
+ if (secondByte !== 255) offset++;
1508
+ }
1509
+ offset++;
1510
+ }
1511
+ return offset;
1512
+ }
1513
+ *[parseFrame]() {
1514
+ do {
1515
+ const header2 = yield* FLACHeader[getHeader](
1516
+ this._codecParser,
1517
+ this._headerCache,
1518
+ 0
1519
+ );
1520
+ if (header2) {
1521
+ let nextHeaderOffset = headerStore.get(header2)[length] + MIN_FLAC_FRAME_SIZE;
1522
+ while (nextHeaderOffset <= MAX_FLAC_FRAME_SIZE) {
1523
+ if (this._codecParser._flushing || (yield* FLACHeader[getHeader](
1524
+ this._codecParser,
1525
+ this._headerCache,
1526
+ nextHeaderOffset
1527
+ ))) {
1528
+ let frameData = yield* this._codecParser[readRawData](nextHeaderOffset);
1529
+ if (!this._codecParser._flushing)
1530
+ frameData = frameData[subarray](0, nextHeaderOffset);
1531
+ if (FLACFrame[checkFrameFooterCrc16](frameData)) {
1532
+ const frame2 = new FLACFrame(frameData, header2);
1533
+ this._headerCache[enable]();
1534
+ this._codecParser[incrementRawData](nextHeaderOffset);
1535
+ this._codecParser[mapFrameStats](frame2);
1536
+ return frame2;
1537
+ }
1538
+ }
1539
+ nextHeaderOffset = yield* this._getNextFrameSyncOffset(
1540
+ nextHeaderOffset + 1
1541
+ );
1542
+ }
1543
+ this._codecParser[logWarning](
1544
+ `Unable to sync FLAC frame after searching ${nextHeaderOffset} bytes.`
1545
+ );
1546
+ this._codecParser[incrementRawData](nextHeaderOffset);
1547
+ } else {
1548
+ this._codecParser[incrementRawData](
1549
+ yield* this._getNextFrameSyncOffset(1)
1550
+ );
1551
+ }
1552
+ } while (true);
1553
+ }
1554
+ [parseOggPage](oggPage) {
1555
+ if (oggPage[pageSequenceNumber] === 0) {
1556
+ this._headerCache[enable]();
1557
+ this._streamInfo = oggPage[data][subarray](13);
1558
+ } else if (oggPage[pageSequenceNumber] === 1) {
1559
+ } else {
1560
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
1561
+ const header2 = FLACHeader[getHeaderFromUint8Array](
1562
+ segment,
1563
+ this._headerCache
1564
+ );
1565
+ if (header2) {
1566
+ return new FLACFrame(segment, header2, this._streamInfo);
1567
+ } else {
1568
+ this._codecParser[logWarning](
1569
+ "Failed to parse Ogg FLAC frame",
1570
+ "Skipping invalid FLAC frame"
1571
+ );
1572
+ }
1573
+ }).filter((frame2) => !!frame2);
1574
+ }
1575
+ return oggPage;
1576
+ }
1577
+ };
1578
+
1579
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPageHeader.js
1580
+ var OggPageHeader = class _OggPageHeader {
1581
+ static *[getHeader](codecParser, headerCache, readOffset) {
1582
+ const header2 = {};
1583
+ let data3 = yield* codecParser[readRawData](28, readOffset);
1584
+ if (data3[0] !== 79 || // O
1585
+ data3[1] !== 103 || // g
1586
+ data3[2] !== 103 || // g
1587
+ data3[3] !== 83) {
1588
+ return null;
1589
+ }
1590
+ header2[streamStructureVersion] = data3[4];
1591
+ const zeros = data3[5] & 248;
1592
+ if (zeros) return null;
1593
+ header2[isLastPage] = !!(data3[5] & 4);
1594
+ header2[isFirstPage] = !!(data3[5] & 2);
1595
+ header2[isContinuedPacket] = !!(data3[5] & 1);
1596
+ const view = new dataView(uint8Array.from(data3[subarray](0, 28))[buffer]);
1597
+ header2[absoluteGranulePosition] = readInt64le(view, 6);
1598
+ header2[streamSerialNumber] = view.getInt32(14, true);
1599
+ header2[pageSequenceNumber] = view.getInt32(18, true);
1600
+ header2[pageChecksum] = view.getInt32(22, true);
1601
+ const pageSegmentTableLength = data3[26];
1602
+ header2[length] = pageSegmentTableLength + 27;
1603
+ data3 = yield* codecParser[readRawData](header2[length], readOffset);
1604
+ header2[frameLength] = 0;
1605
+ header2[pageSegmentTable] = [];
1606
+ header2[pageSegmentBytes] = uint8Array.from(
1607
+ data3[subarray](27, header2[length])
1608
+ );
1609
+ for (let i = 0, segmentLength = 0; i < pageSegmentTableLength; i++) {
1610
+ const segmentByte = header2[pageSegmentBytes][i];
1611
+ header2[frameLength] += segmentByte;
1612
+ segmentLength += segmentByte;
1613
+ if (segmentByte !== 255 || i === pageSegmentTableLength - 1) {
1614
+ header2[pageSegmentTable].push(segmentLength);
1615
+ segmentLength = 0;
1616
+ }
1617
+ }
1618
+ return new _OggPageHeader(header2);
1619
+ }
1620
+ /**
1621
+ * @private
1622
+ * Call OggPageHeader.getHeader(Array<Uint8>) to get instance
1623
+ */
1624
+ constructor(header2) {
1625
+ headerStore.set(this, header2);
1626
+ this[absoluteGranulePosition] = header2[absoluteGranulePosition];
1627
+ this[isContinuedPacket] = header2[isContinuedPacket];
1628
+ this[isFirstPage] = header2[isFirstPage];
1629
+ this[isLastPage] = header2[isLastPage];
1630
+ this[pageSegmentTable] = header2[pageSegmentTable];
1631
+ this[pageSequenceNumber] = header2[pageSequenceNumber];
1632
+ this[pageChecksum] = header2[pageChecksum];
1633
+ this[streamSerialNumber] = header2[streamSerialNumber];
1634
+ }
1635
+ };
1636
+
1637
+ // ../../node_modules/codec-parser/src/containers/ogg/OggPage.js
1638
+ var OggPage = class _OggPage extends Frame {
1639
+ static *[getFrame](codecParser, headerCache, readOffset) {
1640
+ const header2 = yield* OggPageHeader[getHeader](
1641
+ codecParser,
1642
+ headerCache,
1643
+ readOffset
1644
+ );
1645
+ if (header2) {
1646
+ const frameLengthValue = headerStore.get(header2)[frameLength];
1647
+ const headerLength = headerStore.get(header2)[length];
1648
+ const totalLength = headerLength + frameLengthValue;
1649
+ const rawDataValue = (yield* codecParser[readRawData](totalLength, 0))[subarray](0, totalLength);
1650
+ const frame2 = rawDataValue[subarray](headerLength, totalLength);
1651
+ return new _OggPage(header2, frame2, rawDataValue);
1652
+ } else {
1653
+ return null;
1654
+ }
1655
+ }
1656
+ constructor(header2, frame2, rawDataValue) {
1657
+ super(header2, frame2);
1658
+ frameStore.get(this)[length] = rawDataValue[length];
1659
+ this[codecFrames] = [];
1660
+ this[rawData] = rawDataValue;
1661
+ this[absoluteGranulePosition] = header2[absoluteGranulePosition];
1662
+ this[crc32] = header2[pageChecksum];
1663
+ this[duration] = 0;
1664
+ this[isContinuedPacket] = header2[isContinuedPacket];
1665
+ this[isFirstPage] = header2[isFirstPage];
1666
+ this[isLastPage] = header2[isLastPage];
1667
+ this[pageSequenceNumber] = header2[pageSequenceNumber];
1668
+ this[samples] = 0;
1669
+ this[streamSerialNumber] = header2[streamSerialNumber];
1670
+ }
1671
+ };
1672
+
1673
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusFrame.js
1674
+ var OpusFrame = class extends CodecFrame {
1675
+ constructor(data3, header2, samples2) {
1676
+ super(header2, data3, samples2);
1677
+ }
1678
+ };
1679
+
1680
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusHeader.js
1681
+ var channelMappingFamilies = {
1682
+ 0: vorbisOpusChannelMapping.slice(0, 2),
1683
+ /*
1684
+ 0: "monophonic (mono)"
1685
+ 1: "stereo (left, right)"
1686
+ */
1687
+ 1: vorbisOpusChannelMapping
1688
+ /*
1689
+ 0: "monophonic (mono)"
1690
+ 1: "stereo (left, right)"
1691
+ 2: "linear surround (left, center, right)"
1692
+ 3: "quadraphonic (front left, front right, rear left, rear right)"
1693
+ 4: "5.0 surround (front left, front center, front right, rear left, rear right)"
1694
+ 5: "5.1 surround (front left, front center, front right, rear left, rear right, LFE)"
1695
+ 6: "6.1 surround (front left, front center, front right, side left, side right, rear center, LFE)"
1696
+ 7: "7.1 surround (front left, front center, front right, side left, side right, rear left, rear right, LFE)"
1697
+ */
1698
+ // additional channel mappings are user defined
1699
+ };
1700
+ var silkOnly = "SILK-only";
1701
+ var celtOnly = "CELT-only";
1702
+ var hybrid = "Hybrid";
1703
+ var narrowBand = "narrowband";
1704
+ var mediumBand = "medium-band";
1705
+ var wideBand = "wideband";
1706
+ var superWideBand = "super-wideband";
1707
+ var fullBand = "fullband";
1708
+ var configTable = {
1709
+ 0: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
1710
+ 8: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
1711
+ 16: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 40 },
1712
+ 24: { [mode]: silkOnly, [bandwidth]: narrowBand, [frameSize]: 60 },
1713
+ 32: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 10 },
1714
+ 40: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 20 },
1715
+ 48: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 40 },
1716
+ 56: { [mode]: silkOnly, [bandwidth]: mediumBand, [frameSize]: 60 },
1717
+ 64: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 10 },
1718
+ 72: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 20 },
1719
+ 80: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 40 },
1720
+ 88: { [mode]: silkOnly, [bandwidth]: wideBand, [frameSize]: 60 },
1721
+ 96: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 10 },
1722
+ 104: { [mode]: hybrid, [bandwidth]: superWideBand, [frameSize]: 20 },
1723
+ 112: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 10 },
1724
+ 120: { [mode]: hybrid, [bandwidth]: fullBand, [frameSize]: 20 },
1725
+ 128: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 2.5 },
1726
+ 136: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 5 },
1727
+ 144: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 10 },
1728
+ 152: { [mode]: celtOnly, [bandwidth]: narrowBand, [frameSize]: 20 },
1729
+ 160: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 2.5 },
1730
+ 168: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 5 },
1731
+ 176: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 10 },
1732
+ 184: { [mode]: celtOnly, [bandwidth]: wideBand, [frameSize]: 20 },
1733
+ 192: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 2.5 },
1734
+ 200: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 5 },
1735
+ 208: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 10 },
1736
+ 216: { [mode]: celtOnly, [bandwidth]: superWideBand, [frameSize]: 20 },
1737
+ 224: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 2.5 },
1738
+ 232: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 5 },
1739
+ 240: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 10 },
1740
+ 248: { [mode]: celtOnly, [bandwidth]: fullBand, [frameSize]: 20 }
1741
+ };
1742
+ var OpusHeader = class _OpusHeader extends CodecHeader {
1743
+ static [getHeaderFromUint8Array](dataValue, packetData, headerCache) {
1744
+ const header2 = {};
1745
+ header2[channels] = dataValue[9];
1746
+ header2[channelMappingFamily] = dataValue[18];
1747
+ header2[length] = header2[channelMappingFamily] !== 0 ? 21 + header2[channels] : 19;
1748
+ if (dataValue[length] < header2[length])
1749
+ throw new Error("Out of data while inside an Ogg Page");
1750
+ const packetMode = packetData[0] & 3;
1751
+ const packetLength = packetMode === 3 ? 2 : 1;
1752
+ const key = bytesToString(dataValue[subarray](0, header2[length])) + bytesToString(packetData[subarray](0, packetLength));
1753
+ const cachedHeader = headerCache[getHeader](key);
1754
+ if (cachedHeader) return new _OpusHeader(cachedHeader);
1755
+ if (key.substr(0, 8) !== "OpusHead") {
1756
+ return null;
1757
+ }
1758
+ if (dataValue[8] !== 1) return null;
1759
+ header2[data] = uint8Array.from(dataValue[subarray](0, header2[length]));
1760
+ const view = new dataView(header2[data][buffer]);
1761
+ header2[bitDepth] = 16;
1762
+ header2[preSkip] = view.getUint16(10, true);
1763
+ header2[inputSampleRate] = view.getUint32(12, true);
1764
+ header2[sampleRate] = rate48000;
1765
+ header2[outputGain] = view.getInt16(16, true);
1766
+ if (header2[channelMappingFamily] in channelMappingFamilies) {
1767
+ header2[channelMode] = channelMappingFamilies[header2[channelMappingFamily]][header2[channels] - 1];
1768
+ if (!header2[channelMode]) return null;
1769
+ }
1770
+ if (header2[channelMappingFamily] !== 0) {
1771
+ header2[streamCount] = dataValue[19];
1772
+ header2[coupledStreamCount] = dataValue[20];
1773
+ header2[channelMappingTable] = [
1774
+ ...dataValue[subarray](21, header2[channels] + 21)
1775
+ ];
1776
+ }
1777
+ const packetConfig = configTable[248 & packetData[0]];
1778
+ header2[mode] = packetConfig[mode];
1779
+ header2[bandwidth] = packetConfig[bandwidth];
1780
+ header2[frameSize] = packetConfig[frameSize];
1781
+ switch (packetMode) {
1782
+ case 0:
1783
+ header2[frameCount] = 1;
1784
+ break;
1785
+ case 1:
1786
+ // 1: 2 frames in the packet, each with equal compressed size
1787
+ case 2:
1788
+ header2[frameCount] = 2;
1789
+ break;
1790
+ case 3:
1791
+ header2[isVbr] = !!(128 & packetData[1]);
1792
+ header2[hasOpusPadding] = !!(64 & packetData[1]);
1793
+ header2[frameCount] = 63 & packetData[1];
1794
+ break;
1795
+ default:
1796
+ return null;
1797
+ }
1798
+ {
1799
+ const {
1800
+ length: length2,
1801
+ data: headerData,
1802
+ channelMappingFamily: channelMappingFamily2,
1803
+ ...codecUpdateFields
1804
+ } = header2;
1805
+ headerCache[setHeader](key, header2, codecUpdateFields);
1806
+ }
1807
+ return new _OpusHeader(header2);
1808
+ }
1809
+ /**
1810
+ * @private
1811
+ * Call OpusHeader.getHeader(Array<Uint8>) to get instance
1812
+ */
1813
+ constructor(header2) {
1814
+ super(header2);
1815
+ this[data] = header2[data];
1816
+ this[bandwidth] = header2[bandwidth];
1817
+ this[channelMappingFamily] = header2[channelMappingFamily];
1818
+ this[channelMappingTable] = header2[channelMappingTable];
1819
+ this[coupledStreamCount] = header2[coupledStreamCount];
1820
+ this[frameCount] = header2[frameCount];
1821
+ this[frameSize] = header2[frameSize];
1822
+ this[hasOpusPadding] = header2[hasOpusPadding];
1823
+ this[inputSampleRate] = header2[inputSampleRate];
1824
+ this[isVbr] = header2[isVbr];
1825
+ this[mode] = header2[mode];
1826
+ this[outputGain] = header2[outputGain];
1827
+ this[preSkip] = header2[preSkip];
1828
+ this[streamCount] = header2[streamCount];
1829
+ }
1830
+ };
1831
+
1832
+ // ../../node_modules/codec-parser/src/codecs/opus/OpusParser.js
1833
+ var OpusParser = class extends Parser {
1834
+ constructor(codecParser, headerCache, onCodec) {
1835
+ super(codecParser, headerCache);
1836
+ this.Frame = OpusFrame;
1837
+ this.Header = OpusHeader;
1838
+ onCodec(this[codec]);
1839
+ this._identificationHeader = null;
1840
+ this._preSkipRemaining = null;
1841
+ }
1842
+ get [codec]() {
1843
+ return "opus";
1844
+ }
1845
+ /**
1846
+ * @todo implement continued page support
1847
+ */
1848
+ [parseOggPage](oggPage) {
1849
+ if (oggPage[pageSequenceNumber] === 0) {
1850
+ this._headerCache[enable]();
1851
+ this._identificationHeader = oggPage[data];
1852
+ } else if (oggPage[pageSequenceNumber] === 1) {
1853
+ } else {
1854
+ oggPage[codecFrames] = frameStore.get(oggPage)[segments].map((segment) => {
1855
+ const header2 = OpusHeader[getHeaderFromUint8Array](
1856
+ this._identificationHeader,
1857
+ segment,
1858
+ this._headerCache
1859
+ );
1860
+ if (header2) {
1861
+ if (this._preSkipRemaining === null)
1862
+ this._preSkipRemaining = header2[preSkip];
1863
+ let samples2 = header2[frameSize] * header2[frameCount] / 1e3 * header2[sampleRate];
1864
+ if (this._preSkipRemaining > 0) {
1865
+ this._preSkipRemaining -= samples2;
1866
+ samples2 = this._preSkipRemaining < 0 ? -this._preSkipRemaining : 0;
1867
+ }
1868
+ return new OpusFrame(segment, header2, samples2);
1869
+ }
1870
+ this._codecParser[logError2](
1871
+ "Failed to parse Ogg Opus Header",
1872
+ "Not a valid Ogg Opus file"
1873
+ );
1874
+ });
1875
+ }
1876
+ return oggPage;
1877
+ }
1878
+ };
1879
+
1880
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisFrame.js
1881
+ var VorbisFrame = class extends CodecFrame {
1882
+ constructor(data3, header2, samples2) {
1883
+ super(header2, data3, samples2);
1884
+ }
1885
+ };
1886
+
1887
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisHeader.js
1888
+ var blockSizes = {
1889
+ // 0b0110: 64,
1890
+ // 0b0111: 128,
1891
+ // 0b1000: 256,
1892
+ // 0b1001: 512,
1893
+ // 0b1010: 1024,
1894
+ // 0b1011: 2048,
1895
+ // 0b1100: 4096,
1896
+ // 0b1101: 8192
1897
+ };
1898
+ for (let i = 0; i < 8; i++) blockSizes[i + 6] = 2 ** (6 + i);
1899
+ var VorbisHeader = class _VorbisHeader extends CodecHeader {
1900
+ static [getHeaderFromUint8Array](dataValue, headerCache, vorbisCommentsData, vorbisSetupData) {
1901
+ if (dataValue[length] < 30)
1902
+ throw new Error("Out of data while inside an Ogg Page");
1903
+ const key = bytesToString(dataValue[subarray](0, 30));
1904
+ const cachedHeader = headerCache[getHeader](key);
1905
+ if (cachedHeader) return new _VorbisHeader(cachedHeader);
1906
+ const header2 = { [length]: 30 };
1907
+ if (key.substr(0, 7) !== "vorbis") {
1908
+ return null;
1909
+ }
1910
+ header2[data] = uint8Array.from(dataValue[subarray](0, 30));
1911
+ const view = new dataView(header2[data][buffer]);
1912
+ header2[version] = view.getUint32(7, true);
1913
+ if (header2[version] !== 0) return null;
1914
+ header2[channels] = dataValue[11];
1915
+ header2[channelMode] = vorbisOpusChannelMapping[header2[channels] - 1] || "application defined";
1916
+ header2[sampleRate] = view.getUint32(12, true);
1917
+ header2[bitrateMaximum] = view.getInt32(16, true);
1918
+ header2[bitrateNominal] = view.getInt32(20, true);
1919
+ header2[bitrateMinimum] = view.getInt32(24, true);
1920
+ header2[blocksize1] = blockSizes[(dataValue[28] & 240) >> 4];
1921
+ header2[blocksize0] = blockSizes[dataValue[28] & 15];
1922
+ if (header2[blocksize0] > header2[blocksize1]) return null;
1923
+ if (dataValue[29] !== 1) return null;
1924
+ header2[bitDepth] = 32;
1925
+ header2[vorbisSetup] = vorbisSetupData;
1926
+ header2[vorbisComments] = vorbisCommentsData;
1927
+ {
1928
+ const {
1929
+ length: length2,
1930
+ data: data3,
1931
+ version: version2,
1932
+ vorbisSetup: vorbisSetup2,
1933
+ vorbisComments: vorbisComments2,
1934
+ ...codecUpdateFields
1935
+ } = header2;
1936
+ headerCache[setHeader](key, header2, codecUpdateFields);
1937
+ }
1938
+ return new _VorbisHeader(header2);
1939
+ }
1940
+ /**
1941
+ * @private
1942
+ * Call VorbisHeader.getHeader(Array<Uint8>) to get instance
1943
+ */
1944
+ constructor(header2) {
1945
+ super(header2);
1946
+ this[bitrateMaximum] = header2[bitrateMaximum];
1947
+ this[bitrateMinimum] = header2[bitrateMinimum];
1948
+ this[bitrateNominal] = header2[bitrateNominal];
1949
+ this[blocksize0] = header2[blocksize0];
1950
+ this[blocksize1] = header2[blocksize1];
1951
+ this[data] = header2[data];
1952
+ this[vorbisComments] = header2[vorbisComments];
1953
+ this[vorbisSetup] = header2[vorbisSetup];
1954
+ }
1955
+ };
1956
+
1957
+ // ../../node_modules/codec-parser/src/codecs/vorbis/VorbisParser.js
1958
+ var VorbisParser = class extends Parser {
1959
+ constructor(codecParser, headerCache, onCodec) {
1960
+ super(codecParser, headerCache);
1961
+ this.Frame = VorbisFrame;
1962
+ onCodec(this[codec]);
1963
+ this._identificationHeader = null;
1964
+ this._setupComplete = false;
1965
+ this._prevBlockSize = null;
1966
+ }
1967
+ get [codec]() {
1968
+ return vorbis;
1969
+ }
1970
+ [parseOggPage](oggPage) {
1971
+ oggPage[codecFrames] = [];
1972
+ for (const oggPageSegment of frameStore.get(oggPage)[segments]) {
1973
+ if (oggPageSegment[0] === 1) {
1974
+ this._headerCache[enable]();
1975
+ this._identificationHeader = oggPage[data];
1976
+ this._setupComplete = false;
1977
+ } else if (oggPageSegment[0] === 3) {
1978
+ this._vorbisComments = oggPageSegment;
1979
+ } else if (oggPageSegment[0] === 5) {
1980
+ this._vorbisSetup = oggPageSegment;
1981
+ this._mode = this._parseSetupHeader(oggPageSegment);
1982
+ this._setupComplete = true;
1983
+ } else if (this._setupComplete) {
1984
+ const header2 = VorbisHeader[getHeaderFromUint8Array](
1985
+ this._identificationHeader,
1986
+ this._headerCache,
1987
+ this._vorbisComments,
1988
+ this._vorbisSetup
1989
+ );
1990
+ if (header2) {
1991
+ oggPage[codecFrames].push(
1992
+ new VorbisFrame(
1993
+ oggPageSegment,
1994
+ header2,
1995
+ this._getSamples(oggPageSegment, header2)
1996
+ )
1997
+ );
1998
+ } else {
1999
+ this._codecParser[logError](
2000
+ "Failed to parse Ogg Vorbis Header",
2001
+ "Not a valid Ogg Vorbis file"
2002
+ );
2003
+ }
2004
+ }
2005
+ }
2006
+ return oggPage;
2007
+ }
2008
+ _getSamples(segment, header2) {
2009
+ const blockFlag = this._mode.blockFlags[segment[0] >> 1 & this._mode.mask];
2010
+ const currentBlockSize = blockFlag ? header2[blocksize1] : header2[blocksize0];
2011
+ const samplesValue = this._prevBlockSize === null ? 0 : (this._prevBlockSize + currentBlockSize) / 4;
2012
+ this._prevBlockSize = currentBlockSize;
2013
+ return samplesValue;
2014
+ }
2015
+ // https://gitlab.xiph.org/xiph/liboggz/-/blob/master/src/liboggz/oggz_auto.c#L911
2016
+ // https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/vorbis_parser.c
2017
+ /*
2018
+ * This is the format of the mode data at the end of the packet for all
2019
+ * Vorbis Version 1 :
2020
+ *
2021
+ * [ 6:number_of_modes ]
2022
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2023
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2024
+ * [ 1:size | 16:window_type(0) | 16:transform_type(0) | 8:mapping ]
2025
+ * [ 1:framing(1) ]
2026
+ *
2027
+ * e.g.:
2028
+ *
2029
+ * MsB LsB
2030
+ * <-
2031
+ * 0 0 0 0 0 1 0 0
2032
+ * 0 0 1 0 0 0 0 0
2033
+ * 0 0 1 0 0 0 0 0
2034
+ * 0 0 1|0 0 0 0 0
2035
+ * 0 0 0 0|0|0 0 0
2036
+ * 0 0 0 0 0 0 0 0
2037
+ * 0 0 0 0|0 0 0 0
2038
+ * 0 0 0 0 0 0 0 0
2039
+ * 0 0 0 0|0 0 0 0
2040
+ * 0 0 0|1|0 0 0 0 |
2041
+ * 0 0 0 0 0 0 0 0 V
2042
+ * 0 0 0|0 0 0 0 0
2043
+ * 0 0 0 0 0 0 0 0
2044
+ * 0 0|1 0 0 0 0 0
2045
+ *
2046
+ * The simplest way to approach this is to start at the end
2047
+ * and read backwards to determine the mode configuration.
2048
+ *
2049
+ * liboggz and ffmpeg both use this method.
2050
+ */
2051
+ _parseSetupHeader(setup) {
2052
+ const bitReader = new BitReader(setup);
2053
+ const mode2 = {
2054
+ count: 0,
2055
+ blockFlags: []
2056
+ };
2057
+ while ((bitReader.read(1) & 1) !== 1) {
2058
+ }
2059
+ let modeBits;
2060
+ while (mode2.count < 64 && bitReader.position > 0) {
2061
+ reverse(bitReader.read(8));
2062
+ let currentByte = 0;
2063
+ while (bitReader.read(8) === 0 && currentByte++ < 3) {
2064
+ }
2065
+ if (currentByte === 4) {
2066
+ modeBits = bitReader.read(7);
2067
+ mode2.blockFlags.unshift(modeBits & 1);
2068
+ bitReader.position += 6;
2069
+ mode2.count++;
2070
+ } else {
2071
+ if (((reverse(modeBits) & 126) >> 1) + 1 !== mode2.count) {
2072
+ this._codecParser[logWarning](
2073
+ "vorbis derived mode count did not match actual mode count"
2074
+ );
2075
+ }
2076
+ break;
2077
+ }
2078
+ }
2079
+ mode2.mask = (1 << Math.log2(mode2.count)) - 1;
2080
+ return mode2;
2081
+ }
2082
+ };
2083
+
2084
+ // ../../node_modules/codec-parser/src/containers/ogg/OggParser.js
2085
+ var OggStream = class {
2086
+ constructor(codecParser, headerCache, onCodec) {
2087
+ this._codecParser = codecParser;
2088
+ this._headerCache = headerCache;
2089
+ this._onCodec = onCodec;
2090
+ this._continuedPacket = new uint8Array();
2091
+ this._codec = null;
2092
+ this._isSupported = null;
2093
+ this._previousAbsoluteGranulePosition = null;
2094
+ }
2095
+ get [codec]() {
2096
+ return this._codec || "";
2097
+ }
2098
+ _updateCodec(codec2, Parser2) {
2099
+ if (this._codec !== codec2) {
2100
+ this._headerCache[reset]();
2101
+ this._parser = new Parser2(
2102
+ this._codecParser,
2103
+ this._headerCache,
2104
+ this._onCodec
2105
+ );
2106
+ this._codec = codec2;
2107
+ }
2108
+ }
2109
+ _checkCodecSupport({ data: data3 }) {
2110
+ const idString = bytesToString(data3[subarray](0, 8));
2111
+ switch (idString) {
2112
+ case "fishead\0":
2113
+ return false;
2114
+ // ignore ogg skeleton packets
2115
+ case "OpusHead":
2116
+ this._updateCodec("opus", OpusParser);
2117
+ return true;
2118
+ case (/^\x7fFLAC/.test(idString) && idString):
2119
+ this._updateCodec("flac", FLACParser);
2120
+ return true;
2121
+ case (/^\x01vorbis/.test(idString) && idString):
2122
+ this._updateCodec(vorbis, VorbisParser);
2123
+ return true;
2124
+ default:
2125
+ return false;
2126
+ }
2127
+ }
2128
+ _checkPageSequenceNumber(oggPage) {
2129
+ if (oggPage[pageSequenceNumber] !== this._pageSequenceNumber + 1 && this._pageSequenceNumber > 1 && oggPage[pageSequenceNumber] > 1) {
2130
+ this._codecParser[logWarning](
2131
+ "Unexpected gap in Ogg Page Sequence Number.",
2132
+ `Expected: ${this._pageSequenceNumber + 1}, Got: ${oggPage[pageSequenceNumber]}`
2133
+ );
2134
+ }
2135
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2136
+ }
2137
+ _parsePage(oggPage) {
2138
+ if (this._isSupported === null) {
2139
+ this._pageSequenceNumber = oggPage[pageSequenceNumber];
2140
+ this._isSupported = this._checkCodecSupport(oggPage);
2141
+ }
2142
+ this._checkPageSequenceNumber(oggPage);
2143
+ const oggPageStore = frameStore.get(oggPage);
2144
+ const headerData = headerStore.get(oggPageStore[header]);
2145
+ let offset = 0;
2146
+ oggPageStore[segments] = headerData[pageSegmentTable].map(
2147
+ (segmentLength) => oggPage[data][subarray](offset, offset += segmentLength)
2148
+ );
2149
+ if (this._continuedPacket[length]) {
2150
+ oggPageStore[segments][0] = concatBuffers(
2151
+ this._continuedPacket,
2152
+ oggPageStore[segments][0]
2153
+ );
2154
+ this._continuedPacket = new uint8Array();
2155
+ }
2156
+ if (headerData[pageSegmentBytes][headerData[pageSegmentBytes][length] - 1] === 255) {
2157
+ this._continuedPacket = concatBuffers(
2158
+ this._continuedPacket,
2159
+ oggPageStore[segments].pop()
2160
+ );
2161
+ }
2162
+ if (this._previousAbsoluteGranulePosition !== null) {
2163
+ oggPage[samples] = Number(
2164
+ oggPage[absoluteGranulePosition] - this._previousAbsoluteGranulePosition
2165
+ );
2166
+ }
2167
+ this._previousAbsoluteGranulePosition = oggPage[absoluteGranulePosition];
2168
+ if (this._isSupported) {
2169
+ const frame2 = this._parser[parseOggPage](oggPage);
2170
+ this._codecParser[mapFrameStats](frame2);
2171
+ return frame2;
2172
+ } else {
2173
+ return oggPage;
2174
+ }
2175
+ }
2176
+ };
2177
+ var OggParser = class extends Parser {
2178
+ constructor(codecParser, headerCache, onCodec) {
2179
+ super(codecParser, headerCache);
2180
+ this._onCodec = onCodec;
2181
+ this.Frame = OggPage;
2182
+ this.Header = OggPageHeader;
2183
+ this._streams = /* @__PURE__ */ new Map();
2184
+ this._currentSerialNumber = null;
2185
+ }
2186
+ get [codec]() {
2187
+ const oggStream = this._streams.get(this._currentSerialNumber);
2188
+ return oggStream ? oggStream.codec : "";
2189
+ }
2190
+ *[parseFrame]() {
2191
+ const oggPage = yield* this[fixedLengthFrameSync](true);
2192
+ this._currentSerialNumber = oggPage[streamSerialNumber];
2193
+ let oggStream = this._streams.get(this._currentSerialNumber);
2194
+ if (!oggStream) {
2195
+ oggStream = new OggStream(
2196
+ this._codecParser,
2197
+ this._headerCache,
2198
+ this._onCodec
2199
+ );
2200
+ this._streams.set(this._currentSerialNumber, oggStream);
2201
+ }
2202
+ if (oggPage[isLastPage]) this._streams.delete(this._currentSerialNumber);
2203
+ return oggStream._parsePage(oggPage);
2204
+ }
2205
+ };
2206
+
2207
+ // ../../node_modules/codec-parser/src/CodecParser.js
2208
+ var noOp = () => {
2209
+ };
2210
+ var CodecParser = class {
2211
+ constructor(mimeType2, {
2212
+ onCodec,
2213
+ onCodecHeader,
2214
+ onCodecUpdate,
2215
+ enableLogging = false,
2216
+ enableFrameCRC32 = true
2217
+ } = {}) {
2218
+ this._inputMimeType = mimeType2;
2219
+ this._onCodec = onCodec || noOp;
2220
+ this._onCodecHeader = onCodecHeader || noOp;
2221
+ this._onCodecUpdate = onCodecUpdate;
2222
+ this._enableLogging = enableLogging;
2223
+ this._crc32 = enableFrameCRC32 ? crc32Function : noOp;
2224
+ this[reset]();
2225
+ }
2226
+ /**
2227
+ * @public
2228
+ * @returns The detected codec
2229
+ */
2230
+ get [codec]() {
2231
+ return this._parser ? this._parser[codec] : "";
2232
+ }
2233
+ [reset]() {
2234
+ this._headerCache = new HeaderCache(
2235
+ this._onCodecHeader,
2236
+ this._onCodecUpdate
2237
+ );
2238
+ this._generator = this._getGenerator();
2239
+ this._generator.next();
2240
+ }
2241
+ /**
2242
+ * @public
2243
+ * @description Generator function that yields any buffered CodecFrames and resets the CodecParser
2244
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2245
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2246
+ */
2247
+ *flush() {
2248
+ this._flushing = true;
2249
+ for (let i = this._generator.next(); i.value; i = this._generator.next()) {
2250
+ yield i.value;
2251
+ }
2252
+ this._flushing = false;
2253
+ this[reset]();
2254
+ }
2255
+ /**
2256
+ * @public
2257
+ * @description Generator function takes in a Uint8Array of data and returns a CodecFrame from the data for each iteration
2258
+ * @param {Uint8Array} chunk Next chunk of codec data to read
2259
+ * @returns {Iterable<CodecFrame|OggPage>} Iterator that operates over the codec data.
2260
+ * @yields {CodecFrame|OggPage} Parsed codec or ogg page data
2261
+ */
2262
+ *parseChunk(chunk) {
2263
+ for (let i = this._generator.next(chunk); i.value; i = this._generator.next()) {
2264
+ yield i.value;
2265
+ }
2266
+ }
2267
+ /**
2268
+ * @public
2269
+ * @description Parses an entire file and returns all of the contained frames.
2270
+ * @param {Uint8Array} fileData Coded data to read
2271
+ * @returns {Array<CodecFrame|OggPage>} CodecFrames
2272
+ */
2273
+ parseAll(fileData) {
2274
+ return [...this.parseChunk(fileData), ...this.flush()];
2275
+ }
2276
+ /**
2277
+ * @private
2278
+ */
2279
+ *_getGenerator() {
2280
+ if (this._inputMimeType.match(/aac/)) {
2281
+ this._parser = new AACParser(this, this._headerCache, this._onCodec);
2282
+ } else if (this._inputMimeType.match(/mpeg/)) {
2283
+ this._parser = new MPEGParser(this, this._headerCache, this._onCodec);
2284
+ } else if (this._inputMimeType.match(/flac/)) {
2285
+ this._parser = new FLACParser(this, this._headerCache, this._onCodec);
2286
+ } else if (this._inputMimeType.match(/ogg/)) {
2287
+ this._parser = new OggParser(this, this._headerCache, this._onCodec);
2288
+ } else {
2289
+ throw new Error(`Unsupported Codec ${mimeType}`);
2290
+ }
2291
+ this._frameNumber = 0;
2292
+ this._currentReadPosition = 0;
2293
+ this._totalBytesIn = 0;
2294
+ this._totalBytesOut = 0;
2295
+ this._totalSamples = 0;
2296
+ this._sampleRate = void 0;
2297
+ this._rawData = new Uint8Array(0);
2298
+ while (true) {
2299
+ const frame2 = yield* this._parser[parseFrame]();
2300
+ if (frame2) yield frame2;
2301
+ }
2302
+ }
2303
+ /**
2304
+ * @protected
2305
+ * @param {number} minSize Minimum bytes to have present in buffer
2306
+ * @returns {Uint8Array} rawData
2307
+ */
2308
+ *[readRawData](minSize = 0, readOffset = 0) {
2309
+ let rawData2;
2310
+ while (this._rawData[length] <= minSize + readOffset) {
2311
+ rawData2 = yield;
2312
+ if (this._flushing) return this._rawData[subarray](readOffset);
2313
+ if (rawData2) {
2314
+ this._totalBytesIn += rawData2[length];
2315
+ this._rawData = concatBuffers(this._rawData, rawData2);
2316
+ }
2317
+ }
2318
+ return this._rawData[subarray](readOffset);
2319
+ }
2320
+ /**
2321
+ * @protected
2322
+ * @param {number} increment Bytes to increment codec data
2323
+ */
2324
+ [incrementRawData](increment) {
2325
+ this._currentReadPosition += increment;
2326
+ this._rawData = this._rawData[subarray](increment);
2327
+ }
2328
+ /**
2329
+ * @protected
2330
+ */
2331
+ [mapCodecFrameStats](frame2) {
2332
+ this._sampleRate = frame2[header][sampleRate];
2333
+ frame2[header][bitrate] = frame2[duration] > 0 ? Math.round(frame2[data][length] / frame2[duration]) * 8 : 0;
2334
+ frame2[frameNumber] = this._frameNumber++;
2335
+ frame2[totalBytesOut] = this._totalBytesOut;
2336
+ frame2[totalSamples] = this._totalSamples;
2337
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3;
2338
+ frame2[crc32] = this._crc32(frame2[data]);
2339
+ this._headerCache[checkCodecUpdate](
2340
+ frame2[header][bitrate],
2341
+ frame2[totalDuration]
2342
+ );
2343
+ this._totalBytesOut += frame2[data][length];
2344
+ this._totalSamples += frame2[samples];
2345
+ }
2346
+ /**
2347
+ * @protected
2348
+ */
2349
+ [mapFrameStats](frame2) {
2350
+ if (frame2[codecFrames]) {
2351
+ if (frame2[isLastPage]) {
2352
+ let absoluteGranulePositionSamples = frame2[samples];
2353
+ frame2[codecFrames].forEach((codecFrame) => {
2354
+ const untrimmedCodecSamples = codecFrame[samples];
2355
+ if (absoluteGranulePositionSamples < untrimmedCodecSamples) {
2356
+ codecFrame[samples] = absoluteGranulePositionSamples > 0 ? absoluteGranulePositionSamples : 0;
2357
+ codecFrame[duration] = codecFrame[samples] / codecFrame[header][sampleRate] * 1e3;
2358
+ }
2359
+ absoluteGranulePositionSamples -= untrimmedCodecSamples;
2360
+ this[mapCodecFrameStats](codecFrame);
2361
+ });
2362
+ } else {
2363
+ frame2[samples] = 0;
2364
+ frame2[codecFrames].forEach((codecFrame) => {
2365
+ frame2[samples] += codecFrame[samples];
2366
+ this[mapCodecFrameStats](codecFrame);
2367
+ });
2368
+ }
2369
+ frame2[duration] = frame2[samples] / this._sampleRate * 1e3 || 0;
2370
+ frame2[totalSamples] = this._totalSamples;
2371
+ frame2[totalDuration] = this._totalSamples / this._sampleRate * 1e3 || 0;
2372
+ frame2[totalBytesOut] = this._totalBytesOut;
2373
+ } else {
2374
+ this[mapCodecFrameStats](frame2);
2375
+ }
2376
+ }
2377
+ /**
2378
+ * @private
2379
+ */
2380
+ _log(logger, messages) {
2381
+ if (this._enableLogging) {
2382
+ const stats = [
2383
+ `${codec}: ${this[codec]}`,
2384
+ `inputMimeType: ${this._inputMimeType}`,
2385
+ `readPosition: ${this._currentReadPosition}`,
2386
+ `totalBytesIn: ${this._totalBytesIn}`,
2387
+ `${totalBytesOut}: ${this._totalBytesOut}`
2388
+ ];
2389
+ const width = Math.max(...stats.map((s) => s[length]));
2390
+ messages.push(
2391
+ `--stats--${"-".repeat(width - 9)}`,
2392
+ ...stats,
2393
+ "-".repeat(width)
2394
+ );
2395
+ logger(
2396
+ "codec-parser",
2397
+ messages.reduce((acc, message) => acc + "\n " + message, "")
2398
+ );
2399
+ }
2400
+ }
2401
+ /**
2402
+ * @protected
2403
+ */
2404
+ [logWarning](...messages) {
2405
+ this._log(console.warn, messages);
2406
+ }
2407
+ /**
2408
+ * @protected
2409
+ */
2410
+ [logError2](...messages) {
2411
+ this._log(console.error, messages);
2412
+ }
2413
+ };
2414
+
2415
+ // ../../node_modules/codec-parser/index.js
2416
+ var codec_parser_default = CodecParser;
2417
+ var codecFrames2 = codecFrames;
2418
+ var data2 = data;
2419
+ var isLastPage2 = isLastPage;
2420
+ var totalSamples2 = totalSamples;
2421
+
2422
+ // ../../node_modules/@wasm-audio-decoders/flac/src/EmscriptenWasm.js
2423
+ function EmscriptenWASM(WASMAudioDecoderCommon2) {
2424
+ var Module = Module;
2425
+ var out = (text) => console.log(text);
2426
+ var err = (text) => console.error(text);
2427
+ function ready() {
2428
+ }
2429
+ Module = {};
2430
+ function abort(what) {
2431
+ throw what;
2432
+ }
2433
+ var HEAP8, HEAP16, HEAP32, HEAPU8, HEAPU16, HEAPU32, HEAPF32, HEAPF64, HEAP64, HEAPU64, wasmMemory;
2434
+ function updateMemoryViews() {
2435
+ var b = wasmMemory.buffer;
2436
+ HEAP8 = new Int8Array(b);
2437
+ HEAP16 = new Int16Array(b);
2438
+ HEAPU8 = new Uint8Array(b);
2439
+ HEAPU16 = new Uint16Array(b);
2440
+ HEAP32 = new Int32Array(b);
2441
+ HEAPU32 = new Uint32Array(b);
2442
+ HEAPF32 = new Float32Array(b);
2443
+ HEAPF64 = new Float64Array(b);
2444
+ HEAP64 = new BigInt64Array(b);
2445
+ HEAPU64 = new BigUint64Array(b);
2446
+ }
2447
+ var base64Decode = (b64) => {
2448
+ var b1, b2, i2 = 0, j = 0, bLength = b64.length;
2449
+ var output = new Uint8Array((bLength * 3 >> 2) - (b64[bLength - 2] == "=") - (b64[bLength - 1] == "="));
2450
+ for (; i2 < bLength; i2 += 4, j += 3) {
2451
+ b1 = base64ReverseLookup[b64.charCodeAt(i2 + 1)];
2452
+ b2 = base64ReverseLookup[b64.charCodeAt(i2 + 2)];
2453
+ output[j] = base64ReverseLookup[b64.charCodeAt(i2)] << 2 | b1 >> 4;
2454
+ output[j + 1] = b1 << 4 | b2 >> 2;
2455
+ output[j + 2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i2 + 3)];
2456
+ }
2457
+ return output;
2458
+ };
2459
+ var __abort_js = () => abort("");
2460
+ var __emscripten_runtime_keepalive_clear = () => {
2461
+ };
2462
+ var timers = {};
2463
+ var callUserCallback = (func) => func();
2464
+ var _emscripten_get_now = () => performance.now();
2465
+ var __setitimer_js = (which, timeout_ms) => {
2466
+ if (timers[which]) {
2467
+ clearTimeout(timers[which].id);
2468
+ delete timers[which];
2469
+ }
2470
+ if (!timeout_ms) return 0;
2471
+ var id = setTimeout(() => {
2472
+ delete timers[which];
2473
+ callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));
2474
+ }, timeout_ms);
2475
+ timers[which] = {
2476
+ id,
2477
+ timeout_ms
2478
+ };
2479
+ return 0;
2480
+ };
2481
+ var _emscripten_resize_heap = (requestedSize) => {
2482
+ var oldSize = HEAPU8.length;
2483
+ requestedSize >>>= 0;
2484
+ return false;
2485
+ };
2486
+ var _fd_close = (fd) => 52;
2487
+ var _fd_read = (fd, iov, iovcnt, pnum) => 52;
2488
+ var INT53_MAX = 9007199254740992;
2489
+ var INT53_MIN = -9007199254740992;
2490
+ var bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);
2491
+ function _fd_seek(fd, offset, whence, newOffset) {
2492
+ offset = bigintToI53Checked(offset);
2493
+ return 70;
2494
+ }
2495
+ var printCharBuffers = [null, [], []];
2496
+ var UTF8Decoder = new TextDecoder();
2497
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {
2498
+ var endIdx = idx + maxBytesToRead;
2499
+ var endPtr = idx;
2500
+ while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
2501
+ return UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));
2502
+ };
2503
+ var printChar = (stream2, curr) => {
2504
+ var buffer2 = printCharBuffers[stream2];
2505
+ if (curr === 0 || curr === 10) {
2506
+ (stream2 === 1 ? out : err)(UTF8ArrayToString(buffer2));
2507
+ buffer2.length = 0;
2508
+ } else {
2509
+ buffer2.push(curr);
2510
+ }
2511
+ };
2512
+ var _fd_write = (fd, iov, iovcnt, pnum) => {
2513
+ var num = 0;
2514
+ for (var i2 = 0; i2 < iovcnt; i2++) {
2515
+ var ptr = HEAPU32[iov >> 2];
2516
+ var len = HEAPU32[iov + 4 >> 2];
2517
+ iov += 8;
2518
+ for (var j = 0; j < len; j++) {
2519
+ printChar(fd, HEAPU8[ptr + j]);
2520
+ }
2521
+ num += len;
2522
+ }
2523
+ HEAPU32[pnum >> 2] = num;
2524
+ return 0;
2525
+ };
2526
+ var _proc_exit = (code) => {
2527
+ throw `exit(${code})`;
2528
+ };
2529
+ for (var base64ReverseLookup = new Uint8Array(123), i = 25; i >= 0; --i) {
2530
+ base64ReverseLookup[48 + i] = 52 + i;
2531
+ base64ReverseLookup[65 + i] = i;
2532
+ base64ReverseLookup[97 + i] = 26 + i;
2533
+ }
2534
+ base64ReverseLookup[43] = 62;
2535
+ base64ReverseLookup[47] = 63;
2536
+ var wasmImports = {
2537
+ /** @export */
2538
+ "c": __abort_js,
2539
+ /** @export */
2540
+ "b": __emscripten_runtime_keepalive_clear,
2541
+ /** @export */
2542
+ "d": __setitimer_js,
2543
+ /** @export */
2544
+ "e": _emscripten_resize_heap,
2545
+ /** @export */
2546
+ "g": _fd_close,
2547
+ /** @export */
2548
+ "i": _fd_read,
2549
+ /** @export */
2550
+ "f": _fd_seek,
2551
+ /** @export */
2552
+ "h": _fd_write,
2553
+ /** @export */
2554
+ "a": _proc_exit
2555
+ };
2556
+ function assignWasmExports(wasmExports) {
2557
+ _free = wasmExports["l"];
2558
+ _malloc = wasmExports["m"];
2559
+ _create_decoder = wasmExports["n"];
2560
+ _destroy_decoder = wasmExports["o"];
2561
+ _decode_frame = wasmExports["p"];
2562
+ __emscripten_timeout = wasmExports["r"];
2563
+ }
2564
+ var _free, _malloc, _create_decoder, _destroy_decoder, _decode_frame, __emscripten_timeout;
2565
+ function initRuntime(wasmExports) {
2566
+ wasmExports["k"]();
2567
+ }
2568
+ if (!EmscriptenWASM.wasm) Object.defineProperty(EmscriptenWASM, "wasm", { get: () => String.raw`dynEncode01561175c7ecŠ¥‹˜–fÓŬÑ£kÁ@2ºÙìž:šrÛy‡ë½ÙR9ßVNdü~= 
2569
+ xW±b\—°Û¼¥õä= ãjð$k¾¥OøÃ3tÚÇA0–$|"ï€ô´
2570
+ Îß|Ø~´¹Î)@±n‘né|
2571
+ ˜=}¼¤ç,Ò·CÈz˜ä^(“œËÒ;È?’¯¡ƒÔ+ºÕ̌ |mlýÒ*môƽBI[µçFã6‘L|‘x9ÂÇrustRI¼ë7ÇzŸŒÿ¡ÄáÌ%ž=Mä$+NŠ!.L÷«´ÕÒeäºÏo0|ƒ‰‰d@1»¼¼¼¼¼Láþ„˱™Ý úâ "ÞMxhxéP4qÅ
2572
+ . 3/=MRóMÚ6R“æ©®w±î׉ÃñÉۯ̡Í@nê!'mù‘ Bu= 2ªâ\Ć1Ɉ:«R€´êîö>¦k?§ÞCuƒw"›µçQùä{)3/‡®^ê2ãÃPˆrç5®u8Ë<ÄaSêXÁ˜'¦ôE£›äñ­'™¨ 9v0ãKa= ™¬ª/_ˆØžr %A$ÕÞlΏýsÛ;d³ÎÌ=}äyAœÞÛvjÑeaÜ»ÒHù)&*—€¢Ê˜J¦ôñ  fÉ¢n¢ë{©èm%Þۛ¶ƒ*3.›­rªîjä˖ç{&̘qkéº'ä­yp9¸áÒÿ<ü¹·I\CpðI<EȌsçççdr_oÖ{5Ͳé«Î¤à]œ™³m-¬'ƒ™E†Y(×!Ž2[ŒÄ!”¹Ð= »ZA’  ‚×ÛWY3ö –í³Ù„™ày!·š§’¶kð‚.y¨;œÖZ¾à‰<æLM€ÂäN±ºT‡0@´›®¹{Í
2573
+ €¹ 8ÑeÍ"—lŚ¾Í¾=M2T¬’P6uƒ:'m7~qT4öZuU ×÷Ї½ž÷N/uHee&H†ò5ñ’՚ƃ´¹›,eě¬ŸöR¬dàFR7bݸÁ÷u*˜"2þ6¡”yBÝmT“Ê:*™=Mt½Ü<¥Yî#&"S¸ 4õÇe¸½ auX67‹œó3˜‚øbòEHøDúº‡Øt›‰P´†im2Wk_¯j>e¹p’•r#bCQ o—|G&9r—Šó"ÛyLb¿C½‘ì3MØõFØ#TŽjüÅgæºèÆ5¨Œ’UõÍ¢G›–¹m¨4&’LäóFzÖ¥ÛÄF¨Ðm"_¡C¬»ÇÀƒê3t­ç4¾[£"‹=M¿ÿ‡7Z)IOR4Ô;2.j3€Ü{9¬$0ÁGøTy’„aím E¯L(Ï䁮#k–«a3>§º.ocOй þùDj‡otŽ›F.ÅRG7HÿifåSËÒ.9°š@½1åe ©}&æ-k‚M, u@í-›ó.*Pßi}Lq¢ˆ_°çëÓ±¹Ÿs€¬ K™ÍÓZøó:vÕ^×ʲ[5’Ò™ò1»ç˽6ˆÐÜr‡;íEp?Ýbbb©ÊÂVñ:¬‹ÍÓÀÊ!{ä¢T«ÁSž]·– dߓў*zQŽ‹tLG^i9g9מ³½ÞD*7>. ¹0—y9„ÌnpÄ®ÎEIÿ|‘'ºAŸ=}äÔ¯8DLµøA<'@zèß²ndj¯È»ŠÂ–u³7EŒÄʰ®B“0"èÁ ðäôA™©•©-i1J''­øyŒJVÿÉ&æÀp()xBØzäŒs%¿L
2574
+ î)ø›qԍÀÉã*Áú°h›EžJk©wáå—2ݼE¿'+x)X6óÞ«ö=MmYì=}ºIÂ=Mgì•b›$ö†ÇìbàÉ Ó9ûPÁ÷¾ÒÃëH ®Õ?Ý5×Ã3ñ¨ä¢Ÿ¯Š=M¡À?ì(-cͱŸä1±/¸#áuQOíÉò1M†ÐŠÇ™ cõRRÙõA ¸/nfÏÄÆ2F…U֝·MGÈ<À= 267SõÑJÝbžª†V²â1¡ê.ûv(²2|w}ðWztGB­Ûhzh{ç*®5T7Á´éª ˜&æÆïeÕÏ´ŽÜòÆN.;eÏ­°Ø™¶dÖ«2á~*úì9ò*ƒOŸ€d¤’<±…«c떟#GÅɹx·Øq4MÞ±9¾zi'Î4I´M»è༟NRÔ2³¨ÖÊvD™³B×/|.=MõG³˜˜3Á&ÔF ý¡8WŠ‘—QåÏ5™_pì¿Yöa1ä΃I÷ ìQ“A@)E;‡ e2ëBAôPAµIî$*ÖìÌë¸òÒsëÔÔہáÃàœ¤¿Ô:хØ}%2|@òøDîœÓT½5Nt=MkKÙm”¼½WÑpJ"k•Ñ[ÁþŖµ Ô/Ak*¹ÍD†€gîŦR­ôÔP'Zkªº„T4I?ªˆc}´…é—SOí„OÿpA÷>ÁmÝLoLüÓS;M„¡ PT-MÀ&”ö̀üûC)¤ÕR:´ïìã)‡§*õÒ;y¥ÀÐC‡–×p°Y„‰:‹å2©k—wÜåÑ/ñ®…-ρ‡5F9Ҟmvӝ´½_¼yîÖåtS£4^MŠ˜Ö0„GßZ,ëÚYM–‰û•ÇTø½UH‰÷ZòóÖÑ$-uMd©‹ÆlwIî€ÌbMî)eÔ®.ØMìµÕQ£òÁYÅÌXE*».¬½9SH¯ÅRîññ]´ÍXE:ô ªôcM,%´Ð1Ê¡É
2575
+ Ý1ºDòVÓPtQL\*ã—ÕLIÝT0xüАl“Ëvôx&T6є7«³¾Cފ@ëõRb#\¿V4é%²Hªd@Â#,ø—=} !´RÒtåCû¤¶]lix*“ÒÑC;a«‡µÙP\Jã­ÔQ8
2576
+ \&EÒ;³ý±+‹ÖtÕHA"j|¬$Ã)î…Ô)͔.pÙ_&MT@¬¦sp1%8³1Ö_1éìKIµÒ«scno™=}æ-ÏýáR2=}•=}ÑrOƒDR<w­¯Ùa¨|È= ®é4I?¥Î¨¾~ÆŒMÁ‡œ½0=M­F uÇûˆà *$¨= ¤I)òQ…“5xbž]I½ÂŒxy}}3òéÈa'ʽÇ7h/óç’$,Ïòë’Äœé3àq¿Ü3˜Øš|÷¬o‰Ô8¦ÐtÞîÀðâʁ{á¬Ò Tg•¼èÅùø]½OÌ6ä÷˜ë·/åi¼µ}"ׇ™ó†ýːïÄüéýé?•œ?úÅ(ʉó¢óš™Ñó¤ØüéðÔ+_ f–Bo§\wúw£{"ß|"nwò
2577
+ Úrv‘l¥ÙÐÀ·à„ 6Èoû=M%Gœ™ùl¦*4A ÜeS€§ø;’Wß d¥¨Ý}/b¥7ŸT‡\c¥¾éÂÜ}7FZc¥¾i®œÎæ‹æÞ˜sxŽyw= Ëޘ£lw-Òü¦®ä¤·¯‹â)ý˜”L%L=Még1¢åWõOWaErhS¬CûH‘
2578
+ ¹Ì‚vÎÐæ:UÀ,þ³ÛŸóªkÔ ¤Ì®Ø£%Õ
2579
+ 32>|JìáþóŠñz³‰êïô8ö¤÷­ >eãžnâ n¼ëˆÚœúŒ,ž³ýv#79µútWçl]ħ{pލ¿¿6쪰<Ò¡ûñc2#ª+3 û1c2Cª†Æ]ªPS×QÓLÛH²„KtÜ¥Æ×%Šý.x¾bºá¤6v”™þ6IÊ:šžšÈšHžüÌ.=}í-tUPVyEÈÈOæEx›Ò/C1n/=MÌJôr‘ާ—L^@¤¾³éE49²ÐG½G„é“§ÉvpË­Ðl<îÆb-¾2¯I žlp ,7BÅ;–œÈÐÐoèmf¢@(˜@ìÍ
2580
+ b|Ô5À =MŽï÷w»B®ŸÔ/ÇT— ËÌõ…ïÇÀôE¸õ= ©zL)›BÕú#ü•ټ릦¢Eڃsȅ\tْà=}8JD´Š™Nîee¦gCYù9É?‰ÌëË-®9£÷ε=Mû‹[ù[õüßS¸‹ª Ô΁”™Ô!Á¬µ×@Ó#@ÊY+M´ ÐE\ÿ1wónDU!Á
2581
+ &×Z a×°ÙèÅêRlûÊiž_2 _˜A´[­-“ÃP;S–_,­ø)äJúÝ=MårJºêª2ýô_Sª<Ÿ•GÎ ýînb Ô°›LØî^=MÜg{cD²SÔD+%Ñ@=}›’y¼@õ.öÄÏøÄŸ@°#I”ŽIðTA}ÆjòYäæXäõÖÏ<âµÛá#˜ñJ¼2ûº¹h:BîˆÎ£ßð)îÜrb=}ú¡ñ(= àïîߟ‹Ö‡òæyè.wh
2582
+ ÆB·‡ü{øÝ+ô>íf¤‡C<ü3’
2583
+ ©ýîÌ8j)¤ò¸0<j),ýî4† ø³XLÌNɁ4ï@³˜³f5‚Í*aòßaÑ¿âW#»:.ȚDk½~Fd‘œRjiWÁ!W»@»ÞÅsËIÕ9*Îü²ê0H–ü½Å²ÎВ:²Ê!ÔñaôVóܲb»ò«Ð UJXËTu†0Uen¿oÙ¸ÚU ÷êÉÿos™¯ˬ©äm­·QW ®$љTjEX5‹>ãûPƏþóAQ?Ù@•@öeDŠGL îäýЃ£5Ž8©Šü跖½Þ;ÎÕ!cÁb.^pj‡{ñ¸Ã¿B,Œ·¨C³ýƒSüJ9¡<>[¥Grä@á$©‘؂
2584
+ !—É5ð¥4¡-³(Q´fJh
2585
+ 螦£
2586
+ £ œa¬ÅCJAq,ýÐqœ:öۇK­wO€d±‹–'8©T†MÁñ!‹£Ö´|B›¢öûx5"¬è¤ê’j× ºØ Žy®}ða;Äz‡EŸX»z œ›«º(w¹Óúù±Å¶“Áм|sAâļ¢ì‰|Ñcoé3"îB‹»¢ìBš˜¿‹±À¡ÔåÂ_¹ùõUÿ殼<Úh4Ö«W¼\"ñ:f9æFV;µßA䒄>þà‘í⚎ eꅱñ£mͯW>KIF8ØÊ8’L”v7“¥B³º%MTrŸ5ek(OTÛòU¡Dˆ¥¾DWÕ!è=}$²‰MAØî@H!:4§¨ŽBˆq¯‚Q Ðދa4ŸÇïUí>Û©oYք2ÇÀµ_ l-CíCÁŠtýAPçdȍ_]äCù
2587
+ pöF6PêÓ
2588
+ ÁÎÜUÕTÖSÎóhæóήõ4d%a°”1ˍ–Å@Ã$—‡pøE7暳T+h=MÆsaèŸlåŽBÍË©¾·yÇhÝÄS £ÚÊ"ŒtÚeu,¾Ã¦ //üüBT°\ù› UhÍ6OE‡y/™ÓÁ]0'Cœ%«³ÚlÄòqË”åþwe‘6MMK«xpOß+ÅNÕt…ïÕ÷b¹Èÿ–«~Âï”Ñ¼Í »ÈÏ;ðz"QύÅ=}ýwª=}´Ð‚P›=M¾›½«1²ð‚:*)ÕH¼\¡Ã–n¤8›çC ÃÞ÷×ÈæInCÝtÐ8“>_dòPBó U¼»r0b»ÐhÕû ³UþŸIoU/sŠBõÜ·:ŠJ¹ñ\t!ŠN'û×€cçø=Mà–8aãjvX=}á©7ù~«Æj˾›Jf‚¸ÞA“¼gM÷žìkÀÃPf¹Ÿ7DÓ&”™Q¦¯¾õ÷Ó~‰
2589
+ =M&4–¥Q[0s&Ä[aba¢†».¤AÊV7Â9Ñ:Û%»”m°! ½¶o×Äø½cBÃ6¶YMŒ&ªÌéF7ø,ïڈ_¯hzŠéFƒÈ5ýÁéWìú1êÔŠ-ÒÙ»õÊo<9RM¼mßuu]UŽÈr>g7J9¦£J&²HktÆÙø_~tè†d+íkBŽK…GÑfR;9µG
2590
+ Z¥vøJ#žº€RºÝ«?9$ƒ´ÿF´…µ±ËèöjØÈ|~ƒ= ZÊ\W4 {Å{xžŠÌ)j¬^)Þ 7Á6du,5µ-05f¿ýبЀòJ=M^ex€?Åg‚SƒøãOLáàež·MTT\ŠP1˜QbãT¬¾Å÷×ôÎ× Y0+LN
2591
+ £ëåë%15X¿YqŒ&ª,LM$LÍ|w¡˜ìÚ¼è¹5³T¡Õù=MÕAEaÌÎ–Ýø+aüó’Më­g#a'Àh“þf­Cš54Üx×l·q@ºÚpŒ>Ö.Tƒf°vŠu܆'¸á\±Fï}5?³¯-„0.›KHÁ@ ̶\¹TY<¥
2592
+ ò­!Nkd\X·,tƯ ÛáÙ̧cÁu~Äá³"â“J!éxcöh ‡ðŒ…GõüµGØ«(„Šß "ƒ¯<ì¢Ø5ŽJŸI×4\¬ŒæÃ¶qpÒ»y½ZRùÞVúý¼{¦EŽ}¸f7/>ñÅ㍏@𿃌<æË~è;{à#0iû7¢'Ühl ~~ˆC=}¿Åý9Š%)ÂýKZ›”ÝœâßÊòȃù²‘ˆlæB2olæ±­¿Å³èJHÔl&4\dŒÆÅYE [ïlŽU€îƒ&[= éù”‚m¿·×8
2593
+ [z&|›,X\Ûk°–A‰¥eƒv›ðý;èÒ(XÁ7§óïAƒµYÀ/Ë+ÕLM2Ñ$ÓɵU¿Q¡”ý‰æ–YJ¹Ü¦Põ“ŠéüŠUÕÚXXXXXȵþï?¹fÓyª_&ÀÖþ§Zjb{× ½*€©Þh‡6Vâ»Ö—˜o‹^—]£áAM±QBÍDÓM{é uÑL/5Á --´Qº>@¹z¶ðç}üòÍ,j_‹øŠ}N—Â|Š= Šô )3 kçÝš{€þ}l³o®òk=}ªe„VÀ°¹ñØo÷t©, ¬c¬ °º¼Ù wŽ_Ãp*¼dظ»ÛÁQö£²ê¡*%k7Ú4XÐaÎWÓc¯‰[öøžf .8‹û'àZ¨WŽqvC±;Jìä1Ù%êÒE'f&³—5ÿøs¨ŸÝ±4éäfÀÂ׫ƒ(h®Y¶#%X+ºþ¤Èº‹!ùð’‰,Eq+n†ù0]c÷…VÓG Öôþ®Û´Ç•³#A&}ÏU÷5‚I™e=Mfs¢¥Kk(¥[%)N–Dí>IS¨ù„mlÞoîۀôúÝÀqô¿•l½ƒ±ÃÙÚÖÎoo„vþJ’£òªá©Î ¥-%+­E>"Ð~fà%* £CóƒLŠK&/8w£Û ›&*$/¸©á ˜©K/øtèé½ômîÇ(cþ=}–LXž9
2594
+ ø÷I¦~&[þd#|Òv\ò¤ê#eG݌³T8ВIn(ÊÓŽžkÏl¾Ç Ճ\´™ÓÃF¤u›ž†ˆÇõÚM“ôÁûp¥KYal×s1Þq‘þ\ù$aÜgѨ782þé'W 8X †UCÞ\ÛZäåØ'j@º‹Î2·)Eâ z¡´Êvìƒ;_]^ÜWn=Mâ"Üi·roÒö›#‰˜qxçf﹖îßxӒMڕâ½Ù5…g¬zÝ-@¦cTóüÖSK‰!¶[Ó ÉG² ´ÓMgH¿Q@o#˜´û,Þ©U ‰ù¤¢ÒAâœcǼŸpÙ®‡emõWŸ1û‰bîǓ8˜\ a‹²îiFp™!I}ÕTÕI%SÕŽÁ5QÅRCIÕGÑUT…•Pë LËbT<ï{@d4¼ÊƉܘ'%A§™”´Q Em¾ÖA¬µ‹D†„Üî鶄}êú´òÄGŽÆr‹PfeÜAvØ5?Ûj^]*íÎpãÝž2nù
2595
+ ãçŒâ«7; S©ÞÐ1ïH&t½•—Àa[Ò-Ðÿ?ß7>+;é’¶T›²r’Áç´ä=M”sMÆêÌ~}“[cÀÐ÷½®Åû¡laj>£xüg§nEÒl™!4xwígv·PŒ.'Oæ)Ê­Ø|©NvaJF_’XÁ¿hàùËã´CéUSrÖÝQl7éi,Ô,»¼é9도ñÔ*W/P/¨= 
2596
+ 4S¿^¬2Ò
2597
+ w®‡õƒOÒ ú6â%ìÀ³îj¦óƒOÊ…V}#¶Ó3ËÅ=M ÙiÄׅ$†‚ö €Ù*ç9€x‹çJÁ¥…{–еhC@¨õÜ"kè~In{ èº¶Fñ ÿå܌(ïdÞå6Ër‚[»Æ~oýG
2598
+ d_™“­CTþèu|«¡›[u+]¦‹Öì!õ݆¼*Ù
2599
+ •ë6GÁ oôÀ[ô†‡ô|„zK’\7AûO­Uoc¶-p0*ƊÃâ˜õ¯ôӆÆßoV!¿Bap™ÅæúÂQ䘊ŸZXø¢H’­\"æ»Úû,ˆj¬ @ÍÁ…Å@)œeN|/€4¹hp¸G‹#µí¼ð˜D¼?VKwÑDü‡r\y¬ºžëš™oâHn…Y¬V}bËJ÷>=}ᛍ—£R^£¦«ú¡‹Ü%۟Ðù” ”Z¾±u 'Ô¾A ³ƒ«º=}t¬ß’€³¾ŠþøØ x0®Ò†ô= ;Ä­ˆÐz<·pBëãp$öæÔbk!†uÄy¬¶ä±®ŸÆzMoŽ¿™Üc͐D*¹ ·ˆ Cý>äpºZZ;ED¡u£æøq§Jÿ*•Ïú܃=}»,þdëX~pú}¹¶Gi ájۗŒ= ìb†1·^t/ä÷ß;gŠo¼Ö¢'°ý}ɗ‹ÎÇ#[MV2èëvçài„Äo0ûjÉ~,]@ª®Q—‚:oô2C|Á€KýÏlî̯
2600
+ ÈW„¢[\’çþ æ {NТÃíz°ê¾>!·2¢+"á[R« ²j›©la±Š¡¹šlÓžÕaÍ&FáU„Ì9Sǁ–—2ëµÑgm ÷r²×Nê°-aRùü_LVèãù!29+å)>
2601
+ pÊCÓ>‹Hiá¼ížP"ø@aÕ~À—vuˆ¤7œšœ):Á@gâ³Aû$9Qbòç9T…?[·xŒvÑüv°tæ‚@4A~”åxE÷Z 148aÉi™²Z1–e p+VåEÅEA‹FãYMû= ,èíhÆ Ø y
2602
+ ©àEœN¡~‹Ô_lƇ~ˆT4ð= ò¦õ‹^ޗ¢ÊQ¾œó”ûbvrÌ3말ª=MÝÝóÑZ_딏d‘>Ž”×<…’OU#ƒÅpÞ"õ1¼Ö'¶Jx¶š’^wEPߋ¾´… kU?^©ÏDªLÉsnù¬šqӖÛjÒª—a·ÙöʵV§û¯eѬ¸d–œºò›š°d•‚½I[¦‡v­D²òüp×F¦?´„ 4@ˆ.bÞRÐ.+–ŽM[\= CŒÕ¾)ˆVí8srŠoÒÔ‚FÀ(»±¢ä¡!ñ‡ÀGjt_Ã¥¼û¢QÐâuÒ¸ô0Öû™´¨<¼±(ő.Þ¦Á+#«õ1Ú»]ýrê†)üê±»~åjMŸNrKEŽ™É勃]³ì€…öÈÊ8{‰æ¦îF~7=}oV› OåâÓ:ÆT‹‚K=M%M”ÉKm%‰f6a=}·2+VAÑY¹^¤ ’¶7OfÒxƒ)…ãj1%aBH€eˆHßøJùýa¬˜}À§ÅO®=}‡™!à.¢'g7
2603
+ ðQ¿ïaãôuô<ߗ¤×Öuٟ”¿¥hÝND Ü:¦\qUÀÁÑO8²7‚95kÚU­Ù¢HvÎ넵ƒnOlÕZÁ¤<F)K”ÜÄ'ë"n³Õ˜|!$
2604
+ À᱂‘þÂÈ',z I}:­}:íI©\!$Ú¦Ægdž«ÒMQ;ËÆOH˜ò†;Ÿ†QÑØoMj< HwnÓÖ²èål¤‰_sëøYŒïWG@ŠøÞKe˾‡932ÅæØÕº=M›ÊɶÊJ_UÚþM/ÑÆZÏe”ÿ…i*vÁ§K{¸ÙPª[ã\OìmÂpJùþ¿?ª1í\˜T-c?uaîwÒ+‚ùgfë_ÀOþFðj¤®Ž RôºD¾<²úýݣÝdï죽£°uºÕ%V“­ÏÒ–œGÊ-ºz×0l>*?à4ÓÐ,<ǍkÕ¹²ÉNͅÔÔ²Ò58mÄîr?å‹ £‹û‹P @bb^Y(±ålèÅo“-hÅv=MöÅk˜ÁR
2605
+ mXÂDmÊ.œÇ°dÙKœU³ =  Lшëø"Ôuqã>K䟣´0°ÒîdŽË‡ U ÖÎ4V»@]f‚¨iŽ= "¨»Øk°Âß9B=}!î¤5ìgýë©Úz¥¦TáJC!ê”F;4…•cÄ\VJYy'@úÿ°kÏ·ª{üj¦»
2606
+ G‘•N$e:iª¬ÙÍõ´‚ÊܲÓaU¹ÈßgºŠ-vm5„o<"DRϋ·*ëÀêhx÷= ÎÕóØê§ ®ŸŽ:ìÓ ÄF±ôZË>= í€bC¦[É¿sDÜ-bÆÿ©n ¯¸Óµùñb¥Öó¥Ì–j®8%7Oüýb]Tb'…ë´Ê¡ ÜbFÝ[µ"ŽÚÃŒÀrº:P¦™„Ùt §2ë—áØÅ6Júì¦é¬
2607
+ “h¾e¬îNdž+;ÊÆÃsc7ÍâöKc"F¼ƒîCq´}„˜Á ˆéi:(„Ì@£ý¯ž‹>©‚'ª•™jaÔüςªxûtžð×êÏ?yg¶[Qñ‰ƒmI9ã)DÚP¹f=M|«§¬ªŒØ›1$~á%1Ô¦a΄䐞ÜQ¯ª¯—X­×>hº¿Zïe֏ ÇäÙ÷rAÙ!†B:m‹8$;”±–{ÅO\%E%5™ÕV+ ¾Ð°kLkN| iqޓ]&–ce6Æ= y|Ù«c¶«yºè= ¬é4k?VškÈWÉ0Çdd¼Z[®ÓëWڙGå¯ @
2608
+ †Î¦ ô:º5Πw’ã‚é2£¬+sɰžœ“F ñ !—M€ê¹kÁ®j/V¢§÷1™¤ê+oY"&h&CkR'zØÔL–yYÜ|p $‡Ç©J«{ò“°6ʊúݤ怒ü²âE ôNlƒ]D’G¾â[³"èG™äuï‚“öýŠøD±Š_º³òm«x5†­´/763X¼ñgèå‰÷tÁ»×¿»•м-“¯Ÿ”N§…OG±6ºy+þß­c^“i‹ÄkY;vùGÔz» w‚õ‹Án»Ã¢ÌQ~~jÃՊ‰.øu´]Ðã ®ìGMm†¡G@‚Ît¿¯u«ÊÈèòþ@¹ËdKÎd6õíì2®ü.˜$a"Ç>}?'J‚VfoL·Ž€,;×%P˜j<'ñ7á´¨ïÇÂ˄…9Êo±îçл¨Ë¡”jÕ¸–ÎúF'²R¾G÷£K
2609
+ Nv0¡0:°K.¸¥.Úl¥Ùˆñÿ®^!¨d«pÆ}Ï+KÌè¸éIÈ¥¯¯WÄk
2610
+ ´ÊUeFÝ=M÷=}@í^Í(4—_ïìâ™ g“íŽäÛ俆sy·äZ“eGØÚ?Ñy—=}鯛W\ŸÁ‰é ïdÁ‰90ªæ€í›eÀo¢ŒŽõpÚoÁ?””ÆF·DÌ0~tïtjL—D€2¼ÃuÝ@¾aœÅƒîë³Ò
2611
+ –›C¾áHôÃZERvæðÁ< ˆ#&!à•Z-Ê'©þéöBæÝ÷/ÕdžH¨…4ØÖ|À¤§bŒ¢—*ŠÏF›Xº £$Sýôª”ÿPÓ¤4’é}‹$±Âř4$Ü]Èô0l}Y_@7ÏßÏȭֈ6M¼›à÷è›i›ØX= Iï¼Ò£«¨œì0$°u¦žëìƒ~³þn Ó¶©±‘ÄÁ¨1]ö¼]cCa…FŸ9¹jé>­ä~^X0û)cqJxÅãrD—uÊÔ9J&²/¥L–ç#Öx†vÒº[³¸
2612
+ (¬«k´ë¯ÝÜÆwêÆïâÅW­6Ý©³˜ÖaþVŽ+¸{.Ÿ@íºXózHÁ6›–@{)íjÂHùSÀ
2613
+ …'G¤Dîë-Ñté²N$ÎR̤™oî4÷vëì~Iž—¼_c@ÂÝk‚95…Žø§PD M—J´ÎxƒÑQ©Ãf•aÔv0buÞLQ™µT4eûÌúÃÁéq=}g°ì¿tïhݐ}ýºûBp}ËÚè·­’2‰ù&{íï_ÄÆi »íï
2614
+ œÝÿÙë,¹ŒHï:†á= SÀ©Ñ•1JdëÛ*}\½ùÌ_ÆkÞ:—ÉٜÂ>dÇy…îÐ)dH4Åî2SY†$ÑÛ{‘TÂð sThæÐäö«-5^Ì®SȌE ^g‚Oƒlö_¹/·´YûO
2615
+ ˆû+Ė¿ë¨ðetêüu¼t~#dꬦð)6|ð—ô}óǀU æ0³Ô‘|Òjá/䒓˜å^ªóéý‚o¢øZ&ÌÇl,¹Fù…ä>ퟜ5voÓT[2'ÄtƒXè>õ•°ÊJæ‹G<ĬmoKijÍÑeº¦ïk;ûµÍ„ªÁìÀ#ùº}O—D.ӊŠŽaÓºC<ÿh¥³@c.6ÿõMŒSëà+Σ¦ÕÄÃÐÓ$ZÉréÈÜb}l ¼e5KHk]\IƒŸ“ó‹aGAk£¼˜Í"û
2616
+ ûϳoõS ÃI1ÉUŠÁñRÌK¼)$H1 % )ùøumÃó5T:{)¤ä€Tû¿ùðU»0ˆÐY@ԄQ¥Æ0RLÅ;ç±æýb|E¸ù$™ùî\µ1v¶kMè5ñ7¦0µ?’m»ÌƒlõuŒ³_ôÎ]_ ªÊVŒ;²·ÒiÃ]š-gk0Úkø¯øw®yä°zb؋‡èXD¯!jÍwˆ¹cà.zj}ëïVƒØb8W@z»+ó5(= àaôdQnGhÍ*haóû{¤E°þép–ê’à¡ozô NSÜku¬™¯xäX¿åžR|4.³ˆ@¸{—£+͑*ï©k÷\Å b?¾™!þ¨´>rƒ$ðëfÙã­o>¼9ƒÉŸ¾Px)e´hŠ˜jEžTêÕ= O¬IE Tóꕗ)RÍbϒIsH“I·Ÿï<q:í™ÖÏ719A!Húǵàzwo·ä¶?«vs×BÃ|3´ÛʳžB>!·E˜K±µíü„8¹d¯ŠÁÓ.
2617
+ ¦xë¿ç ·çÐMLúDqæ't•¦-CŠ÷¬#É]¬§ÙÅÑB³ŽR..6žØà]‘ÌÌj‚zžÈQéâuò-nE@ª‹Í@Œéàˆ"D*ßz¹i.g®àiŸüªè_{›•Y¬t§¢Ò¦ ø7bä{ôè¢ïï¬8šˆó¼¼˜¬ã´‰Ÿ{®EÎæÀDH¨ï™ƒªù
2618
+ Ñ/M˜lqIŒÜv¡d„¡!«¨®C@X*YF_NÏ.³Üpú432‘~7j²7ßhÂüZõúçûÌEú6¤|[íž×4Œw[S
2619
+ šªý£Cê~j®™Mìj¢I€W»¨ûsøÔ,óÝ#
2620
+ ¿œÄÜ Ìgr‘Ϲ=M™}Ì߄˜ù´‚G&ì6ïÊ!Š C°|ÓK€cîëÿ¶^£¦ÌZT.šÀƒE_ò^ô72Ð\öV<1¡ƒ
2621
+ Ùc&£Ø“X#d#‰¾Ìbp/5Û{o5ô’ƒŠ:¢¨Æ©sñ©â˜n= 5×rê_€Ž2ü)…«¤9‰ìk”kÝuáuÙõXÀ,ËÜwòJ¢­™¨sÇ«þ«¯ó8œþœ”Lúƒb°Ò±‡ŠåjXYã2a λ6#'·4‘ËúFÔË0+ƒÙÐT!R‹F°OæçÝÞZ+™ž ’( 7/öf÷{ƒÌ2Ü®Æt€žuõè-÷é|"víÙ2vŠ_#|ù3>.gXÏ•:÷røvŒ?>¶IÄ3ªÍÔ®i"ÿ=}p2†^0Jž4º(7QR‚мá]ÑeÄäSÊØ-ÉÛMpŒû9xªz’€õ22TécÇÿS*T¡ÈÄÉQɂÒÉ©Q©Qõ½ë%ÂÄUol44*TÌÀUaÈÔÉQI‚ÒÁ©Q=M¨Qµºë%ÃÄUû
2622
+ £CEúL€õ52TI‚ÒÑ©Q=M©Qµ¼ë…ÄÄU›l43*TÄÀUʙ.¦9ïœß]¿vŸô.CbjºcŸQÅ_̒нšxYýT ¤7©e®KzâeËd‰Fj¢YãÛ,˜ãZ9üró#v“÷›"7˜ï?ë]ÿÍJ"Px"ç±è$žšpÙ¢Êÿ=Mè-xò±ÌŽ‹{òp¡Ddú%¼W[w®}»##GT·é l†Ð‡9ÜoL´ÉºÒc䓎ªHW ª¬š=MÁïÁXŠ^rø!pJ#›Úe±’Üúo;¹æ9= h›ûé×@YÊ©[B|Æ £®„TejëZ<jµ°­° ýÖÛ£‡D;U5B¶‚,râ _¬ï0°å E9ù†ÐåNÖ= îoÇV¶Å”¯€½w -ô@ É©Zª²ïd'l…¢íLÁ÷âs¦o„Å×ô°‰Š/Ò lN_Ž3¦%=M––#ü1¶–ÈH_aÛzkhÈUGMñ79µC÷ó÷¤—…[XìÎÞyј¬ÑÕÌ¿»jU5±Ãêd†ª©‘&’ž¨Ù:‰ó£òݤ’Ý%Ý.Ý¥ð/NfJÊa/5H¡ÊøÉÅD>ó(©÷èqª3l>æ5MA3h0•…=M=}*¤¤Ã=}ªñ©Iòð;ªó¨”,ƅÃÿ¦Ýy_õ|eªÙ= 6]k?“.g”ûÖNŠG?È
2623
+ çpIjâB°…
2624
+ âÒ {W‹GË&þv–È|Ô¶lo 8֚…=  ÆQyºrK+%>aôŸ³àÄ·°Wý@Û «©ëþÐaf:„h›Çòê“(»Úfΐ¸Ëœe NüŸýÔG«[ƒDqÍrVËèE$cóDG*é¹sAºSY¹²J:(¶Û1zÃC¥4„[óžËÚ¯¡"¬ÎàNQLÊoòÜÅ|ŸmÖÒ!%ÿõ¾vyfN¢,¼Õøñ™1«
2625
+ =}9vo»Þcڏ/oCM6ÿ>IãýõÒÇ2•Cf
2626
+ ®ôğ~oyþp$\±(æ5j
2627
+ o¸#KVÖÙÃÛdjbIÀœd¸žÖŒI­¦àÝu²èÐ#щ>BUý/ Ft4Ù= À,«&KԞH?IH)N•"ÓeÞsçMñ?ï//Å͝ÅUÀÃK¢,$§8=MH00z˜/¯ò®ä[gu<™ÖWY\"DXÈzQʰˆò§ZròÖrn^fvvWlîy–Ö2÷–VY\Èf–s^^vvÖÖ_†:Ô+KPK@?Ïs¡§Â+«)+³«)‰3‹ Aœ3ÌÉ ã½ÖýÚ—–'‡šÙ&]«Â2uYÂ×uì¡D]=Mä®|'”—“B¦?´ÃÇR܏Køw¼{‚òâixÓØ“ßñü¥®“ߥPŸõ&‘o횞QÚãé^½íK_ñ}¹Ì»¡LÅ3:~LoŸ…}™ «.îþ²z‰ÑÚÃ{WºçÀᰏݽ)ñf»û/ÍjÇC±³FÕÁR‡nzÇlæy?Lðl4×ߞ$elºvь{­/Pý¡ÑÊY‚í5ýXmÂÅŁ­KÂ<4GÆÌôêêÄ(qxœ%Ȍ,éÛÃ@³âû!Àca›?¡ ½ÑŠ÷Äï¡Ñîªk'삤.‹ =}–+_¿"‰Æ™‚º±e¢ÀBùcCƒp¾Øp>ú¤:và÷¯¿ãÆ»5¹1 ¢lÂ1—Ã0øcÇ ™¤«}¦{, é´ëwӐ¤,vÇp¶ìv9ћÂý}£}Ì ¸ÆW0ÓTsq>–Ý_Í¿¸5ûN7í"F¡üŸPÍÖ.ÒQ¦W:RÈ·s~ùø™÷WD4Vbhw—aûéÃx(c*ÞÜo§lá¸Ãйã쀪¢B'UR17Ÿ?†cٗMuÁÙ*=M]Îñ}eÒ¦†Û"C47”IS)ÏNJÄFàUbҞýO×[òŠu•Ž#=}ˆ=MÕ(Š•¸‹º¬qAš¯_B4䍻Äå\<Lú•=M=M»Ä•ÉÂ
2628
+ ]Üs.wô1eOsíËÄýH&s5
2629
+ •*-óLÝNb2¢OyrЁxÅ6¹ÁŽã„ëù¡Ã?>ϧ?ø)ê=}/(Š¥ÓäzLŒtëäÇ=}zòL,ñÞ:?sr‘ãçùûZƒÏ–\ø? ü@b‡«óO+e"+,+eøi=M»K¹Ðüõ²ÊŠXm bõŒԈ³Sr:-S&= ®Sb9ˆWmqaê7u ¼ŒP‡™¬•óSvï)_«GõL6@½—‚‰ûuÚSï©4é¨m±.Ér+¯ôûÒjG¸^µ¦‡ç8c€<¨RÚàó|wiE*®WA? ±ªB G©€„žGMª²Äf2É3|øë8s€žG„k­ûÎåàñdÇ˒-ÓxLúN—Òˆ´í8«€ÄžGpk¥Š{ÇëôAyxĐ;þN©äàýòȪ’3F‘ömg%ŽþN)áà½ó´ªÒù¯¶µ½–…x?Jø8±¤…€CJø8Ä ¢²!YÐgGò)!òⅎþÎ'?›l«•äo,\÷K;›éJ®4Ž«ü¥iøz7}¬ú= ÛÅéFSe,íKC¯GQ‰¥„7~ÑäO²8œ{h©ÀœRUêðû4½þa㝦%‹4|OKVÊô'è&¯öáâ¤i0[~õPƒCRϱDÆfIIÌð= ç³Åy€¢0IÌÈ݋ŸþùÚÊçï†Í_’:éÖ\bñ*|y‘ß\îåcç>)½©.Ã-Å}ÄTê, ±'´ kóÌû A^†
2630
+ *6-H5HP>Q•ûí;„à x‡¶<ãÌaÂ쓌ñ{]¯¸ Ý1‚1½ 1‚'i0‚gñŠQûƒ<5’½Ž–ƒ’èòe§=M;~eoÂ_ ¶A Þy‚CªÃX}ÌXñr-‚÷‰ý‘«ŸF©Ø)Z•yŽ™FMZZU–Æì6ÃØÉZUñ6’‘Zm_Tç6hZí_Tß6©ZEgÒð6õ_twÎõö{Nà6]'¤« ޑ+à—ÐA…gÜÔ»‘‰Óþòðò>jCG҂i½±.0œ¸qæLÌÏmžk&„D°_ϽYH[{u_=}êRʖ4«H©WOÃ{…]:=Mêjæ5ªH¸–Ô™IWOè=}XHA ôc½ê2cýë’iæ¥ϐv:ˆvŀψvõ¦Hª–4¦È‘vgÈóA‘D°å'.>7>„ùk³[>= &k›ƒ¦>ˆ&»›mք~0[0«
2631
+ Z°€0W0§Š]ððV£jÃC”h=}±¸Ë!ŒáÍ{jØT·\ñÇÏkX>9ÀÂØÜ7bˆ]xà=}+jÚéæ4»«˜çÀp@«‰¦@ˆ+‚bª#Â+/ªOlOñº„ SÆò1ûøîÏôêáó§½§lá̧lÉ$ö‚ òœ¯b¯ø‚¬òš¯¢ŽÛ.£»¹/øºò0’¶t©Þ{8º_O«¸'qºŸbZÙ΁¦Ý8xÚ­‘“¯9¶Ý qù;'0ñ¹¤"‡]ÉÎS0Ց«»XÑ*9…$™«õ1¥6d9Cæ Á·¢–Tž4d´C„*ì;&Öt´5}0‡a{ºßvµåQ"T ý&†ƒ€¢™[…émKŸ’´ogÅ\8Ïï«u+¾ˆ"éYq*!Žˆ >º5ÿí;'ð Ͳ {LÏÙÒ¯y&Ôþ‚‡'y"]z]<͚ð¢¼í–ô
2632
+ "Sâ-—è䧋þ[蛕+Ûn™*_N:ºìÞ/pÄݟáñü(,éðsZÜé p
2633
+ §Xe®± îhƒøWƒÀ€c}w‘‡¹rÒçÉ»tÆ⎬œryäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëÇäëgàÒGÀãsÁGÈ +е Î®ßT.gÑí´·ÖÌGèCC‡/\:a ”hæ%O?Ö:ýXH1 ´dÅÏvÿ:ÖRÜè=}YH¯{%[:-ë’qæ%~q楁Ï|võ¨Hʖԯ»–4ªHº–”÷:ÿÖ÷:̖´­gÈsçÝ;KNðãðôhä´¸Jþø–­k³Wøþ[Àk³\>X&[›–à얡›‘–‘à<–É›iößø¡´õ6* Á•dm¡$tu"(†üg•ƒ“ʦ÷1@nÚÿ´ÖÞ+Z´Ú+¡¦d+c\ Pd"ªÓm-vAé ðy¾šó¯Ñßà¸FEçð‰Eͦl1Äö‚Ü“ä®K{êú…ø‚L²¯âOX ¸¹ÂåCp×t/ÿäX¡[Á ¿jâ @ž1þ—þ.™GZJ¦é“·‘ÏAîÁú»ª«Å×û,ˆ-“ì'‡¨Á«+å×}È5¹µ+‚yƒö€Ï£UDõTçPþhT„”T}ŒQ€¥BžÃª’…KiÒ œ 8ϱ•hQÜ1íˆIžÇ Յ,¹‡6žo
2634
+ 9&¢]ãÊy¸_ÜQ o’‘^l™xÊÝ4ž$…›81:wã™þ¶83oÃî€Ë˜$&q¿"çQ”@L´0ÀÐ\àrÔþªªbʾL‹¶ÒYxÄ&êBW"Iðêî8³ÓߋYqViEg¼Hñű = pK†=}2iu{ñ®¬i®8¬sÙ‚ìŸþh!DÀð\ÑÚg‘â³Xõwâ6v$gc݆hÝæ6³ŽÚgr»ØM7fœÆNô|Îë6gØ-^°Øug^Tض£F\kØõfÒÜ6_”¡FlÉUZ­ÕØ56T_”SiR|M¥F~M¥F±2•ÅÉUG¤KÃÑ݉ÞÏÆ*tÏPÿ;¡áaIÉ ™ó¨±.=}‹TÖ©PÃûÛ¤?=Mêrûërû5ªÈ>ê”ý:&SÜè™ýÊ«÷©PË{ݤ?  dó(½êrû dó(°÷©°Ê è™ýJž–4JäèYýJ{ݤ?è™ýÊvMênæå€Ï”v€Ï„v~όv±{ÍYHè½XHØèýYÈ­»–„ë’o摠ô= è‘W§Hš–ďh#*mÝíM@Ú¹2L™S‰Ü=M}|Ù1iéüû/uT?NC6ê¢hòè_e*hB%ümÜtêŸt’~¹Ø,:*¢ØUD>¢Â‰/@çG¬å*¾NÃJÿ= µ× 2y;UÆ­I]yðݳ+rwÿôéç9¼Ú†ð{zRã¹lS¤ªNY¾/!6F°ÑÖ°©­N>üÐ46tâ1n˜ø¨scwܧEâZW [¸~Ð,7óA;Žør7æcÙE²J
2635
+ ½è[—ˆ\¤+ÿªlàž
2636
+ z,ö¿½šÿˆŒQò²=MËxG\¸šÔ_èGjí}¯ÁãÑr¾Ñ"Ü£Ä,MA¹­É“èE.,,AÝ]X%*À>o
2637
+ ÍrCû êì- ÐLáphL=}Ý tæSA/CW/åb½µŽfÑÅ!ÔËRUeÃ÷’öV©‚Öˆ;"
2638
+ ü¢š.%êNäšÖô= f‹¹E‹šÔ†”¦§›%®ëIñaۋèʆ9 l¶æbAaëçò;hÖùÍKPÏr=}yl%a‹&Ë-7©dµÆNí×é/öø
2639
+ ·sÃËÖ Xð?9d-ÔäˆÔ´Tæ³õ»¤ŽÚšØšÂ"QmId
2640
+ Ú(!HºÊ;É·Â:ôç¬Õ¸+Ù<Ž0ÁŒ†›‚ºFuiÚÓÿ½™XÆÑ$9(SI'Øeqß^£“FšH¬ž´ç­àewŠîzŒøÝ䞶òÍlÑu¬£e)ð¬"‰æ¢‡ÜaA«<|í"ý¸œ†ÐwW>wìŒí$¿Nì~D|l‡¢Mg9ʨH7áÂzs!„CA²ö=Mª4˰ïãÖÚXHLŒÓ7yʲã‘7«N0†<ý„özaî “yGåxàè¯ôk C|Ðí5ý^úyÞ>û NäT/¼uśjì¼#pôQM ø}9ì Å->7Z¿îP§µÆ†Jd¸KKw¬5G(—ÿÞëVÓ®=Mhší–ÕÌ 9°s‡?…BzŒìŸMɤ€ªoòY¾9͐ÿ¢%4 "ô¡¹(Tg˜”=M¥g&«è=MÆ.s¤eÆÝ/±=}Ñ[›]gPéÜ£í¢ªƒ¿õwÂtÑb•Ð,ü…u’¡q%ø\Ëq æc閺{´à¿æüXý>‹öM[Ô܈O‹{½aäÐvöjæaöÁås¨„åñôêläñc±¦lªœÂÈÔ7ÂÄžɕ“µäãúyÂyD˜wMvB¸§ìۚH¢ ˜Ô؋ƒsdDôg­Nqþ×ta4ãkÏrÈv1‹?Äs9–0ËM<+ڝ#3p7f´9š³[':ìI>|G&\’ÎU= ]Ó10&8Ù9“ÃBGâ#´9,Ã)â•áºëgOk\¦5LÞ9Äj‚H–z†É€A4ª™æhȰÝ\“ý©9È¡o+2ޕOøpGm,†yÁ ®YúãçÙ8ûä‡kœöt¬åºrRˆ×)h§$¤m;BeJTx&µÑن„Þî h+v‡¦s¹ãNcþ&ÞóJž§¯É¦
2641
+ š”5y}NR&\#3äÇo³¡<1€<]R¬©M$v¡œ¥ùØ<ܵø¢œ >ZO‹r‹=}ÀÕâöœÀ߯}xs:'ìbøîpxàMÿ® G¥ªBøÞM{eýª´ŒŒß'ÚnûÍOâjÛo~½;›l¡‚G‡U.ΖØÒšY׺目«kÔnµüF_Z·žŒrã¹+pt€’AÙ¾Ûƒ~FzþŽÔJ +n—Ó/¼{©ç°àŽîžòàU@¦x¨¶èè-
2642
+ 9^è*ß!…ò¾Ô7ê4èèµ®I1üðµŽ3w±ÈÔ7ª˜1j·Gé×R§ §B‚Ã-ç<m\—HaðµÎöçZOÛyؔ†·ðµŽ—Ô·âFv†*Ç/ìã% ÂØÂ!÷𵅼Բ°çñ/i&xÆO΀®„öš¡"2i¼_¥9ñEkùø£Q¡šêÄ$ö PÆT˲‰ÚõÞUÂb=}5•d7}øFõ›ëiO¥683wRšjT¦»ÉŽU|„T¿^•gÛU£ªÏώU!ÎÅ^•gÛUƒª‹òUj„TÏ^•gÛUꏓòUŠ„4u¥š75›ëəÀòéõ㇠‹zÓã³j)¡ÈÞT†(j=Mþ~OêÕvkŒžØ¥{ŽÎusç6©#Ý5=}Ú:|k‚H®7zš/žÜŠë¼-´Ûþõf•(oŸ,DÈԟZûe§Ä}òþ<Y¤Äw8±WaX WÖ,6Ö̇—Ä}¢ÂgÇõJÒÆkoãð ÛqPZ8ƲJºLj)ê7ç^ÕµU~¶þÈRáÆ¦”! æ;½Q¯”È‚-’!%™ìµB½Oû¹O½gÒõ;iÈ R€ºOKÔì5ŽìµÏì±w!EL Ò@®ÄÏì%˜ì5E½OÙ¹O¢®:4
2643
+ nÆk€jUðx=MË7Ú}Áº±öûˆä s7$űšè¢š ß
2644
+ —ÚØý$XÚè4±þ‘ŠðÈ1[o¯Ãb€´ÿj2Ë$Õ0R½¹g9¨´PòèXâÖªŽå rÉ4e'ŽÜ~éé¶RÙÖ÷3Òb×È$tÒَœÍ¿!nüê6âv±?½â)b³h6ÛaWš"çR6Z«\ëv4š­Ëá/Õ¸±®­®p’ªÄTø_Õñ%¬Š9ÓI‘µRã…T m•,øŠcYŒ›€S:ì*V°ˆ= {yîå5–9ÙÏY°‚M8ùVAóìµWŸhŸò€i1àú
2645
+ ðÛj†mZA= ~[ÊVvè§ß"óž63ž4áò'쁝P⺪Sò£l§†½BŽ…ÆÂ´ž=Mô-”.0²9ó"ð¹JÜúYëÕ°UÇԏеtbߗ¥ºœ‘âzdAÚ'ì™!»
2646
+ jêW”?ÉI|Ú~á€ý!n„náèÏ@u@^/éš*C=}8¬+·µo¡Šëûl펇Õ+ ’ŸªÛIÒ¨Ù÷ÞS
2647
+ o…ÊÚÊõptéq N¢·P1S01$Ãæšï¼“e…Ú§wA9-·*u,fåëº(nÌ8æÕî~âPñî6z‰ÍŠ«¦e• 1kM*{k¸g‰=},i~èø¶‰â7L/Ç qÄÂñ,Z‰8Ž½Þ¥:Ý<ÚÀò…QZú%|0ÏßV¦Ô i˜_ú»qµ€²ÝÇíÝ,l*àú= ÄC=}jµÚJzaö5ÎioûsOˆyµØxšF'âJÊ]yÕyޑ™Ú‡œ¶’B2À!LG¢˜Ðú¨ß&*Çúô¹âj-lKÿÅ(^Fsq5¢#~DçRÅpmí)¡”qªz4»+ìf“ýhbÛ²‘;âú¥z…r¼iñwôZo¸ÝùM$!Iç¶ad-&vÏðÞ7úê˘ÖÎH­iÏzRÐÚËA$#+ê<¹-t:Dн]ozYwîóÐH¼ËðñŽï笹¬X«£Ã Tµ˜6uAHЋœ£ð£ËêIuI%ÕfÕ¡šøõy5BÁiÑ»!JÓôÝÈ¡9ÂtT æøÂ÷8=}Ó ¤é:šŒž܂z(±û÷Kb¡ô0ŸÐúÌ®»‘¹)ñ­ÃOw %MêD¨]l<ÇńRºêçGÞ°@<«øú•νq¸Ê–ÕpÒ.üݏ‹Ž‘6P¡\ÞßI†G}Mp/qÇÑ¿v,Ч<„‘˜€)Ø”&ê†ËFŸªèž—:€ì\Ìr_N’\ë¸ñb+ýàzÍݗ´'R¡ÌGÙ|ÏÆ¶
2648
+ j¦sÏ0•ìþjðW)€°âmSúŽ›ç'žá8šº„I.ÄhÐÌðхëÕÔÿu$Cl±Â{Œ}(L ÛûøN%=} ôÆáU¹êb׀ܷ†2]îý±m¯ñÃ; cí 8·8FdßùŽuÝMlÅFdto}ìÒ!S!H
2649
+ qiÎç0nw¡–¥W¯€XQ¯œ¸.v–Y½àPfÂð‹ˆºêЂԻ0ºMZ÷Çÿ0= £év‰Gµ·F,Ý×·ño‰G§v{H&xë Ÿh±ÚjE†Ô¤à;66ÏÕ3óÍz;—ϧ4ë¥;±Í$Mà“Gêá&Ðëš o!Œ3WØ"^°Uµ´Ôù½…,b#%q´@;lxb_mŹ‚Q¢óБƒÊö´˜36ÁRp!
2650
+ òòÉu-…;Hq;§Ï©ÔVcWHT4\V—daZ¼¢·™V—'daÿx]d_rqhkŽ•Œ‡zy€ƒÆÍÔÏÂÁ¸»ž¥œ—ª©°³6=}D?RQHK.5,' #æíôïâáØÛþü÷
2651
+ $12+(UNGL9:C@=MûøåÞ×Üéêóð}v„‘’‹ˆunglYZc= ­¦¯´¡¢›˜Å¾·¼ÉÊÓÐßäÝÖëèñò ùúOTMF;8AB%30)*¿Ä½¶ËÈÑÒ§¬µ®£ ™šotmf[Xabw|…~“‰Š¤Ÿ–¨«²±ÌÇÎÕÀú¹”†x{‚\W^epsjiÿöý ìçîõàãÚÙ4/&-"!<7>ZY¶vVVXÐ1 Ã1 Ã1¼Ã1 Ã1 ù13•UÓ[˜€whw\ø€È÷VH€cˆ€ è÷°÷Y0e\=M÷= À@÷€÷Zà@þ¤6r¤AlDAü6i¦ÕF¬uFbå ^! §Á­]cñ‹«‰†e ‹= 9‹¨™†*yŽäù“áI“)©ß1Ó&Ñ,qâáSÞ%S'ÅN-WR%@q1”I”?y‚èBÈEœDD´rÄäÄC¼¢Dª"
2652
+ $Ø$CÂâî¤BÎbEžb—Þ—ÐÖdY= ØVÎÅ=M Ã1 Ã1 #0 Ã1 ÃóRÏ ÜlÝßn5(‡ û j‚(¬+€ök·„¼=MÄBÙÃV}0jä8ÆÁ¿Ã.ßCtq±³¿åCt51}6©I=Mvœ†*T&)Ô1Ä=M³’ÌÜmC
2653
+ s9h
2654
+ # äIÃg½Æ£¢³I´·[ì@ǓÛaŽÑƦÍAŒÒ-µFµc—ú\uô6ûÔ,ÍåÆY­ ü,—y*-Ì>à [Ü·
2655
+ ¤+_nþ™&a3‹qÈÁ§ƒÖà°[û¦²©Àpº˜ÐãÝp­Wg$8XŸ‹8XÆoåÞaÉèåÝ™ÈFáVR}9nVÇWNàuúYEÞaÁ|„VqqÌ·ÇWŽÜézâS[¶e/’‚zQ®¤²V춈ÇWnþYä‹VV^öÂDÊ}™ž^wfhXwÚږž^wfhXwï†wwf˜ž^ÚÚfXwwf˜ž^ÚÚESÞMEMõõ{U]xWxòÈâf¨²Éábmžx$oÀIß\•>ø#m¥~ù a= ’ÈårÌ" ÞY8"h±Î9!dtÂäq¹î¹ZŒ"ˆãkœb‰à_Ynø%µ@ïdÀ6Þüp‘:ê,0ùÛéäÁ<ðDÐ÷åÄAûé!@8Øä0‘=}óH€Pöà”úì5T9ÝðQüî=}´€7ã Ñ;çàÐøÖÝDA•JÖV lZV†<|QÃ1 Ã, ÃyŒÀ1 Ã1 ÃA3·Ü—= ’ž¦×ÄNb”Zs¶rÔØµbÒcvÒWL·k[}o2ס.VUكa¡ˆR]ÕØ[Fs„«F]Äو¦^6¾XF\ª‰Î^€¶•Î[4gFo$ŸFW2ݳm’×W>÷›§åpÅpµ§[ãõþ¼ª³¹ö‡ß= þ@þ)®›S¾lø'Ã#Q¾'R(Òá4µ‹­ð>ß<vqóñ +ßo" ,‡¡ñ,<<©¡ ô¸p°ëî¸",’ÌÓ(Ì
2656
+ sÌp‘,¾¸Õ¹!0E0¥0D™RÁR=MDÕRÄ¡=Ml5åõ@ąTøÑÞ5Ë9à‹ó¬2ÙdÓArʄÇ!$ŽÄþ))ŸŽ™B@åJ½ßqS›8‹GUøUç~ß%PKԟU…Ç÷=MŸŽ|2K0_)q{êiðÐÕÐûÚeíÚZJ.>w;‹;1>•;-þ»ª¡?ý¢ã8þíȇú©,œ5ÿ›9ðǁK©5ãeí*»@4ÎòŠDo}wËcœ\ úãx?ðʌ·Nžèú½ÙШ+öºFí
2657
+ †2zuéEÜCº•òoäè!£•¨HÝ7¡H¹ˆÜj”ðïÕÛ[Iõo,#]<é†O’ðE"­7å¯wð4Œ¥m … =MJÓP+» ¡õîc(?ϼýó
2658
+ ·02Êó Šïô(ô)”£+J·°ŸüSñ$Ù:lÊ¢rî\¹éàŸyNc |Eé_VO5ßsœù^VLjQr›V¥çë.¸*€7‘Ôi*à7Ú%N§:9{·ooŽäÕßò£ÝÞ+¯;xÜ Þ=Må–x@7w¸H…Hùæ²ãâ¥Ç×=M:Ó yȽmό>t—ÆVfVVŽÚ4i0r‘,ü#¹Ãä )ó9˜^wÚf˜^wÚf˜^wÚwÚf˜^wÚf˜^wÚf˜^wR5M…PõŠ\|†‰NðÃÉÄ:âڏ‰<p»ÓeûU¶ u@±îÛÍí6£}ÆWy“ÿ*ÿªÚЬࠥÓÿo»ùâ*
2659
+ H¬ñÀ£¿[ÆW¥e|°²!Ùk¾¾uC^@0pvV r^v2ßà’¾á"ÚîäÎÞ‚ “HlQGjqƒ%H‘Ah‡m’¸vœüºo^Èdà—åž|.Zyèd4úŸÀ‚&aÓÜӐ_9·ô¾yRڝ°e-j§näCî‹ ì $Ì'D¯…¹ÅBçë 5¬)/}ªÆ„$iKó_àù Èp>Ùä¤ss:–ŠL]tFI€TUÐÃÅD=}RڍI‘4P»ÍÄaU2jt8ñËEá¡DciÍ7œNå÷ÆÂ÷‡9ŽÔ–
2660
+ ¿àù*¿à¦@^š±r,1ˆlÀɱ˜Ãä.ºA.¿ å¾sýë û¿ûÃ? “øË±˜Ãä.ºA.gñÂoƒ¹÷ M’%I«Eµ |*p+XÙõërdû˜Š›Äήǯ®æxànë°×å"’ rããšÝmêQ!™yçg.Þ2yðéÇ Ž%ŸÏÂÓë ‡¬¢aò†ôú?Ã¹ú‡ÃëúÌæÈ¨°SnŠðts•¼Lî¨O*ÔeñˆÆ2Ð2æøE ¨’=};?KãœÊǰ6òGò»ðŒ«ð0,–¤tË,À}1fš™Ç$ŠÛõ(µ¼d*±AcïN(©ß©*N~C[—Údôl(çJø)î_‰”ó|çîî°Ù¥ ’!ò㣘}jªQ™i‰çb‚yMâ<ì¦J2è­*M@Ðs«×11ì«P”1 ¿»±u¯†nÆ\
2661
+ [Lñ¦”óu¿l¢|4*…!]Ä®ÅnìY¨Õ¥où³4›6øèv…v^¨aá‘óÛDD:¸¸ÇÀzIpɃ Z³¬&9E_ƒ9ì¸¡ÉY/ûmimÿB~=}+ÙPh„Ηî×"~VÂîKDü:¢¸¼ÀiôéÏßj!—½kŠQñ™ !ç/.B2!ðO Ò%kÏ´Ó3‡¥"a²‹´ :?‘Âaú[Ãs:2¬½Ìc ûÉ9Ã<l)rÔ¤ÕaÁnF¯Ó\Ù@•ÿwVÀú’X¨ã‘œùØÀ‰ú ûŸ9b?:ÎíÀŸG¤X‰¸i½°ü¯g+Å\ïC¨=M«Í?#W½*ïÈÏÙ{eôu§?©Ózgžƒçí˜W”²¦CÚª½ «¨÷·s, ¬¯ý³ãGW­ŒÞA£AOcla²j‚ãü:|¸y»ë‡^ùä>Œ·q‹
2662
+ Û3Â1‚ÇBV }=Mi‘~² ™ÌpÍB—Íaç“÷óB„1„¿ý·•Ï˖/3ÝEKD[MdàÝ¢ÝNÙì¨.kÇ·û”eŸ~ù«¶»¢’"í¯ 7àž[¬D[@è˚ƒ+~–cÊùٜoח>¦c±ÃìÀb–¡Û¾û0;dþÙÄÍÆ~^mÀ¸ñÃ#¨é—vYÖx¾QF´Å….mAj¢³Òýû]Däʹ“]:™8W˵]3ùE‘DöÍÛó¦ækÃøjŠ’}õô% gÒ‘Vœ¸¥}ü}R©!yNÇ:‡LMÜÒAÐ'Gî\¹-ü-R!¡N›:[L(ZÒ ÔxÜþeH>ySGtÓ}™4ÝjŒ·¡žàÐÕ3·Óoø‡í¹@ÁͬЊñ8MÞ¿7 ¾ëˆ¤É= Z·óGАÐÔì¼²“•{Î¤ð€¥¥ò-²ZK†ÂÖ$´ µx¼èÉïŒ$%_´ëlIh­Vù¡5ßv<t¢ÓÓ$ÄÍÖ$½íQ[Ç«…0jÀÔ[ÔWTøG-~ÀSÛSíÚïR= IqD=MR­Ùw?¡HíiSœ3iS©ºéOgÜ7¬=}¹M‰Ð#U²2räš]êƒd3ÁSºO{¼Ç=}aM±Ðe1Uœ2k䝹 ¤#Õu•ˆT]˰UÃUm—敽T%SåU¯Æ¦PÿR隨ù[åãÿ>_AnQ®8zŸˆõÇÎÍÆʚ”ðn[*@vÓ|¨½ô܋6ã$‚MÎð¼oÕ®s$Þ¤¨ÀÖ¬³4Ö
2663
+ îId35ó£É‚AõwŒÝ½Éê|£WÎi·Š÷=MCÞ±úõ¯ƒ:O6ˆ?҃nÎö±5֒бÑNÓ½çуÓÝAµ}à7+'‹ ¦IƒF¥Fõã5œU¶ /áߕè¹ÓéUÓFÁèzÝiµ-RfR}Re9e&±¡Bd8Å:µïEÉ59UhRjë;ÍÖw3wS—:éjQÞÕÆ2]>MB‘Uԇg4m3~V†h¢Ù©f^#ˆFÊXwí(Û”ÅfIúr±/¤0?óBtTö®€Cëe~qWo4ܝá+N8wÏådÍNý8y¿–ÔübWuZRdÏã8Nqøk¾]ñ·l?˜”²v@\ÜûOˆ²è;ÉVW¨Tñ×óçí÷çÙÛ'å7ßGWgýw÷‡ — §·ÇTWNgHwJ‡<—6§@·BÇ$×ç÷,&'072GªW¨g®w´‡¢— §–·œÇº×¸ç¾÷ÄÒÐ'Æ7ÌG‡×ç“÷‘…'{7yGWW]gcwa‡o—u§k·iljًé•ù ƒ)}9wIYY[iey_‰q™s©m¹gɬY¦i°y²‰¤™ž©˜¹šÉ¼Ù¶éÀù ÔÎ)È9ÊIRYPiFyL‰:™8©>¹DÉ"Ù éù *().94IïÙõéëùé ×Ý)ã9áIÿYiûyù‰™=M©¹ÉþXhúxøˆ˜ ¨¸ÈîØôèêøèÖÜ(â8àH#Ø!èø+)(/85HSXQhGxMˆ;˜9¨?¸EȽطèÁøÃÕÏ(É8ËH­X§h±x³ˆ¥˜Ÿ¨™¸›ÈXXZhdx^ˆp˜r¨l¸fÈˆØŠè”øŽ€‚(|8vHªÅÅv÷ÄÏv¿ÄÆËÊv¸Ë¼¼»ÈÉVVVVT˜VTUœTUU VVV¥æoV—Ú‰: :WȖîm]œì=}—äeb»'뇾¹Ý‡ý×\yî!6Žîñgޏ î±ÞsÞYÞ½Y_l\‘2‚U×ÖÇ×_yÆÈhžW s‡7<9X€7\8k ¦ –œ\|2vƒ²–©£ïjúV` });
2664
+ var imports = {
2665
+ "a": wasmImports
2666
+ };
2667
+ this.setModule = (data3) => {
2668
+ WASMAudioDecoderCommon2.setModule(EmscriptenWASM, data3);
2669
+ };
2670
+ this.getModule = () => WASMAudioDecoderCommon2.getModule(EmscriptenWASM);
2671
+ this.instantiate = () => {
2672
+ this.getModule().then((wasm) => WebAssembly.instantiate(wasm, imports)).then((instance) => {
2673
+ const wasmExports = instance.exports;
2674
+ assignWasmExports(wasmExports);
2675
+ wasmMemory = wasmExports["j"];
2676
+ updateMemoryViews();
2677
+ initRuntime(wasmExports);
2678
+ ready();
2679
+ });
2680
+ this.ready = new Promise((resolve) => {
2681
+ ready = resolve;
2682
+ }).then(() => {
2683
+ this.HEAP = wasmMemory.buffer;
2684
+ this.malloc = _malloc;
2685
+ this.free = _free;
2686
+ this.create_decoder = _create_decoder;
2687
+ this.destroy_decoder = _destroy_decoder;
2688
+ this.decode_frame = _decode_frame;
2689
+ });
2690
+ return this;
2691
+ };
2692
+ }
2693
+
2694
+ // ../../node_modules/@wasm-audio-decoders/flac/src/FLACDecoder.js
2695
+ function Decoder() {
2696
+ this._init = () => {
2697
+ return new this._WASMAudioDecoderCommon().instantiate(this._EmscriptenWASM, this._module).then((common) => {
2698
+ this._common = common;
2699
+ this._inputBytes = 0;
2700
+ this._outputSamples = 0;
2701
+ this._frameNumber = 0;
2702
+ this._channels = this._common.allocateTypedArray(1, Uint32Array);
2703
+ this._sampleRate = this._common.allocateTypedArray(1, Uint32Array);
2704
+ this._bitsPerSample = this._common.allocateTypedArray(1, Uint32Array);
2705
+ this._samplesDecoded = this._common.allocateTypedArray(1, Uint32Array);
2706
+ this._outputBufferPtr = this._common.allocateTypedArray(1, Uint32Array);
2707
+ this._outputBufferLen = this._common.allocateTypedArray(1, Uint32Array);
2708
+ this._errorStringPtr = this._common.allocateTypedArray(1, Uint32Array);
2709
+ this._stateStringPtr = this._common.allocateTypedArray(1, Uint32Array);
2710
+ this._decoder = this._common.wasm.create_decoder(
2711
+ this._channels.ptr,
2712
+ this._sampleRate.ptr,
2713
+ this._bitsPerSample.ptr,
2714
+ this._samplesDecoded.ptr,
2715
+ this._outputBufferPtr.ptr,
2716
+ this._outputBufferLen.ptr,
2717
+ this._errorStringPtr.ptr,
2718
+ this._stateStringPtr.ptr
2719
+ );
2720
+ });
2721
+ };
2722
+ Object.defineProperty(this, "ready", {
2723
+ enumerable: true,
2724
+ get: () => this._ready
2725
+ });
2726
+ this.reset = () => {
2727
+ this.free();
2728
+ return this._init();
2729
+ };
2730
+ this.free = () => {
2731
+ this._common.wasm.destroy_decoder(this._decoder);
2732
+ this._common.free();
2733
+ };
2734
+ this._decode = (data3) => {
2735
+ if (!(data3 instanceof Uint8Array))
2736
+ throw Error(
2737
+ "Data to decode must be Uint8Array. Instead got " + typeof data3
2738
+ );
2739
+ const input = this._common.allocateTypedArray(
2740
+ data3.length,
2741
+ Uint8Array,
2742
+ false
2743
+ );
2744
+ input.buf.set(data3);
2745
+ this._common.wasm.decode_frame(this._decoder, input.ptr, input.len);
2746
+ let errorMessage = [], error;
2747
+ if (this._errorStringPtr.buf[0])
2748
+ errorMessage.push(
2749
+ "Error: " + this._common.codeToString(this._errorStringPtr.buf[0])
2750
+ );
2751
+ if (this._stateStringPtr.buf[0])
2752
+ errorMessage.push(
2753
+ "State: " + this._common.codeToString(this._stateStringPtr.buf[0])
2754
+ );
2755
+ if (errorMessage.length) {
2756
+ error = errorMessage.join("; ");
2757
+ console.error(
2758
+ "@wasm-audio-decoders/flac: \n " + errorMessage.join("\n ")
2759
+ );
2760
+ }
2761
+ const output = new Float32Array(
2762
+ this._common.wasm.HEAP,
2763
+ this._outputBufferPtr.buf[0],
2764
+ this._outputBufferLen.buf[0]
2765
+ );
2766
+ const decoded = {
2767
+ error,
2768
+ outputBuffer: this._common.getOutputChannels(
2769
+ output,
2770
+ this._channels.buf[0],
2771
+ this._samplesDecoded.buf[0]
2772
+ ),
2773
+ samplesDecoded: this._samplesDecoded.buf[0]
2774
+ };
2775
+ this._common.wasm.free(this._outputBufferPtr.buf[0]);
2776
+ this._outputBufferLen.buf[0] = 0;
2777
+ this._samplesDecoded.buf[0] = 0;
2778
+ return decoded;
2779
+ };
2780
+ this.decodeFrames = (frames) => {
2781
+ let outputBuffers = [], errors = [], outputSamples = 0;
2782
+ for (let i = 0; i < frames.length; i++) {
2783
+ let offset = 0;
2784
+ const data3 = frames[i];
2785
+ while (offset < data3.length) {
2786
+ const chunk = data3.subarray(offset, offset + this._MAX_INPUT_SIZE);
2787
+ offset += chunk.length;
2788
+ const decoded = this._decode(chunk);
2789
+ outputBuffers.push(decoded.outputBuffer);
2790
+ outputSamples += decoded.samplesDecoded;
2791
+ if (decoded.error)
2792
+ this._common.addError(
2793
+ errors,
2794
+ decoded.error,
2795
+ data3.length,
2796
+ this._frameNumber,
2797
+ this._inputBytes,
2798
+ this._outputSamples
2799
+ );
2800
+ this._inputBytes += data3.length;
2801
+ this._outputSamples += decoded.samplesDecoded;
2802
+ }
2803
+ this._frameNumber++;
2804
+ }
2805
+ return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(
2806
+ errors,
2807
+ outputBuffers,
2808
+ this._channels.buf[0],
2809
+ outputSamples,
2810
+ this._sampleRate.buf[0],
2811
+ this._bitsPerSample.buf[0]
2812
+ );
2813
+ };
2814
+ this._isWebWorker = Decoder.isWebWorker;
2815
+ this._WASMAudioDecoderCommon = Decoder.WASMAudioDecoderCommon || WASMAudioDecoderCommon;
2816
+ this._EmscriptenWASM = Decoder.EmscriptenWASM || EmscriptenWASM;
2817
+ this._module = Decoder.module;
2818
+ this._MAX_INPUT_SIZE = 65535 * 8;
2819
+ this._ready = this._init();
2820
+ return this;
2821
+ }
2822
+ var setDecoderClass = /* @__PURE__ */ Symbol();
2823
+ var determineDecodeMethod = /* @__PURE__ */ Symbol();
2824
+ var decodeFlac = /* @__PURE__ */ Symbol();
2825
+ var decodeOggFlac = /* @__PURE__ */ Symbol();
2826
+ var placeholderDecodeMethod = /* @__PURE__ */ Symbol();
2827
+ var decodeMethod = /* @__PURE__ */ Symbol();
2828
+ var init = /* @__PURE__ */ Symbol();
2829
+ var totalSamplesDecoded = /* @__PURE__ */ Symbol();
2830
+ var FLACDecoder = class {
2831
+ constructor() {
2832
+ this._onCodec = (codec2) => {
2833
+ if (codec2 !== "flac")
2834
+ throw new Error(
2835
+ "@wasm-audio-decoders/flac does not support this codec " + codec2
2836
+ );
2837
+ };
2838
+ new WASMAudioDecoderCommon();
2839
+ this[init]();
2840
+ this[setDecoderClass](Decoder);
2841
+ }
2842
+ [init]() {
2843
+ this[decodeMethod] = placeholderDecodeMethod;
2844
+ this[totalSamplesDecoded] = 0;
2845
+ this._codecParser = null;
2846
+ }
2847
+ [determineDecodeMethod](data3) {
2848
+ if (!this._codecParser && data3.length >= 4) {
2849
+ let codec2 = "audio/";
2850
+ if (data3[0] !== 79 || // O
2851
+ data3[1] !== 103 || // g
2852
+ data3[2] !== 103 || // g
2853
+ data3[3] !== 83) {
2854
+ codec2 += "flac";
2855
+ this[decodeMethod] = decodeFlac;
2856
+ } else {
2857
+ codec2 += "ogg";
2858
+ this[decodeMethod] = decodeOggFlac;
2859
+ }
2860
+ this._codecParser = new codec_parser_default(codec2, {
2861
+ onCodec: this._onCodec,
2862
+ enableFrameCRC32: false
2863
+ });
2864
+ }
2865
+ }
2866
+ [setDecoderClass](decoderClass) {
2867
+ if (this._decoder) {
2868
+ const oldDecoder = this._decoder;
2869
+ oldDecoder.ready.then(() => oldDecoder.free());
2870
+ }
2871
+ this._decoder = new decoderClass();
2872
+ this._ready = this._decoder.ready;
2873
+ }
2874
+ [decodeFlac](flacFrames) {
2875
+ return this._decoder.decodeFrames(flacFrames.map((f) => f[data2] || f));
2876
+ }
2877
+ [decodeOggFlac](oggPages) {
2878
+ const frames = oggPages.map((page2) => page2[codecFrames2].map((f) => f[data2])).flat();
2879
+ const decoded = this._decoder.decodeFrames(frames);
2880
+ const oggPage = oggPages[oggPages.length - 1];
2881
+ if (oggPage && oggPage[isLastPage2]) {
2882
+ const samplesToTrim = this[totalSamplesDecoded] - oggPage[totalSamples2];
2883
+ if (samplesToTrim > 0) {
2884
+ for (let i = 0; i < decoded.channelData.length; i++)
2885
+ decoded.channelData[i] = decoded.channelData[i].subarray(
2886
+ 0,
2887
+ decoded.samplesDecoded - samplesToTrim
2888
+ );
2889
+ decoded.samplesDecoded -= samplesToTrim;
2890
+ }
2891
+ }
2892
+ this[totalSamplesDecoded] += decoded.samplesDecoded;
2893
+ return decoded;
2894
+ }
2895
+ [placeholderDecodeMethod]() {
2896
+ return WASMAudioDecoderCommon.getDecodedAudio([], [], 0, 0, 0);
2897
+ }
2898
+ get ready() {
2899
+ return this._ready;
2900
+ }
2901
+ async reset() {
2902
+ this[init]();
2903
+ return this._decoder.reset();
2904
+ }
2905
+ free() {
2906
+ this._decoder.free();
2907
+ }
2908
+ async decode(flacData) {
2909
+ if (this[decodeMethod] === placeholderDecodeMethod)
2910
+ this[determineDecodeMethod](flacData);
2911
+ return this[this[decodeMethod]]([
2912
+ ...this._codecParser.parseChunk(flacData)
2913
+ ]);
2914
+ }
2915
+ async flush() {
2916
+ const decoded = this[this[decodeMethod]]([...this._codecParser.flush()]);
2917
+ await this.reset();
2918
+ return decoded;
2919
+ }
2920
+ async decodeFile(flacData) {
2921
+ this[determineDecodeMethod](flacData);
2922
+ const decoded = this[this[decodeMethod]]([
2923
+ ...this._codecParser.parseAll(flacData)
2924
+ ]);
2925
+ await this.reset();
2926
+ return decoded;
2927
+ }
2928
+ async decodeFrames(flacFrames) {
2929
+ return this[decodeFlac](flacFrames);
2930
+ }
2931
+ };
2932
+
2933
+ // ../../node_modules/@wasm-audio-decoders/flac/src/FLACDecoderWebWorker.js
2934
+ var DecoderWorker = class extends WASMAudioDecoderWorker {
2935
+ constructor(options) {
2936
+ super(options, "flac-decoder", Decoder, EmscriptenWASM);
2937
+ }
2938
+ async decodeFrames(frames) {
2939
+ return this.postToDecoder("decodeFrames", frames);
2940
+ }
2941
+ };
2942
+ var FLACDecoderWebWorker = class extends FLACDecoder {
2943
+ constructor() {
2944
+ super();
2945
+ super[setDecoderClass](DecoderWorker);
2946
+ }
2947
+ async free() {
2948
+ await this._decoder.free();
2949
+ }
2950
+ terminate() {
2951
+ this._decoder.terminate();
2952
+ }
2953
+ };
2954
+
2955
+ // ../../node_modules/@wasm-audio-decoders/flac/index.js
2956
+ assignNames(FLACDecoder, "FLACDecoder");
2957
+ assignNames(FLACDecoderWebWorker, "FLACDecoderWebWorker");
2958
+
2959
+ // src/decode-flac.src.js
2960
+ var EMPTY = Object.freeze({ channelData: Object.freeze([]), sampleRate: 0 });
2961
+ async function decode(src) {
2962
+ let buf = src instanceof Uint8Array ? src : new Uint8Array(src);
2963
+ let dec = await decoder();
2964
+ try {
2965
+ let a = await dec.decode(buf);
2966
+ let b = dec.flush ? await dec.flush() : null;
2967
+ return b?.channelData?.length ? merge(a, b) : a;
2968
+ } finally {
2969
+ dec.free();
2970
+ }
2971
+ }
2972
+ async function decoder() {
2973
+ let d = new FLACDecoder();
2974
+ await d.ready;
2975
+ return d;
2976
+ }
2977
+ function merge(a, b) {
2978
+ if (!b?.channelData?.length) return a;
2979
+ if (!a?.channelData?.length) return b;
2980
+ return {
2981
+ channelData: a.channelData.map((ch, i) => {
2982
+ let bc = b.channelData[i] || b.channelData[0];
2983
+ let m = new Float32Array(ch.length + bc.length);
2984
+ m.set(ch);
2985
+ m.set(bc, ch.length);
2986
+ return m;
2987
+ }),
2988
+ sampleRate: a.sampleRate
2989
+ };
2990
+ }
2991
+ export {
2992
+ decoder,
2993
+ decode as default
2994
+ };