UNPKG

34.7 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-bootstrap-utils.umd.js","sources":["../../../../src/utils/trigger.class.ts","../../../../src/utils/triggers.ts","../../../../src/utils/facade/browser.ts","../../../../src/utils/theme-provider.ts","../../../../src/utils/linked-list.class.ts","../../../../src/utils/decorators.ts","../../../../src/utils/utils.class.ts","../../../../src/utils/warn-once.ts","../../../../src/utils/ngx-bootstrap-utils.ts"],"sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n outsideEsc?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function parseTriggers(triggers?: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): () => void {\n const parsedTriggers = parseTriggers(triggers);\n const listeners: Array<() => void> = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype as () => void;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(renderer.listen(target, trigger.open, showFn));\n if (trigger.close) {\n listeners.push(renderer.listen(target, trigger.close, hideFn));\n }\n });\n\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): () => void {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype as () => void;\n }\n\n // all listeners\n const listeners: Array<() => void> = [];\n\n // lazy listeners registration\n const _registerHide: Array<() => () => void> = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle && trigger.close && options.hide) {\n const _hide = renderer.listen(target, trigger.close, options.hide);\n _registerHide.push(() => _hide);\n }\n\n if (showFn) {\n listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n }\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: () => void) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return;\n }\n\n if (options.hide) {\n options.hide();\n }\n });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n\n return renderer.listen('document', 'keyup.esc', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return;\n }\n\n if (options.hide) {\n options.hide();\n }\n });\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nexport type AvailableBsVersions = 'bs3' | 'bs4' | 'bs5';\n\ninterface IObjectKeys {\n [key: string]: boolean;\n}\n\nexport interface IBsVersion extends IObjectKeys{\n isBs3: boolean;\n isBs4: boolean;\n isBs5: boolean;\n}\n\nexport enum BsVerions {\n isBs3 = 'bs3',\n isBs4 = 'bs4',\n isBs5 = 'bs5'\n}\n\nlet guessedVersion: AvailableBsVersions;\n\nfunction _guessBsVersion(): AvailableBsVersions {\n if (typeof window.document === 'undefined') {\n return 'bs4';\n }\n const spanEl = window.document.createElement('span');\n spanEl.innerText = 'testing bs version';\n spanEl.classList.add('d-none');\n spanEl.classList.add('visually-hidden');\n window.document.head.appendChild(spanEl);\n const rect = spanEl.getBoundingClientRect();\n const overflowStyle = window.getComputedStyle(spanEl).overflow;\n window.document.head.removeChild(spanEl);\n if (!rect || (rect && rect.top !== 0)) {\n return 'bs3';\n }\n if (overflowStyle && overflowStyle === 'hidden') {\n return 'bs5';\n }\n return 'bs4';\n}\n\nexport function setTheme(theme: AvailableBsVersions): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme === 'bs3';\n}\n\nexport function isBs4(): boolean {\n if (isBs3()) return false;\n\n if (guessedVersion) return guessedVersion === 'bs4';\n\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\n\nexport function isBs5(): boolean {\n if (isBs3() || isBs4()) return false;\n\n if (guessedVersion) return guessedVersion === 'bs5';\n\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\n\nexport function getBsVer(): IBsVersion {\n return {\n isBs3: isBs3(),\n isBs4: isBs4(),\n isBs5: isBs5()\n };\n}\n\nexport function currentBsVersion(): AvailableBsVersions {\n const bsVer = getBsVer();\n const resVersion = Object.keys(bsVer).find(key => bsVer[key]);\n return BsVerions[resVersion as keyof typeof BsVerions];\n}\n\n\n","interface ListNode<T> {\n value: T,\n next?: ListNode<T>,\n previous?: ListNode<T>\n}\n\nexport class LinkedList<T> {\n length = 0;\n protected head?: ListNode<T>;\n protected tail?: ListNode<T>;\n protected current?: ListNode<T>;\n protected asArray: T[] = [];\n\n get(position: number): T | undefined {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current?.next;\n }\n\n return current?.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node: ListNode<T> = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0 && this.head) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length && this.tail) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode?.next;\n if (currentPreviousNode && currentNextNode) {\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0 && this.head) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1 && this.tail?.previous) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n if (removedNode?.next && removedNode.previous) {\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n if (node) {\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n findAll(fn: (value: T, index: number) => boolean): { index: number, value: T }[] {\n let current = this.head;\n const result: { index: number, value: T }[] = [];\n\n if (!current) {\n return result;\n }\n\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return result;\n }\n if (fn(current.value, index)) {\n result.push({ index, value: current.value });\n }\n current = current.next;\n\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n args.forEach((arg: T) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T | undefined {\n if (this.length === 0) {\n return;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last?.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n args.forEach((arg: T) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T | undefined {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head?.value;\n this.remove();\n\n return lastItem;\n }\n\n forEach(fn: (value: T, index: number) => void): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = -1;\n\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return position;\n }\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n some(fn: (value: T) => boolean): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n every(fn: (value: T) => boolean): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n find(fn: (value: T, index: number) => boolean): T | void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n if (fn(current.value, index)) {\n return current.value;\n }\n current = current.next;\n }\n }\n\n findIndex(fn: (value: T, index: number) => boolean): number {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return -1;\n }\n\n if (fn(current.value, index)) {\n return index;\n }\n\n current = current.next;\n }\n\n return -1;\n }\n\n protected getNode(position: number): ListNode<T>|undefined {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current?.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n const outArray: T[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function OnChange(): any {\n const sufix = 'Change';\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(): any {\n return this[_key];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n","import { window } from './facade/browser';\nimport { currentBsVersion } from './theme-provider';\n\nexport class Utils {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static reflow(element: any): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n\n static stackOverflowConfig(): { crossorigin?: string, integrity?: string, cdnLink: string } {\n const bsVer = currentBsVersion();\n return {\n crossorigin: bsVer !== 'bs3' ? \"anonymous\" : undefined,\n integrity: bsVer === 'bs5' ? 'sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We' : bsVer === 'bs4' ? 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2' : undefined,\n cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css' : bsVer === 'bs4' ? 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css' : 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css',\n };\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n console.warn(msg);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {isBs4 as ɵa,isBs5 as ɵb} from './theme-provider';"],"names":["BsVerions","window","isDevMode"],"mappings":";;;;;;IAAA;;;;;QASE,iBAAY,IAAY,EAAE,KAAc;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;SAC5B;QAED,0BAAQ,GAAR;YACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;SAC1D;sBACF;KAAA;;ICID,IAAM,eAAe,GAAG;QACtB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QAChC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAC/B,CAAC;IAEF;aACgB,aAAa,CAAC,QAAiB,EAAE,OAA8B;QAA9B,wBAAA,EAAA,yBAA8B;QAC7E,IAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QAEhD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAED,IAAM,cAAc,GAAG,eAAe;aACnC,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,UAAC,OAAe,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAA,CAAC;aAC5C,GAAG,CAAC,UAAC,WAAqB;YACzB,IAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YAErD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC;QAEL,IAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,WAAoB,IAChE,OAAA,WAAW,CAAC,QAAQ,EAAE,GAAA,CACvB,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;aAEe,gBAAgB,CAAC,QAAmB;IACnB;IACA,MAAW,EACX,QAAgB,EAChB,MAAuB,EACvB,MAAuB,EACvB,QAAyB;QACxD,IAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAM,SAAS,GAAsB,EAAE,CAAC;QAExC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAuB,CAAC;SACzC;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;gBAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAEhE,OAAO;aACR;YAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;aAChE;SACF,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAa,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACvD,CAAC;IACJ,CAAC;aAEe,kBAAkB,CAAC,QAAmB,EACnB,OAAsB;QACvD,IAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;QAE9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAuB,CAAC;SACzC;;QAGD,IAAM,SAAS,GAAsB,EAAE,CAAC;;QAGxC,IAAM,aAAa,GAA4B,EAAE,CAAC;QAClD,IAAM,YAAY,GAAG;;YAEnB,aAAa,CAAC,OAAO,CAAC,UAAC,EAAE,IAAK,OAAA,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAA,CAAC,CAAC;;YAEpD,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1B,CAAC;;QAGF,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,IAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;YACjD,IAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAEzD,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;gBAC/C,IAAM,OAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnE,aAAa,CAAC,IAAI,CAAC,cAAM,OAAA,OAAK,GAAA,CAAC,CAAC;aACjC;YAED,IAAI,MAAM,EAAE;gBACV,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,cAAM,OAAA,MAAM,CAAC,YAAY,CAAC,GAAA,CAAC,CAAC,CAAC;aACnF;SACF,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAyB,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACnE,CAAC;IACJ,CAAC;aAEe,oBAAoB,CAAC,QAAmB,EACnB,OAAsB;QACzD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;;QAGD,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,UAAC,KAAU;YACrD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO;aACR;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC,EAC7D;gBACA,OAAO;aACR;YAED,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF,CAAC,CAAC;IACL,CAAC;aAEe,gBAAgB,CAAC,QAAmB,EACnB,OAAsB;QACrD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,UAAC,KAAK;YACpD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO;aACR;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAAC,EAC7D;gBACA,OAAO;aACR;YAED,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,IAAI,EAAE,CAAC;aAChB;SACF,CAAC,CAAC;IACL;;IChLA;;;;;;;IAQA;;;IAGA;QACM,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,GAAU;QAGtD,QAAQ,GAAG,GAAG,CAAC,SAAS;IAC9B,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IACrC;IACO,IAAM,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,cAAM,OAAA,GAAG,CAAC,EAAE,EAAE,GAAA,GAAG,cAAW,OAAA,IAAI,GAAA,CAAC;IACrD,IAAM,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;IAC7D,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,IAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACxC,IAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAM,aAAa,GAAG,GAAG,CAAC,aAAa;;ICZ9C,WAAY,SAAS;QACnB,0BAAa,CAAA;QACb,0BAAa,CAAA;QACb,0BAAa,CAAA;IACf,CAAC,EAJWA,iBAAS,KAATA,iBAAS,QAIpB;IAED,IAAI,cAAmC,CAAC;IAExC,SAAS,eAAe;QACtB,IAAI,OAAOC,GAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,IAAM,MAAM,GAAGA,GAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,GAAG,oBAAoB,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACxCA,GAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5C,IAAM,aAAa,GAAGA,GAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QAC/DA,GAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,aAAa,IAAI,aAAa,KAAK,QAAQ,EAAE;YAC/C,OAAO,KAAK,CAAC;SACd;QACD,OAAO,KAAK,CAAC;IACf,CAAC;aAEe,QAAQ,CAAC,KAA0B;QACjD,cAAc,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;aACgB,KAAK;QACnB,IAAI,OAAOA,GAAM,KAAK,WAAW,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAOA,GAAM,CAAC,OAAO,KAAK,WAAW,EAAE;YACzC,IAAI,cAAc,EAAE;gBAClB,OAAO,cAAc,KAAK,KAAK,CAAC;aACjC;YACD,cAAc,GAAG,eAAe,EAAE,CAAC;YAEnC,OAAO,cAAc,KAAK,KAAK,CAAC;SACjC;QAED,OAAOA,GAAM,CAAC,OAAO,KAAK,KAAK,CAAC;IAClC,CAAC;aAEe,KAAK;QACnB,IAAI,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,cAAc;YAAE,OAAO,cAAc,KAAK,KAAK,CAAC;QAEpD,cAAc,GAAG,eAAe,EAAE,CAAC;QACnC,OAAO,cAAc,KAAK,KAAK,CAAC;IAClC,CAAC;aAEe,KAAK;QACnB,IAAI,KAAK,EAAE,IAAI,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAErC,IAAI,cAAc;YAAE,OAAO,cAAc,KAAK,KAAK,CAAC;QAEpD,cAAc,GAAG,eAAe,EAAE,CAAC;QACnC,OAAO,cAAc,KAAK,KAAK,CAAC;IAClC,CAAC;aAEe,QAAQ;QACtB,OAAO;YACL,KAAK,EAAE,KAAK,EAAE;YACd,KAAK,EAAE,KAAK,EAAE;YACd,KAAK,EAAE,KAAK,EAAE;SACf,CAAC;IACJ,CAAC;aAEe,gBAAgB;QAC9B,IAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QACzB,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAK,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;QAC9D,OAAOD,iBAAS,CAAC,UAAoC,CAAC,CAAC;IACzD;;;QCzFA;YACE,WAAM,GAAG,CAAC,CAAC;YAID,YAAO,GAAQ,EAAE,CAAC;;SA2R7B;QAzRC,wBAAG,GAAH,UAAI,QAAgB;YAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,OAAO,KAAK,CAAC,CAAC;aACf;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC7C,OAAO,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;aACzB;YAED,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;SACvB;QAED,wBAAG,GAAH,UAAI,KAAQ,EAAE,QAA8B;YAA9B,yBAAA,EAAA,WAAmB,IAAI,CAAC,MAAM;YAC1C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAM,IAAI,GAAgB;gBACxB,KAAK,OAAA;gBACL,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,SAAS;aACpB,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;iBAAM;gBACL,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;;oBAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;qBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;;oBAEhD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;qBAAM;;oBAEL,IAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;oBACvD,IAAM,eAAe,GAAG,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,IAAI,CAAC;oBAClD,IAAI,mBAAmB,IAAI,eAAe,EAAE;wBAC1C,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAChC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC;wBACpC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;qBAC7B;iBACF;aACF;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;QAED,2BAAM,GAAN,UAAO,QAAY;YAAZ,yBAAA,EAAA,YAAY;;YACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;;gBAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAE3B,IAAI,IAAI,CAAC,IAAI,EAAE;;oBAEb,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;iBAChC;qBAAM;;oBAEL,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;iBACvB;aACF;iBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,WAAI,IAAI,CAAC,IAAI,0CAAE,QAAQ,CAAA,EAAE;;gBAE9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;aAC5B;iBAAM;;gBAEL,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,KAAI,WAAW,CAAC,QAAQ,EAAE;oBAC7C,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;oBACjD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;iBAC9C;aACF;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;QAED,wBAAG,GAAH,UAAI,QAAgB,EAAE,KAAQ;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,iCAAiC,EAAE,CAAC;aAC1C;SACF;QAED,4BAAO,GAAP;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;QAED,4BAAO,GAAP,UAAQ,EAAwC;YAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAM,MAAM,GAAkC,EAAE,CAAC;YAEjD,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,MAAM,CAAC;aACf;YAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,MAAM,CAAC;iBACf;gBACD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,OAAA,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;iBAC9C;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aAExB;YAED,OAAO,MAAM,CAAC;SACf;;QAGD,yBAAI,GAAJ;YAAA,iBAMC;YANI,cAAY;iBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;gBAAZ,yBAAY;;YACf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAM;gBAClB,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACf,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,wBAAG,GAAH;YACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO;aACR;YACD,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE7B,OAAO,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC;SACpB;QAED,4BAAO,GAAP;YAAA,iBAOC;YAPO,cAAY;iBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;gBAAZ,yBAAY;;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAM;gBAClB,KAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aAClB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,0BAAK,GAAL;;YACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,OAAO,SAAS,CAAC;aAClB;YACD,IAAM,QAAQ,SAAG,IAAI,CAAC,IAAI,0CAAE,KAAK,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YAEd,OAAO,QAAQ,CAAC;SACjB;QAED,4BAAO,GAAP,UAAQ,EAAqC;YAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO;iBACR;gBACD,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;SACF;QAED,4BAAO,GAAP,UAAQ,KAAQ;YACd,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;YAElB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,QAAQ,CAAC;iBACjB;gBACD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;oBAC3B,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,QAAQ,CAAC;SACjB;QAED,yBAAI,GAAJ,UAAK,EAAyB;YAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE;gBACzB,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACrB,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;iBACP;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;QAED,0BAAK,GAAL,UAAM,EAAyB;YAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,OAAO,OAAO,IAAI,MAAM,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,MAAM,GAAG,KAAK,CAAC;iBAChB;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,MAAM,CAAC;SACf;QAED,6BAAQ,GAAR;YACE,OAAO,eAAe,CAAC;SACxB;QAED,yBAAI,GAAJ,UAAK,EAAwC;YAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO;iBACR;gBACD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,OAAO,OAAO,CAAC,KAAK,CAAC;iBACtB;gBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;SACF;QAED,8BAAS,GAAT,UAAU,EAAwC;YAChD,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,CAAC,CAAC;iBACX;gBAED,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;oBAC5B,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YAED,OAAO,CAAC,CAAC,CAAC;SACX;QAES,4BAAO,GAAP,UAAQ,QAAgB;YAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAChD;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAC7C,OAAO,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;aACzB;YAED,OAAO,OAAO,CAAC;SAChB;QAES,sDAAiC,GAAjC;YACR,IAAM,QAAQ,GAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,OAAO,OAAO,EAAE;gBACd,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;YACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;yBAGF;KAAA;;ICtSD;aACgB,QAAQ;QACtB,IAAM,KAAK,GAAG,QAAQ,CAAC;;QAGvB,OAAO,SAAS,eAAe,CAAC,MAAW,EAAE,WAAmB;YAC9D,IAAM,IAAI,GAAG,QAAM,WAAW,UAAO,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;;gBAEzC,GAAG;oBACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;;gBAED,GAAG,YAAC,KAAU;oBACZ,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBACnB,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;wBACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvC;iBACF;aACF,CAAC,CAAC;SACJ,CAAC;IACJ;;;QCnBA;SA8BC;;QA5BQ,YAAM,GAAb,UAAc,OAAY;;YAExB,CAAC,UAAC,EAAO,IAAW,OAAA,EAAE,GAAA,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;SAC/C;;;QAIM,eAAS,GAAhB,UAAiB,IAAS;;;;YAIxB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAE1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzB,IAAI,GAAGC,GAAM,CAAC;aACf;YAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACpC;QAEO,yBAAmB,GAA1B;YACC,IAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;YAC/B,OAAO;gBACP,WAAW,EAAE,KAAK,KAAK,KAAK,GAAG,WAAW,GAAG,SAAS;gBACtD,SAAS,EAAE,KAAK,KAAK,KAAK,GAAG,yEAAyE,GAAG,KAAK,KAAK,KAAK,GAAG,yEAAyE,GAAG,SAAS;gBAChN,OAAO,EAAE,KAAK,KAAK,KAAK,GAAG,yEAAyE,GAAG,KAAK,KAAK,KAAK,GAAG,yEAAyE,GAAG,uEAAuE;aAC7Q,CAAC;SACF;oBACH;KAAA;;IChCD,IAAM,aAAa,GAA+B,EAAE,CAAC;IACrD,IAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC;aAExD,QAAQ,CAAC,GAAW;QAClC,IAAI,CAACC,cAAS,EAAE,IAAI,QAAQ,IAAI,GAAG,IAAI,aAAa,EAAE;YACpD,OAAO;SACR;QAED,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB;;ICXA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
\No newline at end of file