hls-streamer 3.0.0 → 4.0.0

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 (80) hide show
  1. package/README.md +148 -92
  2. package/dist/Interfaces/HlsStreamer.d.ts +4 -3
  3. package/dist/Interfaces/HlsStreamer.d.ts.map +1 -1
  4. package/dist/Libs/FileLib.d.ts +11 -5
  5. package/dist/Libs/FileLib.d.ts.map +1 -1
  6. package/dist/Libs/FileLib.js +9 -3
  7. package/dist/Libs/FileLib.js.map +1 -1
  8. package/dist/Libs/FormatDetector.d.ts +3 -3
  9. package/dist/Libs/FormatDetector.d.ts.map +1 -1
  10. package/dist/Libs/FormatDetector.js +31 -7
  11. package/dist/Libs/FormatDetector.js.map +1 -1
  12. package/dist/Parsers/AacParser.d.ts +4 -4
  13. package/dist/Parsers/AacParser.d.ts.map +1 -1
  14. package/dist/Parsers/AacParser.js +5 -1
  15. package/dist/Parsers/AacParser.js.map +1 -1
  16. package/dist/Parsers/FlacParser.d.ts +4 -4
  17. package/dist/Parsers/IAudioParser.d.ts +1 -30
  18. package/dist/Parsers/IAudioParser.d.ts.map +1 -1
  19. package/dist/Parsers/IMediaParser.d.ts +43 -0
  20. package/dist/Parsers/IMediaParser.d.ts.map +1 -0
  21. package/dist/Parsers/IMediaParser.js +2 -0
  22. package/dist/Parsers/IMediaParser.js.map +1 -0
  23. package/dist/Parsers/Mp3Parser.d.ts +4 -4
  24. package/dist/Parsers/Mp3Parser.js +8 -8
  25. package/dist/Parsers/Mp3Parser.js.map +1 -1
  26. package/dist/Parsers/Mp4Parser.d.ts +21 -0
  27. package/dist/Parsers/Mp4Parser.d.ts.map +1 -0
  28. package/dist/Parsers/Mp4Parser.js +418 -0
  29. package/dist/Parsers/Mp4Parser.js.map +1 -0
  30. package/dist/Parsers/OggParser.d.ts +4 -4
  31. package/dist/Parsers/ParserFactory.d.ts +5 -5
  32. package/dist/Parsers/ParserFactory.d.ts.map +1 -1
  33. package/dist/Parsers/ParserFactory.js +6 -3
  34. package/dist/Parsers/ParserFactory.js.map +1 -1
  35. package/dist/Parsers/WavParser.d.ts +4 -4
  36. package/dist/cjs/Interfaces/HlsStreamer.d.ts +4 -3
  37. package/dist/cjs/Interfaces/HlsStreamer.d.ts.map +1 -1
  38. package/dist/cjs/Libs/FileLib.d.ts +11 -5
  39. package/dist/cjs/Libs/FileLib.d.ts.map +1 -1
  40. package/dist/cjs/Libs/FileLib.js +9 -3
  41. package/dist/cjs/Libs/FileLib.js.map +1 -1
  42. package/dist/cjs/Libs/FormatDetector.d.ts +3 -3
  43. package/dist/cjs/Libs/FormatDetector.d.ts.map +1 -1
  44. package/dist/cjs/Libs/FormatDetector.js +31 -7
  45. package/dist/cjs/Libs/FormatDetector.js.map +1 -1
  46. package/dist/cjs/Parsers/AacParser.d.ts +4 -4
  47. package/dist/cjs/Parsers/AacParser.d.ts.map +1 -1
  48. package/dist/cjs/Parsers/AacParser.js +5 -1
  49. package/dist/cjs/Parsers/AacParser.js.map +1 -1
  50. package/dist/cjs/Parsers/FlacParser.d.ts +4 -4
  51. package/dist/cjs/Parsers/IAudioParser.d.ts +1 -30
  52. package/dist/cjs/Parsers/IAudioParser.d.ts.map +1 -1
  53. package/dist/cjs/Parsers/IMediaParser.d.ts +43 -0
  54. package/dist/cjs/Parsers/IMediaParser.d.ts.map +1 -0
  55. package/dist/cjs/Parsers/IMediaParser.js +3 -0
  56. package/dist/cjs/Parsers/IMediaParser.js.map +1 -0
  57. package/dist/cjs/Parsers/Mp3Parser.d.ts +4 -4
  58. package/dist/cjs/Parsers/Mp3Parser.js +8 -8
  59. package/dist/cjs/Parsers/Mp3Parser.js.map +1 -1
  60. package/dist/cjs/Parsers/Mp4Parser.d.ts +21 -0
  61. package/dist/cjs/Parsers/Mp4Parser.d.ts.map +1 -0
  62. package/dist/cjs/Parsers/Mp4Parser.js +422 -0
  63. package/dist/cjs/Parsers/Mp4Parser.js.map +1 -0
  64. package/dist/cjs/Parsers/OggParser.d.ts +4 -4
  65. package/dist/cjs/Parsers/ParserFactory.d.ts +5 -5
  66. package/dist/cjs/Parsers/ParserFactory.d.ts.map +1 -1
  67. package/dist/cjs/Parsers/ParserFactory.js +6 -3
  68. package/dist/cjs/Parsers/ParserFactory.js.map +1 -1
  69. package/dist/cjs/Parsers/WavParser.d.ts +4 -4
  70. package/dist/cjs/errors/HlsStreamerErrors.js +1 -1
  71. package/dist/cjs/index.d.ts +1 -0
  72. package/dist/cjs/index.d.ts.map +1 -1
  73. package/dist/cjs/index.js +35 -9
  74. package/dist/cjs/index.js.map +1 -1
  75. package/dist/errors/HlsStreamerErrors.js +1 -1
  76. package/dist/index.d.ts +1 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +35 -9
  79. package/dist/index.js.map +1 -1
  80. package/package.json +8 -3
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Mp4Parser = void 0;
4
+ class Mp4Parser {
5
+ getFormat() {
6
+ return 'mp4';
7
+ }
8
+ canParse(buffer) {
9
+ if (buffer.length < 12)
10
+ return false;
11
+ const boxType = buffer.toString('ascii', 4, 8);
12
+ if (boxType !== 'ftyp')
13
+ return false;
14
+ const brand = buffer.toString('ascii', 8, 12);
15
+ const videoBrands = ['isom', 'mp41', 'mp42', 'M4V ', 'M4A ', 'avc1', 'iso2', 'iso5', 'iso6'];
16
+ return videoBrands.includes(brand) || boxType === 'ftyp';
17
+ }
18
+ analyze(buffer, opts = {}) {
19
+ const size = opts.fileSize ?? buffer.length;
20
+ const warnings = [];
21
+ const format = this.detectFormat(buffer);
22
+ const moovBox = this.findTopLevelBox(buffer, 'moov');
23
+ if (!moovBox) {
24
+ return {
25
+ format,
26
+ size,
27
+ duration: 0,
28
+ audioDataSize: 0,
29
+ frames: [],
30
+ warnings: ['Could not find moov box']
31
+ };
32
+ }
33
+ const initSegment = { offset: moovBox.offset, length: moovBox.size };
34
+ const moovData = buffer.subarray(moovBox.dataOffset, moovBox.offset + moovBox.size);
35
+ const mvhd = this.findBox(moovData, 'mvhd');
36
+ let movieTimescale = 1000;
37
+ let movieDuration = 0;
38
+ if (mvhd) {
39
+ const d = moovData;
40
+ const o = mvhd.dataOffset;
41
+ const version = d[o];
42
+ if (version === 1) {
43
+ movieTimescale = d.readUInt32BE(o + 16);
44
+ movieDuration = Number(d.readBigUInt64BE(o + 20));
45
+ }
46
+ else {
47
+ movieTimescale = d.readUInt32BE(o + 8);
48
+ movieDuration = d.readUInt32BE(o + 12);
49
+ }
50
+ }
51
+ const totalDurationSeconds = movieTimescale > 0 ? movieDuration / movieTimescale : 0;
52
+ const tracks = this.parseTracks(moovData, warnings);
53
+ const videoTrack = tracks.find(t => t.isVideo) ?? tracks[0];
54
+ if (!videoTrack) {
55
+ return {
56
+ format,
57
+ size,
58
+ duration: totalDurationSeconds,
59
+ audioDataSize: 0,
60
+ frames: [],
61
+ initSegment,
62
+ warnings: ['No tracks found']
63
+ };
64
+ }
65
+ const frames = this.buildFrameTable(videoTrack, warnings);
66
+ const audioDataSize = frames.reduce((acc, f) => acc + f.length, 0);
67
+ const averageBitrate = totalDurationSeconds > 0
68
+ ? (audioDataSize * 8) / totalDurationSeconds / 1000
69
+ : undefined;
70
+ const result = {
71
+ format,
72
+ size,
73
+ duration: totalDurationSeconds,
74
+ audioDataSize,
75
+ frames,
76
+ initSegment,
77
+ };
78
+ if (videoTrack.isVideo) {
79
+ result.width = videoTrack.width;
80
+ result.height = videoTrack.height;
81
+ if (videoTrack.frameRate > 0) {
82
+ result.frameRate = videoTrack.frameRate;
83
+ }
84
+ }
85
+ if (averageBitrate !== undefined) {
86
+ result.averageBitrate = averageBitrate;
87
+ }
88
+ result.metadata = { container: format === 'mov' ? 'mov' : 'mp4' };
89
+ if (warnings.length > 0) {
90
+ result.warnings = warnings;
91
+ }
92
+ return result;
93
+ }
94
+ detectFormat(buffer) {
95
+ if (buffer.length < 12)
96
+ return 'mp4';
97
+ const brand = buffer.toString('ascii', 8, 12);
98
+ if (brand === 'qt ')
99
+ return 'mov';
100
+ if (brand.startsWith('M4V'))
101
+ return 'm4v';
102
+ return 'mp4';
103
+ }
104
+ findTopLevelBox(buffer, type) {
105
+ let offset = 0;
106
+ while (offset + 8 <= buffer.length) {
107
+ let size = buffer.readUInt32BE(offset);
108
+ const boxType = buffer.toString('ascii', offset + 4, offset + 8);
109
+ let dataOffset = offset + 8;
110
+ if (size === 1) {
111
+ if (offset + 16 > buffer.length)
112
+ break;
113
+ size = Number(buffer.readBigUInt64BE(offset + 8));
114
+ dataOffset = offset + 16;
115
+ }
116
+ else if (size === 0) {
117
+ size = buffer.length - offset;
118
+ }
119
+ if (size < 8)
120
+ break;
121
+ if (boxType === type) {
122
+ return { offset, size, type: boxType, dataOffset };
123
+ }
124
+ offset += size;
125
+ }
126
+ return null;
127
+ }
128
+ findBox(data, type) {
129
+ let offset = 0;
130
+ while (offset + 8 <= data.length) {
131
+ let size = data.readUInt32BE(offset);
132
+ const boxType = data.toString('ascii', offset + 4, offset + 8);
133
+ let dataOffset = offset + 8;
134
+ if (size === 1) {
135
+ if (offset + 16 > data.length)
136
+ break;
137
+ size = Number(data.readBigUInt64BE(offset + 8));
138
+ dataOffset = offset + 16;
139
+ }
140
+ else if (size === 0) {
141
+ size = data.length - offset;
142
+ }
143
+ if (size < 8)
144
+ break;
145
+ if (boxType === type) {
146
+ return { offset, size, type: boxType, dataOffset };
147
+ }
148
+ offset += size;
149
+ }
150
+ return null;
151
+ }
152
+ findAllBoxes(data, type) {
153
+ const results = [];
154
+ let offset = 0;
155
+ while (offset + 8 <= data.length) {
156
+ let size = data.readUInt32BE(offset);
157
+ const boxType = data.toString('ascii', offset + 4, offset + 8);
158
+ let dataOffset = offset + 8;
159
+ if (size === 1) {
160
+ if (offset + 16 > data.length)
161
+ break;
162
+ size = Number(data.readBigUInt64BE(offset + 8));
163
+ dataOffset = offset + 16;
164
+ }
165
+ else if (size === 0) {
166
+ size = data.length - offset;
167
+ }
168
+ if (size < 8)
169
+ break;
170
+ if (boxType === type) {
171
+ results.push({ offset, size, type: boxType, dataOffset });
172
+ }
173
+ offset += size;
174
+ }
175
+ return results;
176
+ }
177
+ parseTracks(moovData, warnings) {
178
+ const trakBoxes = this.findAllBoxes(moovData, 'trak');
179
+ const tracks = [];
180
+ for (const trak of trakBoxes) {
181
+ const trakData = moovData.subarray(trak.dataOffset, trak.offset + trak.size);
182
+ const track = this.parseTrack(trakData, warnings);
183
+ if (track)
184
+ tracks.push(track);
185
+ }
186
+ return tracks;
187
+ }
188
+ parseTrack(trakData, warnings) {
189
+ const tkhd = this.findBox(trakData, 'tkhd');
190
+ let width = 0;
191
+ let height = 0;
192
+ if (tkhd) {
193
+ const o = tkhd.dataOffset;
194
+ const version = trakData[o];
195
+ const tkhdSize = tkhd.size;
196
+ if (version === 1 && tkhdSize >= 96) {
197
+ width = trakData.readUInt32BE(o + 76) >> 16;
198
+ height = trakData.readUInt32BE(o + 80) >> 16;
199
+ }
200
+ else if (tkhdSize >= 84) {
201
+ width = trakData.readUInt32BE(o + 52) >> 16;
202
+ height = trakData.readUInt32BE(o + 56) >> 16;
203
+ }
204
+ }
205
+ const mdia = this.findBox(trakData, 'mdia');
206
+ if (!mdia)
207
+ return null;
208
+ const mdiaData = trakData.subarray(mdia.dataOffset, mdia.offset + mdia.size);
209
+ const mdhd = this.findBox(mdiaData, 'mdhd');
210
+ let timescale = 1000;
211
+ let trackDuration = 0;
212
+ if (mdhd) {
213
+ const o = mdhd.dataOffset;
214
+ const version = mdiaData[o];
215
+ if (version === 1) {
216
+ timescale = mdiaData.readUInt32BE(o + 16);
217
+ trackDuration = Number(mdiaData.readBigUInt64BE(o + 20));
218
+ }
219
+ else {
220
+ timescale = mdiaData.readUInt32BE(o + 8);
221
+ trackDuration = mdiaData.readUInt32BE(o + 12);
222
+ }
223
+ }
224
+ const hdlr = this.findBox(mdiaData, 'hdlr');
225
+ let isVideo = false;
226
+ if (hdlr) {
227
+ const handlerType = mdiaData.toString('ascii', hdlr.dataOffset + 4, hdlr.dataOffset + 8);
228
+ isVideo = handlerType === 'vide';
229
+ }
230
+ const minf = this.findBox(mdiaData, 'minf');
231
+ if (!minf)
232
+ return null;
233
+ const minfData = mdiaData.subarray(minf.dataOffset, minf.offset + minf.size);
234
+ const stbl = this.findBox(minfData, 'stbl');
235
+ if (!stbl)
236
+ return null;
237
+ const stblData = minfData.subarray(stbl.dataOffset, stbl.offset + stbl.size);
238
+ const sttsEntries = this.parseStts(stblData);
239
+ const { defaultSize, sampleCount, sizes } = this.parseStsz(stblData);
240
+ const chunkOffsets = this.parseStco(stblData);
241
+ const keyframeSet = this.parseStss(stblData);
242
+ const stscEntries = this.parseStsc(stblData);
243
+ let frameRate = 0;
244
+ if (sttsEntries.length > 0 && timescale > 0) {
245
+ const firstEntry = sttsEntries[0];
246
+ if (firstEntry.delta > 0) {
247
+ frameRate = timescale / firstEntry.delta;
248
+ }
249
+ }
250
+ return {
251
+ timescale,
252
+ duration: trackDuration,
253
+ width,
254
+ height,
255
+ isVideo,
256
+ sttsEntries,
257
+ stszSizes: sizes,
258
+ stszDefaultSize: defaultSize,
259
+ stszSampleCount: sampleCount,
260
+ stcoOffsets: chunkOffsets,
261
+ stssKeyframes: keyframeSet,
262
+ stscEntries,
263
+ frameRate,
264
+ };
265
+ }
266
+ parseStts(stblData) {
267
+ const stts = this.findBox(stblData, 'stts');
268
+ if (!stts)
269
+ return [];
270
+ const o = stts.dataOffset;
271
+ const entryCount = stblData.readUInt32BE(o + 4);
272
+ const entries = [];
273
+ for (let i = 0; i < entryCount; i++) {
274
+ const base = o + 8 + i * 8;
275
+ if (base + 8 > stblData.length)
276
+ break;
277
+ entries.push({
278
+ count: stblData.readUInt32BE(base),
279
+ delta: stblData.readUInt32BE(base + 4),
280
+ });
281
+ }
282
+ return entries;
283
+ }
284
+ parseStsz(stblData) {
285
+ const stsz = this.findBox(stblData, 'stsz');
286
+ if (!stsz)
287
+ return { defaultSize: 0, sampleCount: 0, sizes: [] };
288
+ const o = stsz.dataOffset;
289
+ const defaultSize = stblData.readUInt32BE(o + 4);
290
+ const sampleCount = stblData.readUInt32BE(o + 8);
291
+ const sizes = [];
292
+ if (defaultSize === 0) {
293
+ for (let i = 0; i < sampleCount; i++) {
294
+ const base = o + 12 + i * 4;
295
+ if (base + 4 > stblData.length)
296
+ break;
297
+ sizes.push(stblData.readUInt32BE(base));
298
+ }
299
+ }
300
+ return { defaultSize, sampleCount, sizes };
301
+ }
302
+ parseStco(stblData) {
303
+ const co64 = this.findBox(stblData, 'co64');
304
+ if (co64) {
305
+ const o = co64.dataOffset;
306
+ const entryCount = stblData.readUInt32BE(o + 4);
307
+ const offsets = [];
308
+ for (let i = 0; i < entryCount; i++) {
309
+ const base = o + 8 + i * 8;
310
+ if (base + 8 > stblData.length)
311
+ break;
312
+ offsets.push(Number(stblData.readBigUInt64BE(base)));
313
+ }
314
+ return offsets;
315
+ }
316
+ const stco = this.findBox(stblData, 'stco');
317
+ if (!stco)
318
+ return [];
319
+ const o = stco.dataOffset;
320
+ const entryCount = stblData.readUInt32BE(o + 4);
321
+ const offsets = [];
322
+ for (let i = 0; i < entryCount; i++) {
323
+ const base = o + 8 + i * 4;
324
+ if (base + 4 > stblData.length)
325
+ break;
326
+ offsets.push(stblData.readUInt32BE(base));
327
+ }
328
+ return offsets;
329
+ }
330
+ parseStss(stblData) {
331
+ const stss = this.findBox(stblData, 'stss');
332
+ const keyframes = new Set();
333
+ if (!stss)
334
+ return keyframes;
335
+ const o = stss.dataOffset;
336
+ const entryCount = stblData.readUInt32BE(o + 4);
337
+ for (let i = 0; i < entryCount; i++) {
338
+ const base = o + 8 + i * 4;
339
+ if (base + 4 > stblData.length)
340
+ break;
341
+ keyframes.add(stblData.readUInt32BE(base));
342
+ }
343
+ return keyframes;
344
+ }
345
+ parseStsc(stblData) {
346
+ const stsc = this.findBox(stblData, 'stsc');
347
+ if (!stsc)
348
+ return [];
349
+ const o = stsc.dataOffset;
350
+ const entryCount = stblData.readUInt32BE(o + 4);
351
+ const entries = [];
352
+ for (let i = 0; i < entryCount; i++) {
353
+ const base = o + 8 + i * 12;
354
+ if (base + 12 > stblData.length)
355
+ break;
356
+ entries.push({
357
+ firstChunk: stblData.readUInt32BE(base),
358
+ samplesPerChunk: stblData.readUInt32BE(base + 4),
359
+ descIndex: stblData.readUInt32BE(base + 8),
360
+ });
361
+ }
362
+ return entries;
363
+ }
364
+ buildFrameTable(track, warnings) {
365
+ const frames = [];
366
+ const { sttsEntries, stszSizes, stszDefaultSize, stszSampleCount, stcoOffsets, stscEntries, stssKeyframes, timescale } = track;
367
+ if (stcoOffsets.length === 0 || stszSampleCount === 0) {
368
+ warnings.push('Missing chunk offset or sample size table');
369
+ return frames;
370
+ }
371
+ const sampleDurations = [];
372
+ for (const entry of sttsEntries) {
373
+ for (let i = 0; i < entry.count; i++) {
374
+ sampleDurations.push(entry.delta);
375
+ }
376
+ }
377
+ const getSampleSize = (i) => {
378
+ if (stszDefaultSize > 0)
379
+ return stszDefaultSize;
380
+ return stszSizes[i] ?? 0;
381
+ };
382
+ const getSamplesPerChunk = (chunkIndex1based) => {
383
+ let result = 1;
384
+ for (const entry of stscEntries) {
385
+ if (chunkIndex1based >= entry.firstChunk) {
386
+ result = entry.samplesPerChunk;
387
+ }
388
+ else {
389
+ break;
390
+ }
391
+ }
392
+ return result;
393
+ };
394
+ let sampleIndex = 0;
395
+ for (let chunkIdx = 0; chunkIdx < stcoOffsets.length && sampleIndex < stszSampleCount; chunkIdx++) {
396
+ const chunkOffset = stcoOffsets[chunkIdx];
397
+ const samplesInChunk = getSamplesPerChunk(chunkIdx + 1);
398
+ let offsetInChunk = 0;
399
+ for (let s = 0; s < samplesInChunk && sampleIndex < stszSampleCount; s++) {
400
+ const sampleSize = getSampleSize(sampleIndex);
401
+ const sampleDelta = sampleDurations[sampleIndex] ?? (sampleDurations[sampleDurations.length - 1] ?? 1);
402
+ const duration = timescale > 0 ? sampleDelta / timescale : 0;
403
+ const sampleNumber1based = sampleIndex + 1;
404
+ frames.push({
405
+ index: sampleIndex,
406
+ offset: chunkOffset + offsetInChunk,
407
+ length: sampleSize,
408
+ duration,
409
+ samples: sampleDelta,
410
+ sampleRate: timescale,
411
+ bitrate: duration > 0 ? Math.round((sampleSize * 8) / duration / 1000) : 0,
412
+ keyFrame: stssKeyframes.size === 0 ? true : stssKeyframes.has(sampleNumber1based),
413
+ });
414
+ offsetInChunk += sampleSize;
415
+ sampleIndex++;
416
+ }
417
+ }
418
+ return frames;
419
+ }
420
+ }
421
+ exports.Mp4Parser = Mp4Parser;
422
+ //# sourceMappingURL=Mp4Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mp4Parser.js","sourceRoot":"","sources":["../../../src/Parsers/Mp4Parser.ts"],"names":[],"mappings":";;;AA6BA,MAAa,SAAS;IACpB,SAAS;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7F,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,OAA8B,EAAE;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC;QAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAGzC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,MAAM;gBACN,IAAI;gBACJ,QAAQ,EAAE,CAAC;gBACX,aAAa,EAAE,CAAC;gBAChB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC,yBAAyB,CAAC;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAGpF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,QAAQ,CAAC;YACnB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QACD,MAAM,oBAAoB,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAGrF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAGpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,MAAM;gBACN,IAAI;gBACJ,QAAQ,EAAE,oBAAoB;gBAC9B,aAAa,EAAE,CAAC;gBAChB,MAAM,EAAE,EAAE;gBACV,WAAW;gBACX,QAAQ,EAAE,CAAC,iBAAiB,CAAC;aAC9B,CAAC;QACJ,CAAC;QAGD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE1D,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,oBAAoB,GAAG,CAAC;YAC7C,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,oBAAoB,GAAG,IAAI;YACnD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,MAAM,GAAkB;YAC5B,MAAM;YACN,IAAI;YACJ,QAAQ,EAAE,oBAAoB;YAC9B,aAAa;YACb,MAAM;YACN,WAAW;SACZ,CAAC;QAEF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAClC,IAAI,UAAU,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAElE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,IAAY;QAClD,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACjE,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;YAE5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM;oBAAE,MAAM;gBACvC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YAChC,CAAC;YAED,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM;YAEpB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACrD,CAAC;YAED,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,IAAY;QACxC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;YAE5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;oBAAE,MAAM;gBACrC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM;YAEpB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;YACrD,CAAC;YAED,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,IAAY;QAC7C,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/D,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;YAE5B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;oBAAE,MAAM;gBACrC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChD,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAC9B,CAAC;YAED,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM;YAEpB,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,QAAkB;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,UAAU,CAAC,QAAgB,EAAE,QAAkB;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,OAAO,KAAK,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACpC,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;iBAAM,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC1B,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBAClB,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1C,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACzF,OAAO,GAAG,WAAW,KAAK,MAAM,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAG7E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAG7C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAGrE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAG9C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAG7C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAG7C,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS;YACT,QAAQ,EAAE,aAAa;YACvB,KAAK;YACL,MAAM;YACN,OAAO;YACP,WAAW;YACX,SAAS,EAAE,KAAK;YAChB,eAAe,EAAE,WAAW;YAC5B,eAAe,EAAE,WAAW;YAC5B,WAAW,EAAE,YAAY;YACzB,aAAa,EAAE,WAAW;YAC1B,WAAW;YACX,SAAS;SACV,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAE1B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAA4C,EAAE,CAAC;QAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;gBAAE,MAAM;YACtC,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;gBAClC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAEhE,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;oBAAE,MAAM;gBACtC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,QAAgB;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;oBAAE,MAAM;gBACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;gBAAE,MAAM;YACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;gBAAE,MAAM;YACtC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,SAAS,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAA8E,EAAE,CAAC;QAE9F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM;gBAAE,MAAM;YACvC,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;gBACvC,eAAe,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChD,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,KAAgB,EAAE,QAAkB;QAC1D,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAE/H,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QAGD,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAGD,MAAM,aAAa,GAAG,CAAC,CAAS,EAAU,EAAE;YAC1C,IAAI,eAAe,GAAG,CAAC;gBAAE,OAAO,eAAe,CAAC;YAChD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC;QAIF,MAAM,kBAAkB,GAAG,CAAC,gBAAwB,EAAU,EAAE;YAC9D,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBACzC,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,GAAG,eAAe,EAAE,QAAQ,EAAE,EAAE,CAAC;YAClG,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACxD,IAAI,aAAa,GAAG,CAAC,CAAC;YAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,IAAI,WAAW,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzE,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvG,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,kBAAkB,GAAG,WAAW,GAAG,CAAC,CAAC;gBAE3C,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,WAAW,GAAG,aAAa;oBACnC,MAAM,EAAE,UAAU;oBAClB,QAAQ;oBACR,OAAO,EAAE,WAAW;oBACpB,UAAU,EAAE,SAAS;oBACrB,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,QAAQ,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC;iBAClF,CAAC,CAAC;gBAEH,aAAa,IAAI,UAAU,CAAC;gBAC5B,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAjeD,8BAieC"}
@@ -1,11 +1,11 @@
1
- import { IAudioParser, AudioFileInfo, AudioFormat } from './IAudioParser';
2
- export declare class OggParser implements IAudioParser {
1
+ import { IMediaParser, MediaFileInfo, MediaFormat } from './IMediaParser';
2
+ export declare class OggParser implements IMediaParser {
3
3
  private static readonly OGG_SIGNATURE;
4
- getFormat(): AudioFormat;
4
+ getFormat(): MediaFormat;
5
5
  canParse(buffer: Buffer): boolean;
6
6
  analyze(buffer: Buffer, opts?: {
7
7
  fileSize?: number;
8
- }): AudioFileInfo;
8
+ }): MediaFileInfo;
9
9
  private parseVorbisIdHeader;
