@scarlett-player/core 0.1.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.
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +300 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +407 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2271 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +272 -0
- package/dist/logger.js.map +1 -0
- package/dist/plugin-api.d.ts +147 -0
- package/dist/plugin-api.d.ts.map +1 -0
- package/dist/plugin-api.js +160 -0
- package/dist/plugin-api.js.map +1 -0
- package/dist/plugin-manager.d.ts +52 -0
- package/dist/plugin-manager.d.ts.map +1 -0
- package/dist/plugin-manager.js +224 -0
- package/dist/plugin-manager.js.map +1 -0
- package/dist/scarlett-player.d.ts +404 -0
- package/dist/scarlett-player.d.ts.map +1 -0
- package/dist/scarlett-player.js +769 -0
- package/dist/scarlett-player.js.map +1 -0
- package/dist/state/computed.d.ts.map +1 -0
- package/dist/state/computed.js +134 -0
- package/dist/state/computed.js.map +1 -0
- package/dist/state/effect.d.ts.map +1 -0
- package/dist/state/effect.js +77 -0
- package/dist/state/effect.js.map +1 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +9 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/signal.d.ts.map +1 -0
- package/dist/state/signal.js +126 -0
- package/dist/state/signal.js.map +1 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +334 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/types/events.d.ts +323 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +7 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +141 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/state.d.ts +232 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +8 -0
- package/dist/types/state.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScarlettPlayer - Main player class integrating all core systems.
|
|
3
|
+
*
|
|
4
|
+
* Provides the public API for video playback, plugin management,
|
|
5
|
+
* state access, and event handling.
|
|
6
|
+
*
|
|
7
|
+
* Target size: ~1-1.5KB
|
|
8
|
+
*/
|
|
9
|
+
import type { Plugin } from './types/plugin';
|
|
10
|
+
import type { EventName, EventHandler as EventHandlerFn } from './types/events';
|
|
11
|
+
import type { StateStore } from './types/state';
|
|
12
|
+
/**
|
|
13
|
+
* Player configuration options.
|
|
14
|
+
*/
|
|
15
|
+
export interface PlayerOptions {
|
|
16
|
+
/** HTML container element or CSS selector */
|
|
17
|
+
container: HTMLElement | string;
|
|
18
|
+
/** Initial source URL */
|
|
19
|
+
src?: string;
|
|
20
|
+
/** Poster image URL */
|
|
21
|
+
poster?: string;
|
|
22
|
+
/** Initial log level (default: 'warn') */
|
|
23
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
24
|
+
/** Autoplay (default: false) */
|
|
25
|
+
autoplay?: boolean;
|
|
26
|
+
/** Loop playback (default: false) */
|
|
27
|
+
loop?: boolean;
|
|
28
|
+
/** Initial volume 0-1 (default: 1.0) */
|
|
29
|
+
volume?: number;
|
|
30
|
+
/** Start muted (default: false) */
|
|
31
|
+
muted?: boolean;
|
|
32
|
+
/** Plugins to register on initialization */
|
|
33
|
+
plugins?: Plugin[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Quality level interface for proxy methods.
|
|
37
|
+
*/
|
|
38
|
+
export interface QualityLevel {
|
|
39
|
+
index: number;
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
bitrate: number;
|
|
43
|
+
label: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* ScarlettPlayer - Lightweight, plugin-based video player.
|
|
47
|
+
*
|
|
48
|
+
* Features:
|
|
49
|
+
* - Plugin-based architecture
|
|
50
|
+
* - Reactive state management
|
|
51
|
+
* - Type-safe event system
|
|
52
|
+
* - Automatic provider selection
|
|
53
|
+
* - Live/DVR support (TSP)
|
|
54
|
+
* - Chapter/marker support (TSP)
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const player = new ScarlettPlayer({
|
|
59
|
+
* container: document.getElementById('player'),
|
|
60
|
+
* plugins: [hlsPlugin, controlsPlugin],
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* // Load and play
|
|
64
|
+
* await player.load('video.m3u8');
|
|
65
|
+
* player.play();
|
|
66
|
+
*
|
|
67
|
+
* // Listen to events
|
|
68
|
+
* player.on('playback:play', () => {
|
|
69
|
+
* console.log('Playing!');
|
|
70
|
+
* });
|
|
71
|
+
*
|
|
72
|
+
* // Access state
|
|
73
|
+
* console.log(player.playing, player.currentTime);
|
|
74
|
+
*
|
|
75
|
+
* // Cleanup
|
|
76
|
+
* player.destroy();
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare class ScarlettPlayer {
|
|
80
|
+
/** Player container element */
|
|
81
|
+
readonly container: HTMLElement;
|
|
82
|
+
/** Event bus */
|
|
83
|
+
private eventBus;
|
|
84
|
+
/** State manager */
|
|
85
|
+
private stateManager;
|
|
86
|
+
/** Logger */
|
|
87
|
+
private logger;
|
|
88
|
+
/** Error handler */
|
|
89
|
+
private errorHandler;
|
|
90
|
+
/** Plugin manager */
|
|
91
|
+
private pluginManager;
|
|
92
|
+
/** Current media provider plugin */
|
|
93
|
+
private _currentProvider;
|
|
94
|
+
/** Player destroyed flag */
|
|
95
|
+
private destroyed;
|
|
96
|
+
/** Seeking while playing flag */
|
|
97
|
+
private seekingWhilePlaying;
|
|
98
|
+
/** Seek resume timeout */
|
|
99
|
+
private seekResumeTimeout;
|
|
100
|
+
/** Initial source URL */
|
|
101
|
+
private initialSrc?;
|
|
102
|
+
/**
|
|
103
|
+
* Create a new ScarlettPlayer.
|
|
104
|
+
*
|
|
105
|
+
* @param options - Player configuration
|
|
106
|
+
*/
|
|
107
|
+
constructor(options: PlayerOptions);
|
|
108
|
+
/**
|
|
109
|
+
* Initialize the player asynchronously.
|
|
110
|
+
* Initializes non-provider plugins and loads initial source if provided.
|
|
111
|
+
*/
|
|
112
|
+
init(): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Load a media source.
|
|
115
|
+
*
|
|
116
|
+
* Selects appropriate provider plugin and loads the source.
|
|
117
|
+
*
|
|
118
|
+
* @param source - Media source URL
|
|
119
|
+
* @returns Promise that resolves when source is loaded
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* await player.load('video.m3u8');
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
load(source: string): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Start playback.
|
|
129
|
+
*
|
|
130
|
+
* @returns Promise that resolves when playback starts
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* await player.play();
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
play(): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Pause playback.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* player.pause();
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
pause(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Seek to a specific time.
|
|
149
|
+
*
|
|
150
|
+
* @param time - Time in seconds
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* player.seek(30); // Seek to 30 seconds
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
seek(time: number): void;
|
|
158
|
+
/**
|
|
159
|
+
* Set volume.
|
|
160
|
+
*
|
|
161
|
+
* @param volume - Volume 0-1
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* player.setVolume(0.5); // 50% volume
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
setVolume(volume: number): void;
|
|
169
|
+
/**
|
|
170
|
+
* Set muted state.
|
|
171
|
+
*
|
|
172
|
+
* @param muted - Mute flag
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```ts
|
|
176
|
+
* player.setMuted(true);
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
setMuted(muted: boolean): void;
|
|
180
|
+
/**
|
|
181
|
+
* Set playback rate.
|
|
182
|
+
*
|
|
183
|
+
* @param rate - Playback rate (e.g., 1.0 = normal, 2.0 = 2x speed)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* player.setPlaybackRate(1.5); // 1.5x speed
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
setPlaybackRate(rate: number): void;
|
|
191
|
+
/**
|
|
192
|
+
* Set autoplay state.
|
|
193
|
+
*
|
|
194
|
+
* When enabled, videos will automatically play after loading.
|
|
195
|
+
*
|
|
196
|
+
* @param autoplay - Autoplay flag
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* ```ts
|
|
200
|
+
* player.setAutoplay(true);
|
|
201
|
+
* await player.load('video.mp4'); // Will auto-play
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
setAutoplay(autoplay: boolean): void;
|
|
205
|
+
/**
|
|
206
|
+
* Subscribe to an event.
|
|
207
|
+
*
|
|
208
|
+
* @param event - Event name
|
|
209
|
+
* @param handler - Event handler
|
|
210
|
+
* @returns Unsubscribe function
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* const unsub = player.on('playback:play', () => {
|
|
215
|
+
* console.log('Playing!');
|
|
216
|
+
* });
|
|
217
|
+
*
|
|
218
|
+
* // Later: unsubscribe
|
|
219
|
+
* unsub();
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
on<T extends EventName>(event: T, handler: EventHandlerFn<T>): () => void;
|
|
223
|
+
/**
|
|
224
|
+
* Subscribe to an event once.
|
|
225
|
+
*
|
|
226
|
+
* @param event - Event name
|
|
227
|
+
* @param handler - Event handler
|
|
228
|
+
* @returns Unsubscribe function
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* player.once('player:ready', () => {
|
|
233
|
+
* console.log('Player ready!');
|
|
234
|
+
* });
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
once<T extends EventName>(event: T, handler: EventHandlerFn<T>): () => void;
|
|
238
|
+
/**
|
|
239
|
+
* Get a plugin by name.
|
|
240
|
+
*
|
|
241
|
+
* @param name - Plugin name
|
|
242
|
+
* @returns Plugin instance or null
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```ts
|
|
246
|
+
* const hls = player.getPlugin('hls-plugin');
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
getPlugin<T extends Plugin>(name: string): T | null;
|
|
250
|
+
/**
|
|
251
|
+
* Register a plugin.
|
|
252
|
+
*
|
|
253
|
+
* @param plugin - Plugin to register
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* player.registerPlugin(myPlugin);
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
registerPlugin(plugin: Plugin): void;
|
|
261
|
+
/**
|
|
262
|
+
* Get current state snapshot.
|
|
263
|
+
*
|
|
264
|
+
* @returns Readonly state snapshot
|
|
265
|
+
*
|
|
266
|
+
* @example
|
|
267
|
+
* ```ts
|
|
268
|
+
* const state = player.getState();
|
|
269
|
+
* console.log(state.playing, state.currentTime);
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
getState(): Readonly<StateStore>;
|
|
273
|
+
/**
|
|
274
|
+
* Get available quality levels from the current provider.
|
|
275
|
+
* @returns Array of quality levels or empty array if not available
|
|
276
|
+
*/
|
|
277
|
+
getQualities(): QualityLevel[];
|
|
278
|
+
/**
|
|
279
|
+
* Set quality level (-1 for auto).
|
|
280
|
+
* @param index - Quality level index
|
|
281
|
+
*/
|
|
282
|
+
setQuality(index: number): void;
|
|
283
|
+
/**
|
|
284
|
+
* Get current quality level index (-1 = auto).
|
|
285
|
+
*/
|
|
286
|
+
getCurrentQuality(): number;
|
|
287
|
+
/**
|
|
288
|
+
* Request fullscreen mode.
|
|
289
|
+
*/
|
|
290
|
+
requestFullscreen(): Promise<void>;
|
|
291
|
+
/**
|
|
292
|
+
* Exit fullscreen mode.
|
|
293
|
+
*/
|
|
294
|
+
exitFullscreen(): Promise<void>;
|
|
295
|
+
/**
|
|
296
|
+
* Toggle fullscreen mode.
|
|
297
|
+
*/
|
|
298
|
+
toggleFullscreen(): Promise<void>;
|
|
299
|
+
/**
|
|
300
|
+
* Request AirPlay (proxied to airplay plugin).
|
|
301
|
+
*/
|
|
302
|
+
requestAirPlay(): void;
|
|
303
|
+
/**
|
|
304
|
+
* Request Chromecast session (proxied to chromecast plugin).
|
|
305
|
+
*/
|
|
306
|
+
requestChromecast(): Promise<void>;
|
|
307
|
+
/**
|
|
308
|
+
* Stop casting (AirPlay or Chromecast).
|
|
309
|
+
*/
|
|
310
|
+
stopCasting(): void;
|
|
311
|
+
/**
|
|
312
|
+
* Seek to live edge (for live streams).
|
|
313
|
+
*/
|
|
314
|
+
seekToLive(): void;
|
|
315
|
+
/**
|
|
316
|
+
* Destroy the player and cleanup all resources.
|
|
317
|
+
*
|
|
318
|
+
* @example
|
|
319
|
+
* ```ts
|
|
320
|
+
* player.destroy();
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
destroy(): void;
|
|
324
|
+
/**
|
|
325
|
+
* Get playing state.
|
|
326
|
+
*/
|
|
327
|
+
get playing(): boolean;
|
|
328
|
+
/**
|
|
329
|
+
* Get paused state.
|
|
330
|
+
*/
|
|
331
|
+
get paused(): boolean;
|
|
332
|
+
/**
|
|
333
|
+
* Get current time in seconds.
|
|
334
|
+
*/
|
|
335
|
+
get currentTime(): number;
|
|
336
|
+
/**
|
|
337
|
+
* Get duration in seconds.
|
|
338
|
+
*/
|
|
339
|
+
get duration(): number;
|
|
340
|
+
/**
|
|
341
|
+
* Get volume (0-1).
|
|
342
|
+
*/
|
|
343
|
+
get volume(): number;
|
|
344
|
+
/**
|
|
345
|
+
* Get muted state.
|
|
346
|
+
*/
|
|
347
|
+
get muted(): boolean;
|
|
348
|
+
/**
|
|
349
|
+
* Get playback rate.
|
|
350
|
+
*/
|
|
351
|
+
get playbackRate(): number;
|
|
352
|
+
/**
|
|
353
|
+
* Get buffered amount (0-1).
|
|
354
|
+
*/
|
|
355
|
+
get bufferedAmount(): number;
|
|
356
|
+
/**
|
|
357
|
+
* Get current provider plugin.
|
|
358
|
+
*/
|
|
359
|
+
get currentProvider(): Plugin | null;
|
|
360
|
+
/**
|
|
361
|
+
* Get fullscreen state.
|
|
362
|
+
*/
|
|
363
|
+
get fullscreen(): boolean;
|
|
364
|
+
/**
|
|
365
|
+
* Get live stream state.
|
|
366
|
+
*/
|
|
367
|
+
get live(): boolean;
|
|
368
|
+
/**
|
|
369
|
+
* Get autoplay state.
|
|
370
|
+
*/
|
|
371
|
+
get autoplay(): boolean;
|
|
372
|
+
/**
|
|
373
|
+
* Check if player is destroyed.
|
|
374
|
+
* @private
|
|
375
|
+
*/
|
|
376
|
+
private checkDestroyed;
|
|
377
|
+
/**
|
|
378
|
+
* Detect MIME type from source URL.
|
|
379
|
+
* @private
|
|
380
|
+
*/
|
|
381
|
+
private detectMimeType;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Create a ScarlettPlayer instance and initialize it.
|
|
385
|
+
*
|
|
386
|
+
* Convenience factory function that creates and initializes
|
|
387
|
+
* the player in a single async call.
|
|
388
|
+
*
|
|
389
|
+
* @param options - Player configuration
|
|
390
|
+
* @returns Promise resolving to initialized player
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```ts
|
|
394
|
+
* const player = await createPlayer({
|
|
395
|
+
* container: '#player',
|
|
396
|
+
* src: 'video.m3u8',
|
|
397
|
+
* plugins: [hlsPlugin()],
|
|
398
|
+
* });
|
|
399
|
+
*
|
|
400
|
+
* player.play();
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
403
|
+
export declare function createPlayer(options: PlayerOptions): Promise<ScarlettPlayer>;
|
|
404
|
+
//# sourceMappingURL=scarlett-player.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scarlett-player.d.ts","sourceRoot":"","sources":["../src/scarlett-player.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,cAAc;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAEhC,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAW;IAE3B,oBAAoB;IACpB,OAAO,CAAC,YAAY,CAAe;IAEnC,aAAa;IACb,OAAO,CAAC,MAAM,CAAS;IAEvB,oBAAoB;IACpB,OAAO,CAAC,YAAY,CAAe;IAEnC,qBAAqB;IACrB,OAAO,CAAC,aAAa,CAAgB;IAErC,oCAAoC;IACpC,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,4BAA4B;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B,iCAAiC;IACjC,OAAO,CAAC,mBAAmB,CAAS;IAEpC,0BAA0B;IAC1B,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,yBAAyB;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,aAAa;IAqDlC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmEzC;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;IA2Bb;;;;;;;;;OASG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA0CxB;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAO9B;;;;;;;;;OASG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOpC;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAKzE;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAK3E;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAKnD;;;;;;;;;OASG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;;;;;;;OAUG;IACH,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC;IAOhC;;;OAGG;IACH,YAAY,IAAI,YAAY,EAAE;IAW9B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiB/B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAa3B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBxC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC;;OAEG;IACH,cAAc,IAAI,IAAI;IAUtB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxC;;OAEG;IACH,WAAW,IAAI,IAAI;IAgBnB;;OAEG;IACH,UAAU,IAAI,IAAI;IA6BlB;;;;;;;OAOG;IACH,OAAO,IAAI,IAAI;IA6Bf;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACH,OAAO,CAAC,cAAc;CAkBvB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAIlF"}
|