UNPKG

73.7 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-translate-core.mjs","sources":["../../lib/translate.loader.ts","../../lib/missing-translation-handler.ts","../../lib/util.ts","../../lib/translate.parser.ts","../../lib/translate.compiler.ts","../../lib/translate.store.ts","../../lib/translate.service.ts","../../lib/translate.directive.ts","../../lib/translate.pipe.ts","../../public-api.ts","../../ngx-translate-core.ts"],"sourcesContent":["import {Injectable} from \"@angular/core\";\r\nimport {Observable, of} from \"rxjs\";\r\n\r\nexport abstract class TranslateLoader {\r\n abstract getTranslation(lang: string): Observable<any>;\r\n}\r\n\r\n/**\r\n * This loader is just a placeholder that does nothing, in case you don't need a loader at all\r\n */\r\n@Injectable()\r\nexport class TranslateFakeLoader extends TranslateLoader {\r\n getTranslation(lang: string): Observable<any> {\r\n return of({});\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {TranslateService} from \"./translate.service\";\r\n\r\nexport interface MissingTranslationHandlerParams {\r\n /**\r\n * the key that's missing in translation files\r\n */\r\n key: string;\r\n\r\n /**\r\n * an instance of the service that was unable to translate the key.\r\n */\r\n translateService: TranslateService;\r\n\r\n /**\r\n * interpolation params that were passed along for translating the given key.\r\n */\r\n interpolateParams?: Object;\r\n}\r\n\r\nexport abstract class MissingTranslationHandler {\r\n /**\r\n * A function that handles missing translations.\r\n *\r\n * @param params context for resolving a missing translation\r\n * @returns a value or an observable\r\n * If it returns a value, then this value is used.\r\n * If it return an observable, the value returned by this observable will be used (except if the method was \"instant\").\r\n * If it doesn't return then the key will be used as a value\r\n */\r\n abstract handle(params: MissingTranslationHandlerParams): any;\r\n}\r\n\r\n/**\r\n * This handler is just a placeholder that does nothing, in case you don't need a missing translation handler at all\r\n */\r\n@Injectable()\r\nexport class FakeMissingTranslationHandler implements MissingTranslationHandler {\r\n handle(params: MissingTranslationHandlerParams): string {\r\n return params.key;\r\n }\r\n}\r\n","/* tslint:disable */\r\n/**\r\n * Determines if two objects or two values are equivalent.\r\n *\r\n * Two objects or values are considered equivalent if at least one of the following is true:\r\n *\r\n * * Both objects or values pass `===` comparison.\r\n * * Both objects or values are of the same type and all of their properties are equal by\r\n * comparing them with `equals`.\r\n *\r\n * @param o1 Object or value to compare.\r\n * @param o2 Object or value to compare.\r\n * @returns true if arguments are equal.\r\n */\r\nexport function equals(o1: any, o2: any): boolean {\r\n if (o1 === o2) return true;\r\n if (o1 === null || o2 === null) return false;\r\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\r\n let t1 = typeof o1, t2 = typeof o2, length: number, key: any, keySet: any;\r\n if (t1 == t2 && t1 == 'object') {\r\n if (Array.isArray(o1)) {\r\n if (!Array.isArray(o2)) return false;\r\n if ((length = o1.length) == o2.length) {\r\n for (key = 0; key < length; key++) {\r\n if (!equals(o1[key], o2[key])) return false;\r\n }\r\n return true;\r\n }\r\n } else {\r\n if (Array.isArray(o2)) {\r\n return false;\r\n }\r\n keySet = Object.create(null);\r\n for (key in o1) {\r\n if (!equals(o1[key], o2[key])) {\r\n return false;\r\n }\r\n keySet[key] = true;\r\n }\r\n for (key in o2) {\r\n if (!(key in keySet) && typeof o2[key] !== 'undefined') {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/* tslint:enable */\r\n\r\nexport function isDefined(value: any): boolean {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\n\r\nexport function isObject(item: any): boolean {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n}\r\n\r\nexport function mergeDeep(target: any, source: any): any {\r\n let output = Object.assign({}, target);\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key: any) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, {[key]: source[key]});\r\n } else {\r\n output[key] = mergeDeep(target[key], source[key]);\r\n }\r\n } else {\r\n Object.assign(output, {[key]: source[key]});\r\n }\r\n });\r\n }\r\n return output;\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {isDefined} from \"./util\";\r\n\r\nexport abstract class TranslateParser {\r\n /**\r\n * Interpolates a string to replace parameters\r\n * \"This is a {{ key }}\" ==> \"This is a value\", with params = { key: \"value\" }\r\n * @param expr\r\n * @param params\r\n */\r\n abstract interpolate(expr: string | Function, params?: any): string | undefined;\r\n\r\n /**\r\n * Gets a value from an object by composed key\r\n * parser.getValue({ key1: { keyA: 'valueI' }}, 'key1.keyA') ==> 'valueI'\r\n * @param target\r\n * @param key\r\n */\r\n abstract getValue(target: any, key: string): any\r\n}\r\n\r\n@Injectable()\r\nexport class TranslateDefaultParser extends TranslateParser {\r\n templateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g;\r\n\r\n public interpolate(expr: string | Function, params?: any): string {\r\n let result: string;\r\n\r\n if (typeof expr === 'string') {\r\n result = this.interpolateString(expr, params);\r\n } else if (typeof expr === 'function') {\r\n result = this.interpolateFunction(expr, params);\r\n } else {\r\n // this should not happen, but an unrelated TranslateService test depends on it\r\n result = expr as string;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getValue(target: any, key: string): any {\r\n let keys = typeof key === 'string' ? key.split('.') : [key];\r\n key = '';\r\n do {\r\n key += keys.shift();\r\n if (isDefined(target) && isDefined(target[key]) && (typeof target[key] === 'object' || !keys.length)) {\r\n target = target[key];\r\n key = '';\r\n } else if (!keys.length) {\r\n target = undefined;\r\n } else {\r\n key += '.';\r\n }\r\n } while (keys.length);\r\n\r\n return target;\r\n }\r\n\r\n private interpolateFunction(fn: Function, params?: any) {\r\n return fn(params);\r\n }\r\n\r\n private interpolateString(expr: string, params?: any) {\r\n if (!params) {\r\n return expr;\r\n }\r\n\r\n return expr.replace(this.templateMatcher, (substring: string, b: string) => {\r\n let r = this.getValue(params, b);\r\n return isDefined(r) ? r : substring;\r\n });\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\n\r\nexport abstract class TranslateCompiler {\r\n abstract compile(value: string, lang: string): string | Function;\r\n\r\n abstract compileTranslations(translations: any, lang: string): any;\r\n}\r\n\r\n/**\r\n * This compiler is just a placeholder that does nothing, in case you don't need a compiler at all\r\n */\r\n@Injectable()\r\nexport class TranslateFakeCompiler extends TranslateCompiler {\r\n compile(value: string, lang: string): string | Function {\r\n return value;\r\n }\r\n\r\n compileTranslations(translations: any, lang: string): any {\r\n return translations;\r\n }\r\n}\r\n","import {EventEmitter} from \"@angular/core\";\r\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslationChangeEvent} from \"./translate.service\";\r\n\r\nexport class TranslateStore {\r\n /**\r\n * The default lang to fallback when translations are missing on the current lang\r\n */\r\n public defaultLang!: string;\r\n\r\n /**\r\n * The lang currently used\r\n */\r\n public currentLang: string = this.defaultLang;\r\n\r\n /**\r\n * a list of translations per lang\r\n */\r\n public translations: any = {};\r\n\r\n /**\r\n * an array of langs\r\n */\r\n public langs: Array<string> = [];\r\n\r\n /**\r\n * An EventEmitter to listen to translation change events\r\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n public onTranslationChange: EventEmitter<TranslationChangeEvent> = new EventEmitter<TranslationChangeEvent>();\r\n\r\n /**\r\n * An EventEmitter to listen to lang change events\r\n * onLangChange.subscribe((params: LangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n public onLangChange: EventEmitter<LangChangeEvent> = new EventEmitter<LangChangeEvent>();\r\n\r\n /**\r\n * An EventEmitter to listen to default lang change events\r\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n public onDefaultLangChange: EventEmitter<DefaultLangChangeEvent> = new EventEmitter<DefaultLangChangeEvent>();\r\n}\r\n","import {EventEmitter, Inject, Injectable, InjectionToken} from \"@angular/core\";\r\nimport {concat, forkJoin, isObservable, Observable, of, defer} from \"rxjs\";\r\nimport {concatMap, map, shareReplay, switchMap, take} from \"rxjs/operators\";\r\nimport {MissingTranslationHandler, MissingTranslationHandlerParams} from \"./missing-translation-handler\";\r\nimport {TranslateCompiler} from \"./translate.compiler\";\r\nimport {TranslateLoader} from \"./translate.loader\";\r\nimport {TranslateParser} from \"./translate.parser\";\r\n\r\nimport {TranslateStore} from \"./translate.store\";\r\nimport {isDefined, mergeDeep} from \"./util\";\r\n\r\nexport const USE_STORE = new InjectionToken<string>('USE_STORE');\r\nexport const USE_DEFAULT_LANG = new InjectionToken<string>('USE_DEFAULT_LANG');\r\nexport const DEFAULT_LANGUAGE = new InjectionToken<string>('DEFAULT_LANGUAGE');\r\nexport const USE_EXTEND = new InjectionToken<string>('USE_EXTEND');\r\n\r\nexport interface TranslationChangeEvent {\r\n translations: any;\r\n lang: string;\r\n}\r\n\r\nexport interface LangChangeEvent {\r\n lang: string;\r\n translations: any;\r\n}\r\n\r\nexport interface DefaultLangChangeEvent {\r\n lang: string;\r\n translations: any;\r\n}\r\n\r\ndeclare interface Window {\r\n navigator: any;\r\n}\r\n\r\ndeclare const window: Window;\r\n\r\n@Injectable()\r\nexport class TranslateService {\r\n private loadingTranslations!: Observable<any>;\r\n private pending: boolean = false;\r\n private _onTranslationChange: EventEmitter<TranslationChangeEvent> = new EventEmitter<TranslationChangeEvent>();\r\n private _onLangChange: EventEmitter<LangChangeEvent> = new EventEmitter<LangChangeEvent>();\r\n private _onDefaultLangChange: EventEmitter<DefaultLangChangeEvent> = new EventEmitter<DefaultLangChangeEvent>();\r\n private _defaultLang!: string;\r\n private _currentLang!: string;\r\n private _langs: Array<string> = [];\r\n private _translations: any = {};\r\n private _translationRequests: any = {};\r\n\r\n /**\r\n * An EventEmitter to listen to translation change events\r\n * onTranslationChange.subscribe((params: TranslationChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onTranslationChange(): EventEmitter<TranslationChangeEvent> {\r\n return this.isolate ? this._onTranslationChange : this.store.onTranslationChange;\r\n }\r\n\r\n /**\r\n * An EventEmitter to listen to lang change events\r\n * onLangChange.subscribe((params: LangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onLangChange(): EventEmitter<LangChangeEvent> {\r\n return this.isolate ? this._onLangChange : this.store.onLangChange;\r\n }\r\n\r\n /**\r\n * An EventEmitter to listen to default lang change events\r\n * onDefaultLangChange.subscribe((params: DefaultLangChangeEvent) => {\r\n * // do something\r\n * });\r\n */\r\n get onDefaultLangChange() {\r\n return this.isolate ? this._onDefaultLangChange : this.store.onDefaultLangChange;\r\n }\r\n\r\n /**\r\n * The default lang to fallback when translations are missing on the current lang\r\n */\r\n get defaultLang(): string {\r\n return this.isolate ? this._defaultLang : this.store.defaultLang;\r\n }\r\n\r\n set defaultLang(defaultLang: string) {\r\n if (this.isolate) {\r\n this._defaultLang = defaultLang;\r\n } else {\r\n this.store.defaultLang = defaultLang;\r\n }\r\n }\r\n\r\n /**\r\n * The lang currently used\r\n */\r\n get currentLang(): string {\r\n return this.isolate ? this._currentLang : this.store.currentLang;\r\n }\r\n\r\n set currentLang(currentLang: string) {\r\n if (this.isolate) {\r\n this._currentLang = currentLang;\r\n } else {\r\n this.store.currentLang = currentLang;\r\n }\r\n }\r\n\r\n /**\r\n * an array of langs\r\n */\r\n get langs(): string[] {\r\n return this.isolate ? this._langs : this.store.langs;\r\n }\r\n\r\n set langs(langs: string[]) {\r\n if (this.isolate) {\r\n this._langs = langs;\r\n } else {\r\n this.store.langs = langs;\r\n }\r\n }\r\n\r\n /**\r\n * a list of translations per lang\r\n */\r\n get translations(): any {\r\n return this.isolate ? this._translations : this.store.translations;\r\n }\r\n\r\n set translations(translations: any) {\r\n if (this.isolate) {\r\n this._translations = translations;\r\n } else {\r\n this.store.translations = translations;\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param store an instance of the store (that is supposed to be unique)\r\n * @param currentLoader An instance of the loader currently used\r\n * @param compiler An instance of the compiler currently used\r\n * @param parser An instance of the parser currently used\r\n * @param missingTranslationHandler A handler for missing translations.\r\n * @param useDefaultLang whether we should use default language translation when current language translation is missing.\r\n * @param isolate whether this service should use the store or not\r\n * @param extend To make a child module extend (and use) translations from parent modules.\r\n * @param defaultLanguage Set the default language using configuration\r\n */\r\n constructor(public store: TranslateStore,\r\n public currentLoader: TranslateLoader,\r\n public compiler: TranslateCompiler,\r\n public parser: TranslateParser,\r\n public missingTranslationHandler: MissingTranslationHandler,\r\n @Inject(USE_DEFAULT_LANG) private useDefaultLang: boolean = true,\r\n @Inject(USE_STORE) private isolate: boolean = false,\r\n @Inject(USE_EXTEND) private extend: boolean = false,\r\n @Inject(DEFAULT_LANGUAGE) defaultLanguage: string) {\r\n /** set the default language from configuration */\r\n if (defaultLanguage) {\r\n this.setDefaultLang(defaultLanguage);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the default language to use as a fallback\r\n */\r\n public setDefaultLang(lang: string): void {\r\n if (lang === this.defaultLang) {\r\n return;\r\n }\r\n\r\n let pending = this.retrieveTranslations(lang);\r\n\r\n if (typeof pending !== \"undefined\") {\r\n // on init set the defaultLang immediately\r\n if (this.defaultLang == null) {\r\n this.defaultLang = lang;\r\n }\r\n\r\n pending.pipe(take(1))\r\n .subscribe((res: any) => {\r\n this.changeDefaultLang(lang);\r\n });\r\n } else { // we already have this language\r\n this.changeDefaultLang(lang);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the default language used\r\n */\r\n public getDefaultLang(): string {\r\n return this.defaultLang;\r\n }\r\n\r\n /**\r\n * Changes the lang currently used\r\n */\r\n public use(lang: string): Observable<any> {\r\n // don't change the language if the language given is already selected\r\n if (lang === this.currentLang) {\r\n return of(this.translations[lang]);\r\n }\r\n\r\n let pending = this.retrieveTranslations(lang);\r\n\r\n if (typeof pending !== \"undefined\") {\r\n // on init set the currentLang immediately\r\n if (!this.currentLang) {\r\n this.currentLang = lang;\r\n }\r\n\r\n pending.pipe(take(1))\r\n .subscribe((res: any) => {\r\n this.changeLang(lang);\r\n });\r\n\r\n return pending;\r\n } else { // we have this language, return an Observable\r\n this.changeLang(lang);\r\n\r\n return of(this.translations[lang]);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the given translations\r\n */\r\n private retrieveTranslations(lang: string): Observable<any> | undefined {\r\n let pending: Observable<any> | undefined;\r\n\r\n // if this language is unavailable or extend is true, ask for it\r\n if (typeof this.translations[lang] === \"undefined\" || this.extend) {\r\n this._translationRequests[lang] = this._translationRequests[lang] || this.getTranslation(lang);\r\n pending = this._translationRequests[lang];\r\n }\r\n\r\n return pending;\r\n }\r\n\r\n /**\r\n * Gets an object of translations for a given language with the current loader\r\n * and passes it through the compiler\r\n */\r\n public getTranslation(lang: string): Observable<any> {\r\n this.pending = true;\r\n const loadingTranslations = this.currentLoader.getTranslation(lang).pipe(\r\n shareReplay(1),\r\n take(1),\r\n );\r\n\r\n this.loadingTranslations = loadingTranslations.pipe(\r\n map((res: Object) => this.compiler.compileTranslations(res, lang)),\r\n shareReplay(1),\r\n take(1),\r\n );\r\n\r\n this.loadingTranslations\r\n .subscribe({\r\n next: (res: Object) => {\r\n this.translations[lang] = this.extend && this.translations[lang] ? { ...res, ...this.translations[lang] } : res;\r\n this.updateLangs();\r\n this.pending = false;\r\n },\r\n error: (err: any) => {\r\n this.pending = false;\r\n }\r\n });\r\n\r\n return loadingTranslations;\r\n }\r\n\r\n /**\r\n * Manually sets an object of translations for a given language\r\n * after passing it through the compiler\r\n */\r\n public setTranslation(lang: string, translations: Object, shouldMerge: boolean = false): void {\r\n translations = this.compiler.compileTranslations(translations, lang);\r\n if ((shouldMerge || this.extend) && this.translations[lang]) {\r\n this.translations[lang] = mergeDeep(this.translations[lang], translations);\r\n } else {\r\n this.translations[lang] = translations;\r\n }\r\n this.updateLangs();\r\n this.onTranslationChange.emit({lang: lang, translations: this.translations[lang]});\r\n }\r\n\r\n /**\r\n * Returns an array of currently available langs\r\n */\r\n public getLangs(): Array<string> {\r\n return this.langs;\r\n }\r\n\r\n /**\r\n * Add available langs\r\n */\r\n public addLangs(langs: Array<string>): void {\r\n langs.forEach((lang: string) => {\r\n if (this.langs.indexOf(lang) === -1) {\r\n this.langs.push(lang);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update the list of available langs\r\n */\r\n private updateLangs(): void {\r\n this.addLangs(Object.keys(this.translations));\r\n }\r\n\r\n /**\r\n * Returns the parsed result of the translations\r\n */\r\n public getParsedResult(translations: any, key: any, interpolateParams?: Object): any {\r\n let res: string | Observable<string> | undefined;\r\n\r\n if (key instanceof Array) {\r\n let result: any = {},\r\n observables: boolean = false;\r\n for (let k of key) {\r\n result[k] = this.getParsedResult(translations, k, interpolateParams);\r\n if (isObservable(result[k])) {\r\n observables = true;\r\n }\r\n }\r\n if (observables) {\r\n const sources = key.map(k => isObservable(result[k]) ? result[k] : of(result[k] as string));\r\n return forkJoin(sources).pipe(\r\n map((arr: Array<string>) => {\r\n let obj: any = {};\r\n arr.forEach((value: string, index: number) => {\r\n obj[key[index]] = value;\r\n });\r\n return obj;\r\n })\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n if (translations) {\r\n res = this.parser.interpolate(this.parser.getValue(translations, key), interpolateParams);\r\n }\r\n\r\n if (typeof res === \"undefined\" && this.defaultLang != null && this.defaultLang !== this.currentLang && this.useDefaultLang) {\r\n res = this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang], key), interpolateParams);\r\n }\r\n\r\n if (typeof res === \"undefined\") {\r\n let params: MissingTranslationHandlerParams = {key, translateService: this};\r\n if (typeof interpolateParams !== 'undefined') {\r\n params.interpolateParams = interpolateParams;\r\n }\r\n res = this.missingTranslationHandler.handle(params);\r\n }\r\n\r\n return typeof res !== \"undefined\" ? res : key;\r\n }\r\n\r\n /**\r\n * Gets the translated value of a key (or an array of keys)\r\n * @returns the translated key, or an object of translated keys\r\n */\r\n public get(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n // check if we are loading a new translation to use\r\n if (this.pending) {\r\n return this.loadingTranslations.pipe(\r\n concatMap((res: any) => {\r\n res = this.getParsedResult(res, key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n }),\r\n );\r\n } else {\r\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a stream of translated values of a key (or an array of keys) which updates\r\n * whenever the translation changes.\r\n * @returns A stream of the translated key, or an object of translated keys\r\n */\r\n public getStreamOnTranslationChange(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n\r\n return concat(\r\n defer(() => this.get(key, interpolateParams)),\r\n this.onTranslationChange.pipe(\r\n switchMap((event: TranslationChangeEvent) => {\r\n const res = this.getParsedResult(event.translations, key, interpolateParams);\r\n if (typeof res.subscribe === 'function') {\r\n return res;\r\n } else {\r\n return of(res);\r\n }\r\n })\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Returns a stream of translated values of a key (or an array of keys) which updates\r\n * whenever the language changes.\r\n * @returns A stream of the translated key, or an object of translated keys\r\n */\r\n public stream(key: string | Array<string>, interpolateParams?: Object): Observable<string | any> {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n\r\n return concat(\r\n defer(() => this.get(key, interpolateParams)),\r\n this.onLangChange.pipe(\r\n switchMap((event: LangChangeEvent) => {\r\n const res = this.getParsedResult(event.translations, key, interpolateParams);\r\n return isObservable(res) ? res : of(res);\r\n })\r\n ));\r\n }\r\n\r\n /**\r\n * Returns a translation instantly from the internal state of loaded translation.\r\n * All rules regarding the current language, the preferred language of even fallback languages will be used except any promise handling.\r\n */\r\n public instant(key: string | Array<string>, interpolateParams?: Object): string | any {\r\n if (!isDefined(key) || !key.length) {\r\n throw new Error(`Parameter \"key\" required`);\r\n }\r\n\r\n let res = this.getParsedResult(this.translations[this.currentLang], key, interpolateParams);\r\n if (isObservable(res)) {\r\n if (key instanceof Array) {\r\n let obj: any = {};\r\n key.forEach((value: string, index: number) => {\r\n obj[key[index]] = key[index];\r\n });\r\n return obj;\r\n }\r\n return key;\r\n } else {\r\n return res;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the translated value of a key, after compiling it\r\n */\r\n public set(key: string, value: string, lang: string = this.currentLang): void {\r\n this.translations[lang][key] = this.compiler.compile(value, lang);\r\n this.updateLangs();\r\n this.onTranslationChange.emit({lang: lang, translations: this.translations[lang]});\r\n }\r\n\r\n /**\r\n * Changes the current lang\r\n */\r\n private changeLang(lang: string): void {\r\n this.currentLang = lang;\r\n this.onLangChange.emit({lang: lang, translations: this.translations[lang]});\r\n\r\n // if there is no default lang, use the one that we just set\r\n if (this.defaultLang == null) {\r\n this.changeDefaultLang(lang);\r\n }\r\n }\r\n\r\n /**\r\n * Changes the default lang\r\n */\r\n private changeDefaultLang(lang: string): void {\r\n this.defaultLang = lang;\r\n this.onDefaultLangChange.emit({lang: lang, translations: this.translations[lang]});\r\n }\r\n\r\n /**\r\n * Allows to reload the lang file from the file\r\n */\r\n public reloadLang(lang: string): Observable<any> {\r\n this.resetLang(lang);\r\n return this.getTranslation(lang);\r\n }\r\n\r\n /**\r\n * Deletes inner translation\r\n */\r\n public resetLang(lang: string): void {\r\n this._translationRequests[lang] = undefined;\r\n this.translations[lang] = undefined;\r\n }\r\n\r\n /**\r\n * Returns the language code name from the browser, e.g. \"de\"\r\n */\r\n public getBrowserLang(): string | undefined {\r\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n return undefined;\r\n }\r\n\r\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\r\n browserLang = browserLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\r\n\r\n if (typeof browserLang === 'undefined') {\r\n return undefined\r\n }\r\n\r\n if (browserLang.indexOf('-') !== -1) {\r\n browserLang = browserLang.split('-')[0];\r\n }\r\n\r\n if (browserLang.indexOf('_') !== -1) {\r\n browserLang = browserLang.split('_')[0];\r\n }\r\n\r\n return browserLang;\r\n }\r\n\r\n /**\r\n * Returns the culture language code name from the browser, e.g. \"de-DE\"\r\n */\r\n public getBrowserCultureLang(): string | undefined {\r\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n return undefined;\r\n }\r\n\r\n let browserCultureLang: any = window.navigator.languages ? window.navigator.languages[0] : null;\r\n browserCultureLang = browserCultureLang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;\r\n\r\n return browserCultureLang;\r\n }\r\n}\r\n","import {AfterViewChecked, ChangeDetectorRef, Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {Subscription, isObservable} from 'rxjs';\r\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslateService, TranslationChangeEvent} from './translate.service';\r\nimport {equals, isDefined} from './util';\r\n\r\n@Directive({\r\n selector: '[translate],[ngx-translate]'\r\n})\r\nexport class TranslateDirective implements AfterViewChecked, OnDestroy {\r\n key!: string;\r\n lastParams: any;\r\n currentParams: any;\r\n onLangChangeSub!: Subscription;\r\n onDefaultLangChangeSub!: Subscription;\r\n onTranslationChangeSub!: Subscription;\r\n\r\n @Input() set translate(key: string) {\r\n if (key) {\r\n this.key = key;\r\n this.checkNodes();\r\n }\r\n }\r\n\r\n @Input() set translateParams(params: any) {\r\n if (!equals(this.currentParams, params)) {\r\n this.currentParams = params;\r\n this.checkNodes(true);\r\n }\r\n }\r\n\r\n constructor(private translateService: TranslateService, private element: ElementRef, private _ref: ChangeDetectorRef) {\r\n // subscribe to onTranslationChange event, in case the translations of the current lang change\r\n if (!this.onTranslationChangeSub) {\r\n this.onTranslationChangeSub = this.translateService.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\r\n if (event.lang === this.translateService.currentLang) {\r\n this.checkNodes(true, event.translations);\r\n }\r\n });\r\n }\r\n\r\n // subscribe to onLangChange event, in case the language changes\r\n if (!this.onLangChangeSub) {\r\n this.onLangChangeSub = this.translateService.onLangChange.subscribe((event: LangChangeEvent) => {\r\n this.checkNodes(true, event.translations);\r\n });\r\n }\r\n\r\n // subscribe to onDefaultLangChange event, in case the default language changes\r\n if (!this.onDefaultLangChangeSub) {\r\n this.onDefaultLangChangeSub = this.translateService.onDefaultLangChange.subscribe((event: DefaultLangChangeEvent) => {\r\n this.checkNodes(true);\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.checkNodes();\r\n }\r\n\r\n checkNodes(forceUpdate = false, translations?: any) {\r\n let nodes: NodeList = this.element.nativeElement.childNodes;\r\n // if the element is empty\r\n if (!nodes.length) {\r\n // we add the key as content\r\n this.setContent(this.element.nativeElement, this.key);\r\n nodes = this.element.nativeElement.childNodes;\r\n }\r\n for (let i = 0; i < nodes.length; ++i) {\r\n let node: any = nodes[i];\r\n if (node.nodeType === 3) { // node type 3 is a text node\r\n let key!: string;\r\n if (forceUpdate) {\r\n node.lastKey = null;\r\n }\r\n if(isDefined(node.lookupKey)) {\r\n key = node.lookupKey;\r\n } else if (this.key) {\r\n key = this.key;\r\n } else {\r\n let content = this.getContent(node);\r\n let trimmedContent = content.trim();\r\n if (trimmedContent.length) {\r\n node.lookupKey = trimmedContent;\r\n // we want to use the content as a key, not the translation value\r\n if (content !== node.currentValue) {\r\n key = trimmedContent;\r\n // the content was changed from the user, we'll use it as a reference if needed\r\n node.originalContent = content || node.originalContent;\r\n } else if (node.originalContent) { // the content seems ok, but the lang has changed\r\n // the current content is the translation, not the key, use the last real content as key\r\n key = node.originalContent.trim();\r\n } else if (content !== node.currentValue) {\r\n // we want to use the content as a key, not the translation value\r\n key = trimmedContent;\r\n // the content was changed from the user, we'll use it as a reference if needed\r\n node.originalContent = content || node.originalContent;\r\n }\r\n }\r\n }\r\n this.updateValue(key, node, translations);\r\n }\r\n }\r\n }\r\n\r\n updateValue(key: string, node: any, translations: any) {\r\n if (key) {\r\n if (node.lastKey === key && this.lastParams === this.currentParams) {\r\n return;\r\n }\r\n\r\n this.lastParams = this.currentParams;\r\n\r\n let onTranslation = (res: unknown) => {\r\n if (res !== key) {\r\n node.lastKey = key;\r\n }\r\n if (!node.originalContent) {\r\n node.originalContent = this.getContent(node);\r\n }\r\n node.currentValue = isDefined(res) ? res : (node.originalContent || key);\r\n // we replace in the original content to preserve spaces that we might have trimmed\r\n this.setContent(node, this.key ? node.currentValue : node.originalContent.replace(key, node.currentValue));\r\n this._ref.markForCheck();\r\n };\r\n\r\n if (isDefined(translations)) {\r\n let res = this.translateService.getParsedResult(translations, key, this.currentParams);\r\n if (isObservable(res)) {\r\n res.subscribe({next: onTranslation});\r\n } else {\r\n onTranslation(res);\r\n }\r\n } else {\r\n this.translateService.get(key, this.currentParams).subscribe(onTranslation);\r\n }\r\n }\r\n }\r\n\r\n getContent(node: any): string {\r\n return isDefined(node.textContent) ? node.textContent : node.data;\r\n }\r\n\r\n setContent(node: any, content: string): void {\r\n if (isDefined(node.textContent)) {\r\n node.textContent = content;\r\n } else {\r\n node.data = content;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.onLangChangeSub) {\r\n this.onLangChangeSub.unsubscribe();\r\n }\r\n\r\n if (this.onDefaultLangChangeSub) {\r\n this.onDefaultLangChangeSub.unsubscribe();\r\n }\r\n\r\n if (this.onTranslationChangeSub) {\r\n this.onTranslationChangeSub.unsubscribe();\r\n }\r\n }\r\n}\r\n","import {ChangeDetectorRef, EventEmitter, Injectable, OnDestroy, Pipe, PipeTransform} from '@angular/core';\r\nimport {isObservable} from 'rxjs';\r\nimport {DefaultLangChangeEvent, LangChangeEvent, TranslateService, TranslationChangeEvent} from './translate.service';\r\nimport {equals, isDefined} from './util';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'translate',\r\n pure: false // required to update the value when the promise is resolved\r\n})\r\nexport class TranslatePipe implements PipeTransform, OnDestroy {\r\n value: string = '';\r\n lastKey: string | null = null;\r\n lastParams: any[] = [];\r\n onTranslationChange: Subscription | undefined;\r\n onLangChange: Subscription | undefined;\r\n onDefaultLangChange: Subscription | undefined;\r\n\r\n constructor(private translate: TranslateService, private _ref: ChangeDetectorRef) {\r\n }\r\n\r\n updateValue(key: string, interpolateParams?: Object, translations?: any): void {\r\n let onTranslation = (res: string) => {\r\n this.value = res !== undefined ? res : key;\r\n this.lastKey = key;\r\n this._ref.markForCheck();\r\n };\r\n if (translations) {\r\n let res = this.translate.getParsedResult(translations, key, interpolateParams);\r\n if (isObservable(res.subscribe)) {\r\n res.subscribe(onTranslation);\r\n } else {\r\n onTranslation(res);\r\n }\r\n }\r\n this.translate.get(key, interpolateParams).subscribe(onTranslation);\r\n }\r\n\r\n transform(query: string, ...args: any[]): any {\r\n if (!query || !query.length) {\r\n return query;\r\n }\r\n\r\n // if we ask another time for the same key, return the last value\r\n if (equals(query, this.lastKey) && equals(args, this.lastParams)) {\r\n return this.value;\r\n }\r\n\r\n let interpolateParams: Object | undefined = undefined;\r\n if (isDefined(args[0]) && args.length) {\r\n if (typeof args[0] === 'string' && args[0].length) {\r\n // we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\r\n // which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\r\n let validArgs: string = args[0]\r\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\r\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\r\n try {\r\n interpolateParams = JSON.parse(validArgs);\r\n } catch (e) {\r\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\r\n }\r\n } else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\r\n interpolateParams = args[0];\r\n }\r\n }\r\n\r\n // store the query, in case it changes\r\n this.lastKey = query;\r\n\r\n // store the params, in case they change\r\n this.lastParams = args;\r\n\r\n // set the value\r\n this.updateValue(query, interpolateParams);\r\n\r\n // if there is a subscription to onLangChange, clean it\r\n this._dispose();\r\n\r\n // subscribe to onTranslationChange event, in case the translations change\r\n if (!this.onTranslationChange) {\r\n this.onTranslationChange = this.translate.onTranslationChange.subscribe((event: TranslationChangeEvent) => {\r\n if (this.lastKey && event.lang === this.translate.currentLang) {\r\n this.lastKey = null;\r\n this.updateValue(query, interpolateParams, event.translations);\r\n }\r\n });\r\n }\r\n\r\n // subscribe to onLangChange event, in case the language changes\r\n if (!this.onLangChange) {\r\n this.onLangChange = this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n if (this.lastKey) {\r\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\r\n this.updateValue(query, interpolateParams, event.translations);\r\n }\r\n });\r\n }\r\n\r\n // subscribe to onDefaultLangChange event, in case the default language changes\r\n if (!this.onDefaultLangChange) {\r\n this.onDefaultLangChange = this.translate.onDefaultLangChange.subscribe(() => {\r\n if (this.lastKey) {\r\n this.lastKey = null; // we want to make sure it doesn't return the same value until it's been updated\r\n this.updateValue(query, interpolateParams);\r\n }\r\n });\r\n }\r\n\r\n return this.value;\r\n }\r\n\r\n /**\r\n * Clean any existing subscription to change events\r\n */\r\n private _dispose(): void {\r\n if (typeof this.onTranslationChange !== 'undefined') {\r\n this.onTranslationChange.unsubscribe();\r\n this.onTranslationChange = undefined;\r\n }\r\n if (typeof this.onLangChange !== 'undefined') {\r\n this.onLangChange.unsubscribe();\r\n this.onLangChange = undefined;\r\n }\r\n if (typeof this.onDefaultLangChange !== 'undefined') {\r\n this.onDefaultLangChange.unsubscribe();\r\n this.onDefaultLangChange = undefined;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._dispose();\r\n }\r\n}\r\n","import {NgModule, ModuleWithProviders, Provider} from \"@angular/core\";\r\nimport {TranslateLoader, TranslateFakeLoader} from \"./lib/translate.loader\";\r\nimport {MissingTranslationHandler, FakeMissingTranslationHandler} from \"./lib/missing-translation-handler\";\r\nimport {TranslateParser, TranslateDefaultParser} from \"./lib/translate.parser\";\r\nimport {TranslateCompiler, TranslateFakeCompiler} from \"./lib/translate.compiler\";\r\nimport {TranslateDirective} from \"./lib/translate.directive\";\r\nimport {TranslatePipe} from \"./lib/translate.pipe\";\r\nimport {TranslateStore} from \"./lib/translate.store\";\r\nimport {USE_DEFAULT_LANG, DEFAULT_LANGUAGE, USE_STORE, TranslateService, USE_EXTEND} from \"./lib/translate.service\";\r\n\r\nexport * from \"./lib/translate.loader\";\r\nexport * from \"./lib/translate.service\";\r\nexport * from \"./lib/missing-translation-handler\";\r\nexport * from \"./lib/translate.parser\";\r\nexport * from \"./lib/translate.compiler\";\r\nexport * from \"./lib/translate.directive\";\r\nexport * from \"./lib/translate.pipe\";\r\nexport * from \"./lib/translate.store\";\r\n\r\nexport interface TranslateModuleConfig {\r\n loader?: Provider;\r\n compiler?: Provider;\r\n parser?: Provider;\r\n missingTranslationHandler?: Provider;\r\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\r\n isolate?: boolean;\r\n // extends translations for a given language instead of ignoring them if present\r\n extend?: boolean;\r\n useDefaultLang?: boolean;\r\n defaultLanguage?: string;\r\n}\r\n\r\n@NgModule({\r\n declarations: [\r\n TranslatePipe,\r\n TranslateDirective\r\n ],\r\n exports: [\r\n TranslatePipe,\r\n TranslateDirective\r\n ]\r\n})\r\nexport class TranslateModule {\r\n /**\r\n * Use this method in your root module to provide the TranslateService\r\n */\r\n static forRoot(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {\r\n return {\r\n ngModule: TranslateModule,\r\n providers: [\r\n config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},\r\n config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},\r\n config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},\r\n config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},\r\n TranslateStore,\r\n {provide: USE_STORE, useValue: config.isolate},\r\n {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},\r\n {provide: USE_EXTEND, useValue: config.extend},\r\n {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},\r\n TranslateService\r\n ]\r\n };\r\n }\r\n\r\n /**\r\n * Use this method in your other (non root) modules to import the directive/pipe\r\n */\r\n static forChild(config: TranslateModuleConfig = {}): ModuleWithProviders<TranslateModule> {\r\n return {\r\n ngModule: TranslateModule,\r\n providers: [\r\n config.loader || {provide: TranslateLoader, useClass: TranslateFakeLoader},\r\n config.compiler || {provide: TranslateCompiler, useClass: TranslateFakeCompiler},\r\n config.parser || {provide: TranslateParser, useClass: TranslateDefaultParser},\r\n config.missingTranslationHandler || {provide: MissingTranslationHandler, useClass: FakeMissingTranslationHandler},\r\n {provide: USE_STORE, useValue: config.isolate},\r\n {provide: USE_DEFAULT_LANG, useValue: config.useDefaultLang},\r\n {provide: USE_EXTEND, useValue: config.extend},\r\n {provide: DEFAULT_LANGUAGE, useValue: config.defaultLanguage},\r\n TranslateService\r\n ]\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TranslateService"],"mappings":";;;;;MAGsB,eAAe,CAAA;AAEpC,CAAA;AAED;;AAEG;AACH,MACa,mBAAoB,SAAQ,eAAe,CAAA;AACtD,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACf;uGAHU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCUW,yBAAyB,CAAA;AAW9C,CAAA;AAED;;AAEG;AACH,MACa,6BAA6B,CAAA;AACxC,IAAA,MAAM,CAAC,MAAuC,EAAA;QAC5C,OAAO,MAAM,CAAC,GAAG,CAAC;KACnB;uGAHU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;;;ACpCX;AACA;;;;;;;;;;;;AAYG;AACa,SAAA,MAAM,CAAC,EAAO,EAAE,EAAO,EAAA;IACrC,IAAI,EAAE,KAAK,EAAE;AAAE,QAAA,OAAO,IAAI,CAAC;AAC3B,IAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK,CAAC;AAC7C,IAAA,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;AACxC,IAAA,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,MAAc,EAAE,GAAQ,EAAE,MAAW,CAAC;AAC1E,IAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE;AAC9B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE;gBACrC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE;AACjC,oBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAAE,wBAAA,OAAO,KAAK,CAAC;AAC7C,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACrB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACD,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,KAAK,GAAG,IAAI,EAAE,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7B,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACD,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,aAAA;YACD,KAAK,GAAG,IAAI,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;AACtD,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AACD;AAEM,SAAU,SAAS,CAAC,KAAU,EAAA;IAClC,OAAO,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC;AACxD,CAAC;AAEK,SAAU,QAAQ,CAAC,IAAS,EAAA;AAChC,IAAA,QAAQ,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACpE,CAAC;AAEe,SAAA,SAAS,CAAC,MAAW,EAAE,MAAW,EAAA;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAQ,KAAI;AACvC,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AACzB,gBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE;AACpB,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;AAC7C,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;AAC7C,aAAA;AACH,SAAC,CAAC,CAAC;AACJ,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAChB;;MCxEsB,eAAe,CAAA;AAgBpC,CAAA;AAED,MACa,sBAAuB,SAAQ,eAAe,CAAA;IACzD,eAAe,GAAW,uBAAuB,CAAC;IAE3C,WAAW,CAAC,IAAuB,EAAE,MAAY,EAAA;AACtD,QAAA,IAAI,MAAc,CAAC;AAEnB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;YACrC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;;YAEL,MAAM,GAAG,IAAc,CAAC;AACzB,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAED,QAAQ,CAAC,MAAW,EAAE,GAAW,EAAA;QAC/B,IAAI,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5D,GAAG,GAAG,EAAE,CAAC;QACT,GAAG;AACD,YAAA,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpG,gBAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,GAAG,GAAG,EAAE,CAAC;AACV,aAAA;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACvB,MAAM,GAAG,SAAS,CAAC;AACpB,aAAA;AAAM,iBAAA;gBACL,GAAG,IAAI,GAAG,CAAC;AACZ,aAAA;SACF,QAAQ,IAAI,CAAC,MAAM,EAAE;AAEtB,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,mBAAmB,CAAC,EAAY,EAAE,MAAY,EAAA;AACpD,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;KACnB;IAEO,iBAAiB,CAAC,IAAY,EAAE,MAAY,EAAA;QAClD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,SAAiB,EAAE,CAAS,KAAI;YACzE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,YAAA,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;uGAjDU,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;MCnBW,iBAAiB,CAAA;AAItC,CAAA;AAED;;AAEG;AACH,MACa,qBAAsB,SAAQ,iBAAiB,CAAA;IAC1D,OAAO,CAAC,KAAa,EAAE,IAAY,EAAA;AACjC,QAAA,OAAO,KAAK,CAAC;KACd;IAED,mBAAmB,CAAC,YAAiB,EAAE,IAAY,EAAA;AACjD,QAAA,OAAO,YAAY,CAAC;KACrB;uGAPU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MCRE,cAAc,CAAA;AACzB;;AAEG;AACI,IAAA,WAAW,CAAU;AAE5B;;AAEG;AACI,IAAA,WAAW,GAAW,IAAI,CAAC,WAAW,CAAC;AAE9C;;AAEG;IACI,YAAY,GAAQ,EAAE,CAAC;AAE9B;;AAEG;IACI,KAAK,GAAkB,EAAE,CAAC;AAEjC;;;;;AAKG;AACI,IAAA,mBAAmB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAE9G;;;;;AAKG;AACI,IAAA,YAAY,GAAkC,IAAI,YAAY,EAAmB,CAAC;AAEzF;;;;;AAKG;AACI,IAAA,mBAAmB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAC/G;;MCpCY,SAAS,GAAG,IAAI,cAAc,CAAS,WAAW,EAAE;MACpD,gBAAgB,GAAG,IAAI,cAAc,CAAS,kBAAkB,EAAE;MAClE,gBAAgB,GAAG,IAAI,cAAc,CAAS,kBAAkB,EAAE;MAClE,UAAU,GAAG,IAAI,cAAc,CAAS,YAAY,EAAE;AAuBnE,MACa,gBAAgB,CAAA;AAkHR,IAAA,KAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,yBAAA,CAAA;AAC2B,IAAA,cAAA,CAAA;AACP,IAAA,OAAA,CAAA;AACC,IAAA,MAAA,CAAA;AAxHhC,IAAA,mBAAmB,CAAmB;IACtC,OAAO,GAAY,KAAK,CAAC;AACzB,IAAA,oBAAoB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AACxG,IAAA,aAAa,GAAkC,IAAI,YAAY,EAAmB,CAAC;AACnF,IAAA,oBAAoB,GAAyC,IAAI,YAAY,EAA0B,CAAC;AACxG,IAAA,YAAY,CAAU;AACtB,IAAA,YAAY,CAAU;IACtB,MAAM,GAAkB,EAAE,CAAC;IAC3B,aAAa,GAAQ,EAAE,CAAC;IACxB,oBAAoB,GAAQ,EAAE,CAAC;AAEvC;;;;;AAKG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;KAClF;AAED;;;;;AAKG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;KACpE;AAED;;;;;AAKG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;KAClF;AAED;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAClE;IAED,IAAI,WAAW,CAAC,WAAmB,EAAA;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KAClE;IAED,IAAI,WAAW,CAAC,WAAmB,EAAA;QACjC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KACtD;IAED,IAAI,KAAK,CAAC,KAAe,EAAA;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;KACpE;IAED,IAAI,YAAY,CAAC,YAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AACnC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AACxC,SAAA;KACF;AAED;;;;;;;;;;;AAWG;AACH,IAAA,WAAA,CAAmB,KAAqB,EACrB,aAA8B,EAC9B,QAA2B,EAC3B,MAAuB,EACvB,yBAAoD,EACzB,cAA0B,GAAA,IAAI,EACrC,OAAmB,GAAA,KAAK,EACvB,MAAkB,GAAA,KAAK,EACzB,eAAuB,EAAA;QAR1C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QACvB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA2B;QACzB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACrC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QACvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;;AAG7D,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AACtC,SAAA;KACF;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC7B,OAAO;AACR,SAAA;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAE9C,QAAA,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;;AAElC,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,iBAAA,SAAS,CAAC,CAAC,GAAQ,KAAI;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;KACF;AAED;;AAEG;IACI,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED;;AAEG;AACI,IAAA,GAAG,CAAC,IAAY,EAAA;;AAErB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC7B,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,SAAA;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAE9C,QAAA,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;;AAElC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AAED,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,iBAAA,SAAS,CAAC,CAAC,GAAQ,KAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AAEL,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEtB,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,SAAA;KACF;AAED;;AAEG;AACK,IAAA,oBAAoB,CAAC,IAAY,EAAA;AACvC,QAAA,IAAI,OAAoC,CAAC;;AAGzC,QAAA,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE;AACjE,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/F,YAAA,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CACtE,WAAW,CAAC,CAAC,CAAC,EACd,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,GAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAClE,WAAW,CAAC,CAAC,CAAC,EACd,IAAI,CAAC,CAAC,CAAC,CACR,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB;AACrB,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAW,KAAI;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;gBAChH,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACtB;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,OAAO,mBAAmB,CAAC;KAC5B;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,IAAY,EAAE,YAAoB,EAAE,cAAuB,KAAK,EAAA;QACpF,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5E,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;KACpF;AAED;;AAEG;IACI,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED;;AAEG;AACI,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAClC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAY,KAAI;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;KAC/C;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,YAAiB,EAAE,GAAQ,EAAE,iBAA0B,EAAA;AAC5E,QAAA,IAAI,GAA4C,CAAC;QAEjD,IAAI,GAAG,YAAY,KAAK,EAAE;AACxB,YAAA,IAAI,MAAM,GAAQ,EAAE,EAClB,WAAW,GAAY,KAAK,CAAC;AAC/B,YAAA,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;AACjB,gBAAA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACrE,gBAAA,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC3B,WAAW,GAAG,IAAI,CAAC;AACpB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;AAC5F,gBAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,GAAG,CAAC,CAAC,GAAkB,KAAI;oBACzB,IAAI,GAAG,GAAQ,EAAE,CAAC;oBAClB,GAAG,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,KAAa,KAAI;wBAC3C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1B,qBAAC,CAAC,CAAC;AACH,oBAAA,OAAO,GAAG,CAAC;iBACZ,CAAC,CACH,CAAC;AACH,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;YAChB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC3F,SAAA;QAED,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;YAC1H,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAClH,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;YAC9B,IAAI,MAAM,GAAoC,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;AAC5E,YAAA,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;AAC5C,gBAAA,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC9C,aAAA;YACD,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,OAAO,OAAO,GAAG,KAAK,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC;KAC/C;AAED;;;AAGG;IACI,GAAG,CAAC,GAA2B,EAAE,iBAA0B,EAAA;QAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC,CAAC;AAC7C,SAAA;;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,GAAQ,KAAI;gBACrB,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AACxD,gBAAA,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;aAC1C,CAAC,CACH,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC5F,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1C,SAAA;KACF;AAED;;;;AAIG;IACI,4BAA4B,CAAC,GAA2B,EAAE,iBAA0B,EAAA;QACzF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,OAAO,MAAM,CACX,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,SAAS,CAAC,CAAC,KAA6B,KAAI;AAC1C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC7E,YAAA,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;AACvC,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,aAAA;SACF,CAAC,CACH,CACF,CAAC;KACH;AAED;;;;AAIG;IACI,MAAM,CAAC,GAA2B,EAAE,iBAA0B,EAAA;QACnE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,OAAO,MAAM,CACX,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,SAAS,CAAC,CAAC,KAAsB,KAAI;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC7E,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;SAC1C,CAAC,CACH,CAAC,CAAC;KACN;AAED;;;AAGG;IACI,OAAO,CAAC,GAA2B,EAAE,iBAA0B,EAAA;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC5F,QAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,IAAI,GAAG,YAAY,KAAK,EAAE;gBACxB,IAAI,GAAG,GAAQ,EAAE,CAAC;gBAClB,GAAG,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,KAAa,KAAI;oBAC3C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,GAAG,CAAC;AACZ,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;KACF;AAED;;AAEG;IACI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,IAAe,GAAA,IAAI,CAAC,WAAW,EAAA;AACpE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;KACpF;AAED;;AAEG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;;AAG5E,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;KACF;AAED;;AAEG;AACK,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;KACpF;AAED;;AAEG;AACI,IAAA,UAAU,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAClC;AAED;;AAEG;AACI,IAAA,SAAS,CAAC,IAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;KACrC;AAED;;AAEG;IACI,cAAc,GAAA;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AAC5E,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,IAAI,WAAW,GAAQ,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACzF,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;AAE5H,QAAA,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AACtC,YAAA,OAAO,SAAS,CAAA;AACjB,SAAA;QAED,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;AAEG;IACI,qBAAqB,GAAA;QAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE;AAC5E,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;QAED,IAAI,kBAAkB,GAAQ,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAChG,kBAAkB,GAAG,kBAAkB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;AAE1I,QAAA,OAAO,kBAAkB,CAAC;KAC3B;AAtfU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,yKAuHP,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAChB,SAAS,EACT,EAAA,EAAA,KAAA,EAAA,UAAU,aACV,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GA1HzB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;0BAwHI,MAAM;2BAAC,gBAAgB,CAAA;;0BACvB,MAAM;2BAAC,SAAS,CAAA;;0BAChB,MAAM;2BAAC,UAAU,CAAA;;0BACjB,MAAM;2BAAC,gBAAgB,CAAA;;;AC3JtC,MAGa,kBAAkB,CAAA;AAsBT,IAAA,gBAAA,CAAA;AAA4C,IAAA,OAAA,CAAA;AAA6B,IAAA,IAAA,CAAA;AArB7F,IAAA,GAAG,CAAU;AACb,IAAA,UAAU,CAAM;AAChB,IAAA,aAAa,CAAM;AACnB,IAAA,eAAe,CAAgB;AAC/B,IAAA,sBAAsB,CAAgB;AACtC,IAAA,sBAAsB,CAAgB;IAEtC,IAAa,SAAS,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAED,IAAa,eAAe,CAAC,MAAW,EAAA;QACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACF;AAED,IAAA,WAAA,CAAoB,gBAAkC,EAAU,OAAmB,EAAU,IAAuB,EAAA;QAAhG,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmB;;AAElH,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAA6B,KAAI;gBAClH,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;oBACpD,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAC3C,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAsB,KAAI;gBAC7F,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAA6B,KAAI;AAClH,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,UAAU,CAAC,WAAW,GAAG,KAAK,EAAE,YAAkB,EAAA;QAChD,IAAI,KAAK,GAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;;AAE5D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;AAEjB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;AAC/C,SAAA;AACD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACrC,YAAA,IAAI,IAAI,GAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AACvB,gBAAA,IAAI,GAAY,CAAC;AACjB,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,iBAAA;AACD,gBAAA,IAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC5B,oBAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACtB,iBAAA;qBAAM,IAAI,IAAI,CAAC,GAAG,EAAE;AACnB,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAChB,iBAAA;AAAM,qBAAA;oBACL,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,oBAAA,IAAI,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;oBACpC,IAAI,cAAc,CAAC,MAAM,EAAE;AACzB,wBAAA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;;AAEhC,wBAAA,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;4BACjC,GAAG,GAAG,cAAc,CAAC;;4BAErB,IAAI,CAAC,eAAe,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;AACxD,yBAAA;AAAM,6BAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;AAE/B,4BAAA,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AACnC,yBAAA;AAAM,6BAAA,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;;4BAExC,GAAG,GAAG,cAAc,CAAC;;4BAErB,IAAI,CAAC,eAAe,GAAG,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC;AACxD,yBAAA;AACF,qBAAA;AACF,iBAAA;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,GAAW,EAAE,IAAS,EAAE,YAAiB,EAAA;AACnD,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,EAAE;gBAClE,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;AAErC,YAAA,IAAI,aAAa,GAAG,CAAC,GAAY,KAAI;gBACnC,IAAI,GAAG,KAAK,GAAG,EAAE;AACf,oBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACpB,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAA;gBACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC;;AAEzE,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3G,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3B,aAAC,CAAC;AAEF,YAAA,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;AAC3B,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACvF,gBAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;oBACrB,GAAG,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,aAAa,EAAC,CAAC,CAAC;AACtC,iBAAA;AAAM,qBAAA;oBACL,aAAa,CAAC,GAAG,CAAC,CAAC;AACpB,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC7E,aAAA;AACF,SAAA;KACF;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;KACnE;IAED,UAAU,CAAC,IAAS,EAAE,OAAe,EAAA;AACnC,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC5B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AACrB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACpC,SAAA;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC3C,SAAA;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC3C,SAAA;KACF;uGA1JU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACxC,iBAAA,CAAA;6JASc,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAOO,eAAe,EAAA,CAAA;sBAA3B,KAAK;;;ACjBR,MAKa,aAAa,CAAA;AAQJ,IAAA,SAAA,CAAA;AAAqC,IAAA,IAAA,CAAA;IAPzD,KAAK,GAAW,EAAE,CAAC;IACnB,OAAO,GAAkB,IAAI,CAAC;IAC9B,UAAU,GAAU,EAAE,CAAC;AACvB,IAAA,mBAAmB,CAA2B;AAC9C,IAAA,YAAY,CAA2B;AACvC,IAAA,mBAAmB,CAA2B;IAE9C,WAAoB,CAAA,SAA2B,EAAU,IAAuB,EAAA;QAA5D,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAAU,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAmB;KAC/E;AAED,IAAA,WAAW,CAAC,GAAW,EAAE,iBAA0B,EAAE,YAAkB,EAAA;AACrE,QAAA,IAAI,aAAa,GAAG,CAAC,GAAW,KAAI;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3C,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3B,SAAC,CAAC;AACF,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;AAC/E,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC/B,gBAAA,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;gBACL,aAAa,CAAC,GAAG,CAAC,CAAC;AACpB,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;KACrE;AAED,IAAA,SAAS,CAAC,KAAa,EAAE,GAAG,IAAW,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;;AAGD,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAChE,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;QAED,IAAI,iBAAiB,GAAuB,SAAS,CAAC;QACtD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACrC,YAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;;;AAGjD,gBAAA,IAAI,SAAS,GAAW,IAAI,CAAC,CAAC,CAAC;AAC5B,qBAAA,OAAO,CAAC,kCAAkC,EAAE,OAAO,CAAC;AACpD,qBAAA,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBAC5C,IAAI;AACF,oBAAA,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3C,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;oBACV,MAAM,IAAI,WAAW,CAAC,CAAwE,qEAAA,EAAA,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC,CAAC;AAC1G,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE,gBAAA,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;AAGrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;;AAGvB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;;QAG3C,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAGhB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAA6B,KAAI;AACxG,gBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAC7D,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAChE,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAsB,KAAI;gBACnF,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAChE,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAK;gBAC3E,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC5C,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED;;AAEG;IACK,QAAQ,GAAA;AACd,QAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACtC,SAAA;AACD,QAAA,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,EAAE;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACtC,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;uGAzHU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAb,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;2GAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,UAAU;;kBACV,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;ACsBD,MAUa,eAAe,CAAA;AAC1B;;AAEG;AACH,IAAA,OAAO,OAAO,CAAC,MAAA,GAAgC,EAAE,EAAA;QAC/C,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;gBACT,MAAM,CAAC,MAAM,IAAI,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAC;gBAC1E,MAAM,CAAC,QAAQ,IAAI,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,EAAC;gBAChF,MAAM,CAAC,MAAM,IAAI,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAC;gBAC7E,MAAM,CAAC,yBAAyB,IAAI,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,6BAA6B,EAAC;gBACjH,cAAc;gBACd,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAC;gBAC9C,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAC;gBAC5D,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAC;gBAC9C,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAC;gBAC7D,gBAAgB;AACjB,aAAA;SACF,CAAC;KACH;AAED;;AAEG;AACH,IAAA,OAAO,QAAQ,CAAC,MAAA,GAAgC,EAAE,EAAA;QAChD,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;gBACT,MAAM,CAAC,MAAM,IAAI,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAC;gBAC1E,MAAM,CAAC,QAAQ,IAAI,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,qBAAqB,EAAC;gBAChF,MAAM,CAAC,MAAM,IAAI,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAC;gBAC7E,MAAM,CAAC,yBAAyB,IAAI,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,6BAA6B,EAAC;gBACjH,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAC;gBAC9C,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAC;gBAC5D,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAC;gBAC9C,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAC;gBAC7D,gBAAgB;AACjB,aAAA;SACF,CAAC;KACH;uGAxCU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBARxB,aAAa;AACb,YAAA,kBAAkB,aAGlB,aAAa;YACb,kBAAkB,CAAA,EAAA,CAAA,CAAA;wGAGT,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,aAAa;wBACb,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,kBAAkB;AACnB,qBAAA;AACF,iBAAA,CAAA;;;ACzCD;;AAEG;;;;"}
\No newline at end of file