10
10
  }
11
11
  //# sourceMappingURL=OggParser.d.ts.map
@@ -1,10 +1,10 @@
1
- import { IAudioParser, AudioFormat } from './IAudioParser';
1
+ import { IMediaParser, MediaFormat } from './IMediaParser';
2
2
  export declare class ParserFactory {
3
3
  private static parsers;
4
- static getParser(format: AudioFormat): IAudioParser | null;
5
- static detectParser(buffer: Buffer): IAudioParser | null;
6
- static getParserByExtension(filePath: string): IAudioParser | null;
7
- static getSupportedFormats(): AudioFormat[];
4
+ static getParser(format: MediaFormat): IMediaParser | null;
5
+ static detectParser(buffer: Buffer): IMediaParser | null;
6
+ static getParserByExtension(filePath: string): IMediaParser | null;
7
+ static getSupportedFormats(): MediaFormat[];
8
8
  static isFormatSupported(format: string): boolean;
9
9
  }
10
10
  //# sourceMappingURL=ParserFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParserFactory.d.ts","sourceRoot":"","sources":["../../../src/Parsers/ParserFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW3D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAMpB;IAOF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI;IAY1D,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAgBxD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQlE,MAAM,CAAC,mBAAmB,IAAI,WAAW,EAAE;IAO3C,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGlD"}
