UNPKG

@ngx-telly/player

Version:

Telly - Angular frame-accurate HTML player

1 lines 26.1 kB
{"version":3,"file":"ngx-telly-player-core.mjs","sources":["../../../../libs/player/core/src/definitions/browser.ts","../../../../libs/player/core/src/definitions/video-event.ts","../../../../libs/player/core/src/definitions/telly-media.ts","../../../../libs/player/core/src/definitions/telly.token.ts","../../../../libs/player/core/src/rxjs-operators/event-type.ts","../../../../libs/player/core/src/rxjs-operators/debounce-move.ts","../../../../libs/player/core/src/tokens/browser.ts","../../../../libs/player/core/src/assets/icons.ts","../../../../libs/player/core/src/util/time.ts","../../../../libs/player/core/src/plugin/telly-plugin.token.ts","../../../../libs/player/core/src/ngx-telly-player-core.ts"],"sourcesContent":["export enum Browser {\n Chromium,\n Webkit,\n Ios,\n Firefox\n}\n","export enum VideoEvent {\n Abort = 'abort',\n Error = 'error',\n CanPlay = 'canplay',\n CanPlayThrough = 'canplaythrough',\n Complete = 'complete',\n DurationChange = 'durationchange',\n Emptied = 'emptied',\n Ended = 'ended',\n Resize = 'resize',\n LoadStart = 'loadstart',\n LoadedData = 'loadeddata',\n LoadedMetadata = 'loadedmetadata',\n Pause = 'pause',\n Play = 'play',\n Playing = 'playing',\n Progress = 'progress',\n RateChange = 'ratechange',\n Seeked = 'seeked',\n Seeking = 'seeking',\n Stalled = 'stalled',\n Suspend = 'suspend',\n TimeUpdate = 'timeupdate',\n VolumeChange = 'volumechange',\n Waiting = 'waiting',\n}\n","import { fromEvent, merge, Observable, Subject } from 'rxjs';\nimport { TellyMediaOptions } from './telly-media.options';\nimport { VideoEvent } from './video-event';\n\nexport class TellyMedia {\n id: string;\n opts: TellyMediaOptions;\n element: HTMLVideoElement;\n\n internalEvents$ = new Subject<string>();\n private nativeEvents$!: Observable<Event>;\n private interval?: ReturnType<typeof setInterval>;\n\n rateMap: Record<number, number> = {\n [1]: 0.1,\n [2]: 0.2,\n [3]: 0.1,\n [4]: 0.2,\n [5]: 0.5,\n [6]: 0.6,\n [7]: 0.7,\n [8]: 0.8,\n };\n\n constructor(id: string, el: HTMLVideoElement, options?: TellyMediaOptions) {\n this.id = id;\n this.element = el;\n this.opts = { ...options };\n\n this.events = this.createEventStream();\n }\n\n get events(): Observable<Event> {\n return this.nativeEvents$;\n }\n\n private set events(events: Observable<Event>) {\n this.nativeEvents$ = events;\n }\n\n get messages(): Observable<string> {\n return this.internalEvents$;\n }\n\n get time(): number {\n return this.element.currentTime;\n }\n\n set time(time: number) {\n this.element.currentTime = time;\n }\n\n get windowTime(): number {\n return this.time - this.drift;\n }\n\n get totalDuration(): number {\n return this.element.duration;\n }\n\n get duration(): number {\n return this.opts?.duration ?? this.element.duration;\n }\n\n set duration(val: number) {\n this.opts.duration = val;\n }\n\n get drift(): number {\n return this.opts?.drift ?? 0;\n }\n\n set drift(val: number) {\n this.opts.drift = val;\n }\n\n get rate(): number {\n return this.opts?.rate ?? 1;\n }\n\n get buffered(): TimeRanges {\n return this.element.buffered;\n }\n\n get volume(): number {\n return this.element.volume;\n }\n\n set volume(vol: number) {\n this.indicate(`Volume ${vol * 100}%`);\n this.storeVolume(vol);\n this.element.volume = vol;\n }\n\n get playing(): boolean {\n return this.element.currentTime > 0 && !this.element.paused && !this.element.ended;\n }\n\n play(silent = false): void {\n if (!this.playing && !silent) this.indicate('Play');\n this.setRate(1);\n this.element.play();\n }\n\n pause(silent = false): void {\n if (this.playing && !silent) this.indicate('Pause');\n this.setRate(1);\n this.element.pause();\n this.time = this.element.currentTime; // magic\n }\n\n toggle(): void {\n this.element.paused ? this.play() : this.pause();\n }\n\n stop(): void {\n this.element.pause();\n this.element.currentTime = 0;\n this.indicate('Stop');\n }\n\n seek(second: number): void {\n this.element.currentTime = second + this.drift;\n }\n\n setRate(rate: number) {\n this.opts.rate = rate;\n clearInterval(this.interval);\n\n if (rate === 1) {\n this.element.playbackRate = rate;\n } else if (rate > 1) {\n this.indicate(`Forward x${Math.abs(rate)}`);\n if (this.opts.smoothFastForward) {\n this.element.playbackRate = rate;\n const paused = this.element.paused;\n\n if (paused) {\n this.play(true);\n }\n } else {\n const updateRate = (this.opts.rewindUpdateRate ?? 12) + 1;\n const next = (rate / 1000) * updateRate;\n this.interval = setInterval(() => (this.time = this.element.currentTime + next), this.opts.rewindUpdateRate);\n }\n } else if (rate < 0) {\n this.indicate(`Rewind x${Math.abs(rate)}`);\n const updateRate = (this.opts.rewindUpdateRate ?? 12) + 1;\n const next = (Math.abs(rate) / 1000) * updateRate;\n this.interval = setInterval(() => (this.time = this.element.currentTime - next), this.opts.rewindUpdateRate);\n }\n }\n\n faster(): void {\n const rate = this.rate + 1;\n if (rate > 8) {\n this.opts.rate = 8;\n } else if (rate === 0) {\n this.opts.rate = 1;\n } else {\n this.opts.rate = rate;\n }\n this.setRate(this.rate);\n }\n\n slower(): void {\n const rate = this.rate - 1;\n if (rate < -8) {\n this.opts.rate = -8;\n } else if (rate === 0) {\n this.opts.rate = -1;\n } else {\n this.opts.rate = rate;\n }\n this.setRate(this.rate);\n }\n\n indicate(msg: string): void {\n this.internalEvents$.next(msg);\n }\n\n event(name: VideoEvent | string): Observable<Event> {\n return fromEvent(this.element, name);\n }\n\n createEventStream(): Observable<Event> {\n return merge(\n fromEvent(this.element, VideoEvent.CanPlay),\n fromEvent(this.element, VideoEvent.CanPlayThrough),\n fromEvent(this.element, VideoEvent.Complete),\n fromEvent(this.element, VideoEvent.DurationChange),\n fromEvent(this.element, VideoEvent.Emptied),\n fromEvent(this.element, VideoEvent.Ended),\n fromEvent(this.element, VideoEvent.LoadStart),\n fromEvent(this.element, VideoEvent.LoadedData),\n fromEvent(this.element, VideoEvent.LoadedMetadata),\n fromEvent(this.element, VideoEvent.Play),\n fromEvent(this.element, VideoEvent.Pause),\n fromEvent(this.element, VideoEvent.Playing),\n fromEvent(this.element, VideoEvent.Progress),\n fromEvent(this.element, VideoEvent.RateChange),\n fromEvent(this.element, VideoEvent.Seeked),\n fromEvent(this.element, VideoEvent.Seeking),\n fromEvent(this.element, VideoEvent.Stalled),\n fromEvent(this.element, VideoEvent.Suspend),\n fromEvent(this.element, VideoEvent.TimeUpdate),\n fromEvent(this.element, VideoEvent.VolumeChange),\n fromEvent(this.element, VideoEvent.Waiting),\n fromEvent(this.element, VideoEvent.Error),\n fromEvent(this.element, VideoEvent.Abort),\n fromEvent(this.element, VideoEvent.Resize)\n );\n }\n\n storeVolume(vol: number) {\n localStorage.setItem(`telly:volume:${this.id ?? 'default'}`, vol.toString());\n }\n\n loadVolume(): number {\n const stored = localStorage.getItem(`telly:volume:${this.id ?? 'default'}`);\n if (stored) {\n this.volume = +stored;\n return +stored;\n }\n return this.volume ?? 1;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TellyMediaOptions } from './telly-media.options';\n\nexport const tellyConfigToken: InjectionToken<TellyMediaOptions> = new InjectionToken('__TELLY_CONFIG__');\n","import { Observable } from 'rxjs';\nimport { VideoEvent } from \"../definitions\";\n\nexport function eventType(types: VideoEvent[]) {\n return function (source: Observable<Event>): Observable<Event> {\n return new Observable((subscriber) => {\n return source.subscribe({\n next(ev) {\n if (types.includes(ev.type as VideoEvent)) {\n return subscriber.next(ev);\n }\n },\n error(err) {\n subscriber.next(err);\n },\n complete() {\n subscriber.complete();\n },\n });\n });\n };\n}\n","import { debounceTime, map, Observable, startWith, takeUntil, tap } from 'rxjs';\n\nexport function debounceMove(delay: number, destroyer: Observable<void>, callback: (x: boolean) => void) {\n return function (source: Observable<Event>): Observable<boolean> {\n return source\n .pipe(\n startWith(new Event('mousemove')),\n takeUntil(destroyer),\n tap(() => callback(false)),\n map(() => true),\n debounceTime(delay),\n tap(hide => callback(hide)));\n };\n}\n","import { Platform } from \"@angular/cdk/platform\";\nimport { inject, InjectionToken } from \"@angular/core\";\nimport { Browser } from \"../definitions\";\n\nexport const BROWSER = new InjectionToken<Browser>('Current browser', {\n factory() {\n const platform = inject(Platform);\n\n if (platform.WEBKIT) {\n return Browser.Webkit;\n }\n\n if (platform.FIREFOX) {\n return Browser.Firefox;\n }\n\n if (platform.IOS) {\n return Browser.Ios;\n }\n\n return Browser.Chromium;\n }\n});\n","export const play = 'M8,5.14V19.14L19,12.14L8,5.14Z';\nexport const pause = 'M14,19H18V5H14M6,19H10V5H6V19Z';\nexport const fastForward = 'M4,5V19L11,12M18,5V19H20V5M11,5V19L18,12';\nexport const rewind = 'M20,5V19L13,12M6,5V19H4V5M13,5V19L6,12';\nexport const fullScreen = 'M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z';\nexport const smallScreen = 'M14,14H19V16H16V19H14V14M5,14H10V19H8V16H5V14M8,5H10V10H5V8H8V5M19,8V10H14V5H16V8H19Z';\nexport const mute = \"M12,4L9.91,6.09L12,8.18M4.27,3L3,4.27L7.73,9H3V15H7L12,20V13.27L16.25,17.53C15.58,18.04 14.83,18.46 14,18.7V20.77C15.38,20.45 16.63,19.82 17.68,18.96L19.73,21L21,19.73L12,10.73M19,12C19,12.94 18.8,13.82 18.46,14.64L19.97,16.15C20.62,14.91 21,13.5 21,12C21,7.72 18,4.14 14,3.23V5.29C16.89,6.15 19,8.83 19,12M16.5,12C16.5,10.23 15.5,8.71 14,7.97V10.18L16.45,12.63C16.5,12.43 16.5,12.21 16.5,12Z\";\nexport const volumeLow = \"M7,9V15H11L16,20V4L11,9H7Z\";\nexport const volumeMedium = \"M5,9V15H9L14,20V4L9,9M18.5,12C18.5,10.23 17.5,8.71 16,7.97V16C17.5,15.29 18.5,13.76 18.5,12Z\";\nexport const volumeHigh = \"M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z\";\nexport const fwd5 = \"M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z\";\nexport const fwd10 = \"M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14M11.5,3C14.15,3 16.55,4 18.4,5.6L21,3V10H14L16.62,7.38C15.23,6.22 13.46,5.5 11.5,5.5C7.96,5.5 4.95,7.81 3.9,11L1.53,10.22C2.92,6.03 6.85,3 11.5,3Z\";\nexport const fwd15 = \"M11.5 3C14.15 3 16.55 4 18.4 5.6L21 3V10H14L16.62 7.38C15.23 6.22 13.46 5.5 11.5 5.5C7.96 5.5 4.95 7.81 3.9 11L1.53 10.22C2.92 6.03 6.85 3 11.5 3M10 12V22H8V14H6V12H10M12 12H18V14H14V16H16C17.11 16 18 16.9 18 18V20C18 21.11 17.11 22 16 22H12V20H16V18H12V12Z\";\nexport const fwd30 = \"M11.5,3C6.85,3 2.92,6.03 1.53,10.22L3.9,11C4.95,7.81 7.96,5.5 11.5,5.5C13.46,5.5 15.23,6.22 16.62,7.38L14,10H21V3L18.4,5.6C16.55,4 14.15,3 11.5,3M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20Z\";\nexport const fwd45 = \"M11.5 3C14.1 3 16.5 4 18.4 5.6L21 3V10H14L16.6 7.4C15.2 6.2 13.4 5.5 11.5 5.5C8 5.5 4.9 7.8 3.9 11L1.5 10.2C2.9 6 6.8 3 11.5 3M13 12H19V14H15V16H17C18.1 16 19 16.9 19 18V20C19 21.1 18.1 22 17 22H13V20H17V18H13V12M5 12V18H9V22H11V12H9V16H7V12H5Z\";\nexport const fwd60 = \"M11.5 3C6.8 3 2.9 6 1.5 10.2L3.9 11C4.9 7.8 8 5.5 11.5 5.5C13.5 5.5 15.2 6.2 16.6 7.4L14 10H21V3L18.4 5.6C16.5 4 14.1 3 11.5 3M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z\";\nexport const rwd5 = \"M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M9 12H15V14H11V16H13C14.11 16 15 16.9 15 18V20C15 21.11 14.11 22 13 22H9V20H13V18H9V12Z\";\nexport const rwd10 = \"M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3M10,12V22H8V14H6V12H10M18,14V20C18,21.11 17.11,22 16,22H14A2,2 0 0,1 12,20V14A2,2 0 0,1 14,12H16C17.11,12 18,12.9 18,14M14,14V20H16V14H14Z\";\nexport const rwd15 = \"M12.5 3C17.15 3 21.08 6.03 22.47 10.22L20.1 11C19.05 7.81 16.04 5.5 12.5 5.5C10.54 5.5 8.77 6.22 7.38 7.38L10 10H3V3L5.6 5.6C7.45 4 9.85 3 12.5 3M10 12V22H8V14H6V12H10M12 12H18V14H14V16H16C17.11 16 18 16.9 18 18V20C18 21.11 17.11 22 16 22H12V20H16V18H12V12Z\";\nexport const rwd30 = \"M19,14V20C19,21.11 18.11,22 17,22H15A2,2 0 0,1 13,20V14A2,2 0 0,1 15,12H17C18.11,12 19,12.9 19,14M15,14V20H17V14H15M11,20C11,21.11 10.1,22 9,22H5V20H9V18H7V16H9V14H5V12H9A2,2 0 0,1 11,14V15.5A1.5,1.5 0 0,1 9.5,17A1.5,1.5 0 0,1 11,18.5V20M12.5,3C17.15,3 21.08,6.03 22.47,10.22L20.1,11C19.05,7.81 16.04,5.5 12.5,5.5C10.54,5.5 8.77,6.22 7.38,7.38L10,10H3V3L5.6,5.6C7.45,4 9.85,3 12.5,3Z\";\nexport const rwd45 = \"M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M13 12H19V14H15V16H17C18.1 16 19 16.9 19 18V20C19 21.1 18.1 22 17 22H13V20H17V18H13V12M5 12V18H9V22H11V12H9V16H7V12H5Z\";\nexport const rwd60 = \"M19 14V20C19 21.1 18.1 22 17 22H15C13.9 22 13 21.1 13 20V14C13 12.9 13.9 12 15 12H17C18.1 12 19 12.9 19 14M15 14V20H17V14H15M12.5 3C17.1 3 21.1 6 22.5 10.2L20.1 11C19 7.8 16 5.5 12.5 5.5C10.5 5.5 8.8 6.2 7.4 7.4L10 10H3V3L5.6 5.6C7.4 4 9.9 3 12.5 3M7 12C5.9 12 5 12.9 5 14V20C5 21.1 5.9 22 7 22H9C10.1 22 11 21.1 11 20V18C11 16.9 10.1 16 9 16H7V14H11V12H7M7 18H9V20H7V18Z\";\n","export const getTime = (seconds: number): string => {\n const h = Math.max(0, Math.floor(seconds / 3600));\n const m = Math.max(0, Math.floor((seconds % 3600) / 60));\n const s = Math.max(0, Math.floor(seconds % 60));\n return `${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${(s).toString().padStart(2, '0')}`;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { TellyPlugin } from \"./telly-plugin\";\nimport { TellyPluginConfig } from \"./telly-plugin.config\";\n\nexport const tellyPluginToken: InjectionToken<TellyPlugin> = new InjectionToken(\n '__TELLY_PLUGIN__'\n);\n\nexport const tellyPluginConfigToken: InjectionToken<TellyPluginConfig> = new InjectionToken(\n '__TELLY_PLUGIN_CONFIG__'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;IAAY;AAAZ,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,OAAA,CAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,OAAA,CAAA,OAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACT,CAAC,EALW,OAAO,KAAP,OAAO,GAAA,EAAA,CAAA,CAAA;;ICAP;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACvB,CAAC,EAzBW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCIT,UAAU,CAAA;AAoBrB,IAAA,WAAA,CAAY,EAAU,EAAE,EAAoB,EAAE,OAA2B,EAAA;AAfzE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAU;AAIvC,QAAA,IAAA,CAAA,OAAO,GAA2B;YAChC,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;YACR,CAAC,CAAC,GAAG,GAAG;SACT;AAGC,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;IACxC;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,aAAa;IAC3B;IAEA,IAAY,MAAM,CAAC,MAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;IAC7B;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,eAAe;IAC7B;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;IACjC;IAEA,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI;IACjC;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;IAC/B;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;IACrD;IAEA,IAAI,QAAQ,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG;IAC1B;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;IAC9B;IAEA,IAAI,KAAK,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG;IACvB;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;IAC7B;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;IAC9B;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;IAC5B;IAEA,IAAI,MAAM,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,QAAQ,CAAC,CAAA,OAAA,EAAU,GAAG,GAAG,GAAG,CAAA,CAAA,CAAG,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;IAC3B;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;IACpF;IAEA,IAAI,CAAC,MAAM,GAAG,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;IAEA,KAAK,CAAC,MAAM,GAAG,KAAK,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACvC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;IAClD;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvB;AAEA,IAAA,IAAI,CAAC,MAAc,EAAA;QACjB,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;IAChD;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;AACrB,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;QAClC;AAAO,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAA,SAAA,EAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAC3C,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI;AAChC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAElC,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB;YACF;iBAAO;AACL,gBAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,CAAC;gBACzD,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,UAAU;AACvC,gBAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAC9G;QACF;AAAO,aAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;AAC1C,YAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,IAAI,CAAC;AACzD,YAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,UAAU;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9G;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACpB;AAAO,aAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACpB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACrB;AAAO,aAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACrB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;AAEA,IAAA,KAAK,CAAC,IAAyB,EAAA;QAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;IACtC;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,KAAK,CACV,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAC7C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAClD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EACxC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAC9C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,EAChD,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EACzC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAC3C;IACH;AAEA,IAAA,WAAW,CAAC,GAAW,EAAA;AACrB,QAAA,YAAY,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,EAAE,IAAI,SAAS,CAAA,CAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC9E;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,EAAE,IAAI,SAAS,CAAA,CAAE,CAAC;QAC3E,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM;YACrB,OAAO,CAAC,MAAM;QAChB;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC;IACzB;AACD;;MC/NY,gBAAgB,GAAsC,IAAI,cAAc,CAAC,kBAAkB;;ACAlG,SAAU,SAAS,CAAC,KAAmB,EAAA;AAC3C,IAAA,OAAO,UAAU,MAAyB,EAAA;AACxC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;YACnC,OAAO,MAAM,CAAC,SAAS,CAAC;AACtB,gBAAA,IAAI,CAAC,EAAE,EAAA;oBACL,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAkB,CAAC,EAAE;AACzC,wBAAA,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B;gBACF,CAAC;AACD,gBAAA,KAAK,CAAC,GAAG,EAAA;AACP,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtB,CAAC;gBACD,QAAQ,GAAA;oBACN,UAAU,CAAC,QAAQ,EAAE;gBACvB,CAAC;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;;SCnBgB,YAAY,CAAC,KAAa,EAAE,SAA2B,EAAE,QAA8B,EAAA;AACrG,IAAA,OAAO,UAAU,MAAyB,EAAA;AACxC,QAAA,OAAO;aACF,IAAI,CACD,SAAS,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EACjC,SAAS,CAAC,SAAS,CAAC,EACpB,GAAG,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC1B,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,YAAY,CAAC,KAAK,CAAC,EACnB,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,IAAA,CAAC;AACH;;MCTa,OAAO,GAAG,IAAI,cAAc,CAAU,iBAAiB,EAAE;IACpE,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,OAAO,OAAO,CAAC,MAAM;QACvB;AAEA,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;YACpB,OAAO,OAAO,CAAC,OAAO;QACxB;AAEA,QAAA,IAAI,QAAQ,CAAC,GAAG,EAAE;YAChB,OAAO,OAAO,CAAC,GAAG;QACpB;QAEA,OAAO,OAAO,CAAC,QAAQ;IACzB;AACD,CAAA;;ACtBM,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,WAAW,GAAG;AACpB,MAAM,MAAM,GAAG;AACf,MAAM,UAAU,GAAG;AACnB,MAAM,WAAW,GAAG;AACpB,MAAM,IAAI,GAAG;AACb,MAAM,SAAS,GAAG;AAClB,MAAM,YAAY,GAAG;AACrB,MAAM,UAAU,GAAG;AACnB,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,IAAI,GAAG;AACb,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;AACd,MAAM,KAAK,GAAG;;ACrBd,MAAM,OAAO,GAAG,CAAC,OAAe,KAAY;AACjD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AACxD,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC/C,IAAA,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AAC/G;;MCDa,gBAAgB,GAAgC,IAAI,cAAc,CAC3E,kBAAkB;MAGT,sBAAsB,GAAsC,IAAI,cAAc,CACvF,yBAAyB;;ACT7B;;AAEG;;;;"}