1
+ {"version":3,"file":"ParserFactory.d.ts","sourceRoot":"","sources":["../../../src/Parsers/ParserFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAY3D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,OAAO,CAOpB;IAOF,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI;IAc1D,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAgBxD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAQlE,MAAM,CAAC,mBAAmB,IAAI,WAAW,EAAE;IAO3C,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGlD"}
@@ -6,11 +6,13 @@ const AacParser_1 = require("./AacParser");
6
6
  const OggParser_1 = require("./OggParser");
7
7
  const FlacParser_1 = require("./FlacParser");
8
8
  const WavParser_1 = require("./WavParser");
9
+ const Mp4Parser_1 = require("./Mp4Parser");
9
10
  const FormatDetector_1 = require("../Libs/FormatDetector");
10
11
  class ParserFactory {
11
12
  static getParser(format) {
12
13
  const searchFormat = format === 'm4a' ? 'aac' : format;
13
- return this.parsers.find(parser => parser.getFormat() === searchFormat) || null;
14
+ const resolvedFormat = (searchFormat === 'mov' || searchFormat === 'm4v') ? 'mp4' : searchFormat;
15
+ return this.parsers.find(parser => parser.getFormat() === resolvedFormat) || null;
14
16
  }
15
17
  static detectParser(buffer) {
16
18
  for (const parser of this.parsers) {
@@ -25,7 +27,7 @@ class ParserFactory {
25
27
  return format ? this.getParser(format) : null;
26
28
  }
27
29
  static getSupportedFormats() {
28
- return ['mp3', 'aac', 'm4a', 'ogg', 'flac', 'wav'];
30
+ return ['mp3', 'aac', 'm4a', 'ogg', 'flac', 'wav', 'mp4', 'mov', 'm4v'];
29
31
  }
30
32
  static isFormatSupported(format) {
31
33
  return this.getSupportedFormats().includes(format);
@@ -41,7 +43,8 @@ Object.defineProperty(ParserFactory, "parsers", {
41
43
  new AacParser_1.AacParser(),
42
44
  new OggParser_1.OggParser(),
43
45
  new FlacParser_1.FlacParser(),
44
- new WavParser_1.WavParser()
46
+ new WavParser_1.WavParser(),
47
+ new Mp4Parser_1.Mp4Parser(),
45
48
  ]
46
49
  });
47
50
  //# sourceMappingURL=ParserFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParserFactory.js","sourceRoot":"","sources":["../../../src/Parsers/ParserFactory.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,2CAAwC;AACxC,2CAAwC;AACxC,6CAA0C;AAC1C,2CAAwC;AACxC,2DAAwD;AAKxD,MAAa,aAAa;IAcxB,MAAM,CAAC,SAAS,CAAC,MAAmB;QAElC,MAAM,YAAY,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;IAClF,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,MAAc;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,MAAM,CAAC,oBAAoB,CAAC,QAAgB;QAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAKD,MAAM,CAAC,mBAAmB;QACxB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAKD,MAAM,CAAC,iBAAiB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,MAAqB,CAAC,CAAC;IACpE,CAAC;;AA3DH,sCA4DC;AA3DgB;;;;WAA0B;QACvC,IAAI,qBAAS,EAAE;QACf,IAAI,qBAAS,EAAE;QACf,IAAI,qBAAS,EAAE;QACf,IAAI,uBAAU,EAAE;QAChB,IAAI,qBAAS,EAAE;KAChB;GAAC"}
1
+ {"version":3,"file":"ParserFactory.js","sourceRoot":"","sources":["../../../src/Parsers/ParserFactory.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AACxC,2CAAwC;AACxC,2CAAwC;AACxC,6CAA0C;AAC1C,2CAAwC;AACxC,2CAAwC;AACxC,2DAAwD;AAKxD,MAAa,aAAa;IAexB,MAAM,CAAC,SAAS,CAAC,MAAmB;QAElC,MAAM,YAAY,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvD,MAAM,cAAc,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;QAEjG,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC;IACpF,CAAC;IAOD,MAAM,CAAC,YAAY,CAAC,MAAc;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,MAAM,CAAC,oBAAoB,CAAC,QAAgB;QAC1C,MAAM,MAAM,GAAG,+BAAc,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAKD,MAAM,CAAC,mBAAmB;QACxB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAKD,MAAM,CAAC,iBAAiB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,MAAqB,CAAC,CAAC;IACpE,CAAC;;AA9DH,sCA+DC;AA9DgB;;;;WAA0B;QACvC,IAAI,qBAAS,EAAE;QACf,IAAI,qBAAS,EAAE;QACf,IAAI,qBAAS,EAAE;QACf,IAAI,uBAAU,EAAE;QAChB,IAAI,qBAAS,EAAE;QACf,IAAI,qBAAS,EAAE;KAChB;GAAC"}
@@ -1,9 +1,9 @@
1
- import { IAudioParser, AudioFileInfo, AudioFormat } from './IAudioParser';
2
- export declare class WavParser implements IAudioParser {
3
- getFormat(): AudioFormat;
1
+ import { IMediaParser, MediaFileInfo, MediaFormat } from './IMediaParser';
2
+ export declare class WavParser implements IMediaParser {
3
+ getFormat(): MediaFormat;
4
4
  canParse(buffer: Buffer): boolean;
5
5
  analyze(buffer: Buffer, opts?: {
6
6
  fileSize?: number;
7
- }): AudioFileInfo;
7
+ }): MediaFileInfo;
8
8
  }
9
9
  //# sourceMappingURL=WavParser.d.ts.map
@@ -38,7 +38,7 @@ class InvalidParameterError extends HlsStreamerError {
38
38
  exports.InvalidParameterError = InvalidParameterError;
39
39
  class UnsupportedFormatError extends HlsStreamerError {
40
40
  constructor(format) {
41
- super(`Unsupported audio format: ${format}`);
41
+ super(`Unsupported media format: ${format}`);
42
42
  this.name = 'UnsupportedFormatError';
43
43
  }
44
44
  }
@@ -22,6 +22,7 @@ export declare class HlsStreamer {
22
22
  private buildSegmentUrl;
23
23
  private calculateSegmentSize;
24
24
  private padNumber;
25
+ getMediaType(): Promise<'audio' | 'video'>;
25
26
  getSegmentDuration(segmentIndex: number): Promise<number>;
26
27
  }
27
28
  export * from './Interfaces/HlsStreamer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA8B,MAAM,0BAA0B,CAAC;AAe1F,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAA4B;gBAKhC,OAAO,EAAE,kBAAkB;IAYvC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;YAyBN,WAAW;IAkBnB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BlE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;YA+BrB,WAAW;IAiFzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,SAAS;IAOX,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAchE;AAGD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA8B,MAAM,0BAA0B,CAAC;AAe1F,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAA4B;gBAKhC,OAAO,EAAE,kBAAkB;IAYvC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;YAoCN,WAAW;IAkBnB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BlE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;YAsCrB,WAAW;IAsFzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,SAAS;IAQX,YAAY,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAS1C,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAchE;AAGD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}