package.dist.react-hotkeys-hook.cjs.development.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of react-hotkeys-hook Show documentation
Show all versions of react-hotkeys-hook Show documentation
React hook for handling keyboard shortcuts
The newest version!
{"version":3,"file":"react-hotkeys-hook.cjs.development.js","sources":["../src/parseHotkeys.ts","../src/isHotkeyPressed.ts","../src/validators.ts","../src/BoundHotkeysProxyProvider.tsx","../src/deepEqual.ts","../src/HotkeysProvider.tsx","../src/useDeepEqualMemo.ts","../src/useHotkeys.ts","../src/useRecordHotkeys.ts"],"sourcesContent":["import { Hotkey, KeyboardModifiers } from './types'\n\nconst reservedModifierKeywords = ['shift', 'alt', 'meta', 'mod', 'ctrl']\n\nconst mappedKeys: Record = {\n esc: 'escape',\n return: 'enter',\n '.': 'period',\n ',': 'comma',\n '-': 'slash',\n ' ': 'space',\n '`': 'backquote',\n '#': 'backslash',\n '+': 'bracketright',\n ShiftLeft: 'shift',\n ShiftRight: 'shift',\n AltLeft: 'alt',\n AltRight: 'alt',\n MetaLeft: 'meta',\n MetaRight: 'meta',\n OSLeft: 'meta',\n OSRight: 'meta',\n ControlLeft: 'ctrl',\n ControlRight: 'ctrl',\n}\n\nexport function mapKey(key?: string): string {\n return ((key && mappedKeys[key]) || key || '')\n .trim()\n .toLowerCase()\n .replace(/key|digit|numpad|arrow/, '')\n}\n\nexport function isHotkeyModifier(key: string) {\n return reservedModifierKeywords.includes(key)\n}\n\nexport function parseKeysHookInput(keys: string, splitKey = ','): string[] {\n return keys.split(splitKey)\n}\n\nexport function parseHotkey(hotkey: string, combinationKey = '+', description?: string): Hotkey {\n const keys = hotkey\n .toLocaleLowerCase()\n .split(combinationKey)\n .map((k) => mapKey(k))\n\n const modifiers: KeyboardModifiers = {\n alt: keys.includes('alt'),\n ctrl: keys.includes('ctrl') || keys.includes('control'),\n shift: keys.includes('shift'),\n meta: keys.includes('meta'),\n mod: keys.includes('mod'),\n }\n\n const singleCharKeys = keys.filter((k) => !reservedModifierKeywords.includes(k))\n\n return {\n ...modifiers,\n keys: singleCharKeys,\n description,\n }\n}\n","import { isHotkeyModifier, mapKey } from './parseHotkeys'\n;(() => {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', (e) => {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return\n }\n\n pushToCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)])\n })\n\n document.addEventListener('keyup', (e) => {\n if (e.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return\n }\n\n removeFromCurrentlyPressedKeys([mapKey(e.key), mapKey(e.code)])\n })\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('blur', () => {\n currentlyPressedKeys.clear()\n })\n }\n})()\n\nconst currentlyPressedKeys: Set = new Set()\n\n// https://github.com/microsoft/TypeScript/issues/17002\nexport function isReadonlyArray(value: unknown): value is readonly unknown[] {\n return Array.isArray(value)\n}\n\nexport function isHotkeyPressed(key: string | readonly string[], splitKey = ','): boolean {\n const hotkeyArray = isReadonlyArray(key) ? key : key.split(splitKey)\n\n return hotkeyArray.every((hotkey) => currentlyPressedKeys.has(hotkey.trim().toLowerCase()))\n}\n\nexport function pushToCurrentlyPressedKeys(key: string | string[]): void {\n const hotkeyArray = Array.isArray(key) ? key : [key]\n\n /*\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\n */\n if (currentlyPressedKeys.has('meta')) {\n currentlyPressedKeys.forEach((key) => !isHotkeyModifier(key) && currentlyPressedKeys.delete(key.toLowerCase()))\n }\n\n hotkeyArray.forEach((hotkey) => currentlyPressedKeys.add(hotkey.toLowerCase()))\n}\n\nexport function removeFromCurrentlyPressedKeys(key: string | string[]): void {\n const hotkeyArray = Array.isArray(key) ? key : [key]\n\n /*\n Due to a weird behavior on macOS we need to clear the set if the user pressed down the meta key and presses another key.\n https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\n Otherwise the set will hold all ever pressed keys while the meta key is down which leads to wrong results.\n */\n if (key === 'meta') {\n currentlyPressedKeys.clear()\n } else {\n hotkeyArray.forEach((hotkey) => currentlyPressedKeys.delete(hotkey.toLowerCase()))\n }\n}\n","import { FormTags, Hotkey, Scopes, Trigger } from './types'\nimport { isHotkeyPressed, isReadonlyArray } from './isHotkeyPressed'\nimport { mapKey } from './parseHotkeys'\n\nexport function maybePreventDefault(e: KeyboardEvent, hotkey: Hotkey, preventDefault?: Trigger): void {\n if ((typeof preventDefault === 'function' && preventDefault(e, hotkey)) || preventDefault === true) {\n e.preventDefault()\n }\n}\n\nexport function isHotkeyEnabled(e: KeyboardEvent, hotkey: Hotkey, enabled?: Trigger): boolean {\n if (typeof enabled === 'function') {\n return enabled(e, hotkey)\n }\n\n return enabled === true || enabled === undefined\n}\n\nexport function isKeyboardEventTriggeredByInput(ev: KeyboardEvent): boolean {\n return isHotkeyEnabledOnTag(ev, ['input', 'textarea', 'select'])\n}\n\nexport function isHotkeyEnabledOnTag(\n { target }: KeyboardEvent,\n enabledOnTags: readonly FormTags[] | boolean = false\n): boolean {\n const targetTagName = target && (target as HTMLElement).tagName\n\n if (isReadonlyArray(enabledOnTags)) {\n return Boolean(\n targetTagName && enabledOnTags && enabledOnTags.some((tag) => tag.toLowerCase() === targetTagName.toLowerCase())\n )\n }\n\n return Boolean(targetTagName && enabledOnTags && enabledOnTags === true)\n}\n\nexport function isScopeActive(activeScopes: string[], scopes?: Scopes): boolean {\n if (activeScopes.length === 0 && scopes) {\n console.warn(\n 'A hotkey has the \"scopes\" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a '\n )\n\n return true\n }\n\n if (!scopes) {\n return true\n }\n\n return activeScopes.some((scope) => scopes.includes(scope)) || activeScopes.includes('*')\n}\n\nexport const isHotkeyMatchingKeyboardEvent = (e: KeyboardEvent, hotkey: Hotkey, ignoreModifiers = false): boolean => {\n const { alt, meta, mod, shift, ctrl, keys } = hotkey\n const { key: pressedKeyUppercase, code, ctrlKey, metaKey, shiftKey, altKey } = e\n\n const keyCode = mapKey(code)\n const pressedKey = pressedKeyUppercase.toLowerCase()\n\n if (\n !keys?.includes(keyCode) &&\n !keys?.includes(pressedKey) &&\n !['ctrl', 'control', 'unknown', 'meta', 'alt', 'shift', 'os'].includes(keyCode)\n ) {\n return false\n }\n\n if (!ignoreModifiers) {\n // We check the pressed keys for compatibility with the keyup event. In keyup events the modifier flags are not set.\n if (alt === !altKey && pressedKey !== 'alt') {\n return false\n }\n\n if (shift === !shiftKey && pressedKey !== 'shift') {\n return false\n }\n\n // Mod is a special key name that is checking for meta on macOS and ctrl on other platforms\n if (mod) {\n if (!metaKey && !ctrlKey) {\n return false\n }\n } else {\n if (meta === !metaKey && pressedKey !== 'meta' && pressedKey !== 'os') {\n return false\n }\n\n if (ctrl === !ctrlKey && pressedKey !== 'ctrl' && pressedKey !== 'control') {\n return false\n }\n }\n }\n\n // All modifiers are correct, now check the key\n // If the key is set, we check for the key\n if (keys && keys.length === 1 && (keys.includes(pressedKey) || keys.includes(keyCode))) {\n return true\n } else if (keys) {\n // Check if all keys are present in pressedDownKeys set\n return isHotkeyPressed(keys)\n } else if (!keys) {\n // If the key is not set, we only listen for modifiers, that check went alright, so we return true\n return true\n }\n\n // There is nothing that matches.\n return false\n}\n","import { createContext, ReactNode, useContext } from 'react'\nimport { Hotkey } from './types'\n\ntype BoundHotkeysProxyProviderType = {\n addHotkey: (hotkey: Hotkey) => void\n removeHotkey: (hotkey: Hotkey) => void\n}\n\nconst BoundHotkeysProxyProvider = createContext(undefined)\n\nexport const useBoundHotkeysProxy = () => {\n return useContext(BoundHotkeysProxyProvider)\n}\n\ninterface Props {\n children: ReactNode\n addHotkey: (hotkey: Hotkey) => void\n removeHotkey: (hotkey: Hotkey) => void\n}\n\nexport default function BoundHotkeysProxyProviderProvider({ addHotkey, removeHotkey, children }: Props) {\n return (\n \n {children}\n \n )\n}\n","export default function deepEqual(x: any, y: any): boolean {\n //@ts-ignore\n return x && y && typeof x === 'object' && typeof y === 'object'\n ? Object.keys(x).length === Object.keys(y).length &&\n //@ts-ignore\n Object.keys(x).reduce((isEqual, key) => isEqual && deepEqual(x[key], y[key]), true)\n : x === y\n}\n","import { Hotkey } from './types'\nimport { createContext, ReactNode, useState, useContext, useCallback } from 'react'\nimport BoundHotkeysProxyProviderProvider from './BoundHotkeysProxyProvider'\nimport deepEqual from './deepEqual'\n\nexport type HotkeysContextType = {\n hotkeys: ReadonlyArray\n enabledScopes: string[]\n toggleScope: (scope: string) => void\n enableScope: (scope: string) => void\n disableScope: (scope: string) => void\n}\n\n// The context is only needed for special features like global scoping, so we use a graceful default fallback\nconst HotkeysContext = createContext({\n hotkeys: [],\n enabledScopes: [], // This array has to be empty instead of containing '*' as default, to check if the provider is set or not\n toggleScope: () => {},\n enableScope: () => {},\n disableScope: () => {},\n})\n\nexport const useHotkeysContext = () => {\n return useContext(HotkeysContext)\n}\n\ninterface Props {\n initiallyActiveScopes?: string[]\n children: ReactNode\n}\n\nexport const HotkeysProvider = ({ initiallyActiveScopes = ['*'], children }: Props) => {\n const [internalActiveScopes, setInternalActiveScopes] = useState(\n initiallyActiveScopes?.length > 0 ? initiallyActiveScopes : ['*']\n )\n const [boundHotkeys, setBoundHotkeys] = useState([])\n\n const enableScope = useCallback((scope: string) => {\n setInternalActiveScopes((prev) => {\n if (prev.includes('*')) {\n return [scope]\n }\n\n return Array.from(new Set([...prev, scope]))\n })\n }, [])\n\n const disableScope = useCallback((scope: string) => {\n setInternalActiveScopes((prev) => {\n if (prev.filter((s) => s !== scope).length === 0) {\n return ['*']\n } else {\n return prev.filter((s) => s !== scope)\n }\n })\n }, [])\n\n const toggleScope = useCallback((scope: string) => {\n setInternalActiveScopes((prev) => {\n if (prev.includes(scope)) {\n if (prev.filter((s) => s !== scope).length === 0) {\n return ['*']\n } else {\n return prev.filter((s) => s !== scope)\n }\n } else {\n if (prev.includes('*')) {\n return [scope]\n }\n\n return Array.from(new Set([...prev, scope]))\n }\n })\n }, [])\n\n const addBoundHotkey = useCallback((hotkey: Hotkey) => {\n setBoundHotkeys((prev) => [...prev, hotkey])\n }, [])\n\n const removeBoundHotkey = useCallback((hotkey: Hotkey) => {\n setBoundHotkeys((prev) => prev.filter((h) => !deepEqual(h, hotkey)))\n }, [])\n\n return (\n \n \n {children}\n \n \n )\n}\n","import { useRef } from 'react'\nimport deepEqual from './deepEqual'\n\nexport default function useDeepEqualMemo(value: T) {\n const ref = useRef(undefined)\n\n if (!deepEqual(ref.current, value)) {\n ref.current = value\n }\n\n return ref.current\n}\n","import { HotkeyCallback, Keys, Options, OptionsOrDependencyArray, RefType } from './types'\nimport { DependencyList, RefCallback, useCallback, useEffect, useState, useLayoutEffect, useRef } from 'react'\nimport { mapKey, parseHotkey, parseKeysHookInput } from './parseHotkeys'\nimport {\n isHotkeyEnabled,\n isHotkeyEnabledOnTag,\n isHotkeyMatchingKeyboardEvent,\n isKeyboardEventTriggeredByInput,\n isScopeActive,\n maybePreventDefault,\n} from './validators'\nimport { useHotkeysContext } from './HotkeysProvider'\nimport { useBoundHotkeysProxy } from './BoundHotkeysProxyProvider'\nimport useDeepEqualMemo from './useDeepEqualMemo'\nimport { isReadonlyArray, pushToCurrentlyPressedKeys, removeFromCurrentlyPressedKeys } from './isHotkeyPressed'\n\nconst stopPropagation = (e: KeyboardEvent): void => {\n e.stopPropagation()\n e.preventDefault()\n e.stopImmediatePropagation()\n}\n\nconst useSafeLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n\nexport default function useHotkeys(\n keys: Keys,\n callback: HotkeyCallback,\n options?: OptionsOrDependencyArray,\n dependencies?: OptionsOrDependencyArray\n) {\n const [ref, setRef] = useState>(null)\n const hasTriggeredRef = useRef(false)\n\n const _options: Options | undefined = !(options instanceof Array)\n ? (options as Options)\n : !(dependencies instanceof Array)\n ? (dependencies as Options)\n : undefined\n const _keys: string = isReadonlyArray(keys) ? keys.join(_options?.splitKey) : keys\n const _deps: DependencyList | undefined =\n options instanceof Array ? options : dependencies instanceof Array ? dependencies : undefined\n\n const memoisedCB = useCallback(callback, _deps ?? [])\n const cbRef = useRef(memoisedCB)\n\n if (_deps) {\n cbRef.current = memoisedCB\n } else {\n cbRef.current = callback\n }\n\n const memoisedOptions = useDeepEqualMemo(_options)\n\n const { enabledScopes } = useHotkeysContext()\n const proxy = useBoundHotkeysProxy()\n\n useSafeLayoutEffect(() => {\n if (memoisedOptions?.enabled === false || !isScopeActive(enabledScopes, memoisedOptions?.scopes)) {\n return\n }\n\n const listener = (e: KeyboardEvent, isKeyUp = false) => {\n if (isKeyboardEventTriggeredByInput(e) && !isHotkeyEnabledOnTag(e, memoisedOptions?.enableOnFormTags)) {\n return\n }\n\n // TODO: SINCE THE EVENT IS NOW ATTACHED TO THE REF, THE ACTIVE ELEMENT CAN NEVER BE INSIDE THE REF. THE HOTKEY ONLY TRIGGERS IF THE\n // REF IS THE ACTIVE ELEMENT. THIS IS A PROBLEM SINCE FOCUSED SUB COMPONENTS WON'T TRIGGER THE HOTKEY.\n if (ref !== null) {\n const rootNode = ref.getRootNode()\n if (\n (rootNode instanceof Document || rootNode instanceof ShadowRoot) &&\n rootNode.activeElement !== ref &&\n !ref.contains(rootNode.activeElement)\n ) {\n stopPropagation(e)\n return\n }\n }\n\n if ((e.target as HTMLElement)?.isContentEditable && !memoisedOptions?.enableOnContentEditable) {\n return\n }\n\n parseKeysHookInput(_keys, memoisedOptions?.splitKey).forEach((key) => {\n const hotkey = parseHotkey(key, memoisedOptions?.combinationKey)\n\n if (isHotkeyMatchingKeyboardEvent(e, hotkey, memoisedOptions?.ignoreModifiers) || hotkey.keys?.includes('*')) {\n if (memoisedOptions?.ignoreEventWhen?.(e)) {\n return\n }\n\n if (isKeyUp && hasTriggeredRef.current) {\n return\n }\n\n maybePreventDefault(e, hotkey, memoisedOptions?.preventDefault)\n\n if (!isHotkeyEnabled(e, hotkey, memoisedOptions?.enabled)) {\n stopPropagation(e)\n\n return\n }\n\n // Execute the user callback for that hotkey\n cbRef.current(e, hotkey)\n\n if (!isKeyUp) {\n hasTriggeredRef.current = true\n }\n }\n })\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return\n }\n\n pushToCurrentlyPressedKeys(mapKey(event.code))\n\n if ((memoisedOptions?.keydown === undefined && memoisedOptions?.keyup !== true) || memoisedOptions?.keydown) {\n listener(event)\n }\n }\n\n const handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return\n }\n\n removeFromCurrentlyPressedKeys(mapKey(event.code))\n\n hasTriggeredRef.current = false\n\n if (memoisedOptions?.keyup) {\n listener(event, true)\n }\n }\n\n const domNode = ref || _options?.document || document\n\n // @ts-ignore\n domNode.addEventListener('keyup', handleKeyUp)\n // @ts-ignore\n domNode.addEventListener('keydown', handleKeyDown)\n\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions?.splitKey).forEach((key) =>\n proxy.addHotkey(parseHotkey(key, memoisedOptions?.combinationKey, memoisedOptions?.description))\n )\n }\n\n return () => {\n // @ts-ignore\n domNode.removeEventListener('keyup', handleKeyUp)\n // @ts-ignore\n domNode.removeEventListener('keydown', handleKeyDown)\n\n if (proxy) {\n parseKeysHookInput(_keys, memoisedOptions?.splitKey).forEach((key) =>\n proxy.removeHotkey(parseHotkey(key, memoisedOptions?.combinationKey, memoisedOptions?.description))\n )\n }\n }\n }, [ref, _keys, memoisedOptions, enabledScopes])\n\n return setRef as RefCallback\n}\n","import { useCallback, useState } from 'react'\nimport { mapKey } from './parseHotkeys'\n\nexport default function useRecordHotkeys() {\n const [keys, setKeys] = useState(new Set())\n const [isRecording, setIsRecording] = useState(false)\n\n const handler = useCallback((event: KeyboardEvent) => {\n if (event.key === undefined) {\n // Synthetic event (e.g., Chrome autofill). Ignore.\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n setKeys((prev) => {\n const newKeys = new Set(prev)\n\n newKeys.add(mapKey(event.code))\n\n return newKeys\n })\n }, [])\n\n const stop = useCallback(() => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', handler)\n\n setIsRecording(false)\n }\n }, [handler])\n\n const start = useCallback(() => {\n setKeys(new Set())\n\n if (typeof document !== 'undefined') {\n stop()\n\n document.addEventListener('keydown', handler)\n\n setIsRecording(true)\n }\n }, [handler, stop])\n\n const resetKeys = useCallback(() => {\n setKeys(new Set())\n }, [])\n\n return [keys, { start, stop, resetKeys, isRecording }] as const\n}\n"],"names":["reservedModifierKeywords","mappedKeys","esc","ShiftLeft","ShiftRight","AltLeft","AltRight","MetaLeft","MetaRight","OSLeft","OSRight","ControlLeft","ControlRight","mapKey","key","trim","toLowerCase","replace","isHotkeyModifier","includes","parseKeysHookInput","keys","splitKey","split","parseHotkey","hotkey","combinationKey","description","toLocaleLowerCase","map","k","modifiers","alt","ctrl","shift","meta","mod","singleCharKeys","filter","_extends","document","addEventListener","e","undefined","pushToCurrentlyPressedKeys","code","removeFromCurrentlyPressedKeys","window","currentlyPressedKeys","clear","Set","isReadonlyArray","value","Array","isArray","isHotkeyPressed","hotkeyArray","every","has","forEach","add","maybePreventDefault","preventDefault","isHotkeyEnabled","enabled","isKeyboardEventTriggeredByInput","ev","isHotkeyEnabledOnTag","_ref","enabledOnTags","target","targetTagName","tagName","Boolean","some","tag","isScopeActive","activeScopes","scopes","length","console","warn","scope","isHotkeyMatchingKeyboardEvent","ignoreModifiers","pressedKeyUppercase","ctrlKey","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","createContext","useBoundHotkeysProxy","useContext","BoundHotkeysProxyProviderProvider","addHotkey","removeHotkey","children","_jsx","Provider","deepEqual","x","y","Object","reduce","isEqual","HotkeysContext","hotkeys","enabledScopes","toggleScope","enableScope","disableScope","useHotkeysContext","HotkeysProvider","initiallyActiveScopes","_ref$initiallyActiveS","_useState","useState","internalActiveScopes","setInternalActiveScopes","_useState2","boundHotkeys","setBoundHotkeys","useCallback","prev","from","concat","s","addBoundHotkey","removeBoundHotkey","h","useDeepEqualMemo","ref","useRef","current","stopPropagation","stopImmediatePropagation","useSafeLayoutEffect","useLayoutEffect","useEffect","useHotkeys","callback","options","dependencies","setRef","hasTriggeredRef","_options","_keys","join","_deps","memoisedCB","cbRef","memoisedOptions","_useHotkeysContext","proxy","listener","isKeyUp","enableOnFormTags","rootNode","getRootNode","Document","ShadowRoot","activeElement","contains","_e$target","isContentEditable","enableOnContentEditable","_hotkey$keys","ignoreEventWhen","handleKeyDown","event","keydown","keyup","handleKeyUp","domNode","removeEventListener","useRecordHotkeys","setKeys","isRecording","setIsRecording","handler","newKeys","stop","start","resetKeys"],"mappings":";;;;;;;;;;;;;;;AAEA,IAAMA,wBAAwB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAExE,IAAMC,UAAU,GAA2B;EACzCC,GAAG,EAAE,QAAQ;EACb,UAAQ,OAAO;EACf,GAAG,EAAE,QAAQ;EACb,GAAG,EAAE,OAAO;EACZ,GAAG,EAAE,OAAO;EACZ,GAAG,EAAE,OAAO;EACZ,GAAG,EAAE,WAAW;EAChB,GAAG,EAAE,WAAW;EAChB,GAAG,EAAE,cAAc;EACnBC,SAAS,EAAE,OAAO;EAClBC,UAAU,EAAE,OAAO;EACnBC,OAAO,EAAE,KAAK;EACdC,QAAQ,EAAE,KAAK;EACfC,QAAQ,EAAE,MAAM;EAChBC,SAAS,EAAE,MAAM;EACjBC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAE,MAAM;EACfC,WAAW,EAAE,MAAM;EACnBC,YAAY,EAAE;CACf;SAEeC,MAAMA,CAACC,GAAY;EACjC,OAAO,CAAEA,GAAG,IAAIb,UAAU,CAACa,GAAG,CAAC,IAAKA,GAAG,IAAI,EAAE,EAC1CC,IAAI,EAAE,CACNC,WAAW,EAAE,CACbC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;AAC1C;SAEgBC,gBAAgBA,CAACJ,GAAW;EAC1C,OAAOd,wBAAwB,CAACmB,QAAQ,CAACL,GAAG,CAAC;AAC/C;SAEgBM,kBAAkBA,CAACC,IAAY,EAAEC,QAAQ;MAARA,QAAQ;IAARA,QAAQ,GAAG,GAAG;;EAC7D,OAAOD,IAAI,CAACE,KAAK,CAACD,QAAQ,CAAC;AAC7B;SAEgBE,WAAWA,CAACC,MAAc,EAAEC,cAAc,EAAQC,WAAoB;MAA1CD,cAAc;IAAdA,cAAc,GAAG,GAAG;;EAC9D,IAAML,IAAI,GAAGI,MAAM,CAChBG,iBAAiB,EAAE,CACnBL,KAAK,CAACG,cAAc,CAAC,CACrBG,GAAG,CAAC,UAACC,CAAC;IAAA,OAAKjB,MAAM,CAACiB,CAAC,CAAC;IAAC;EAExB,IAAMC,SAAS,GAAsB;IACnCC,GAAG,EAAEX,IAAI,CAACF,QAAQ,CAAC,KAAK,CAAC;IACzBc,IAAI,EAAEZ,IAAI,CAACF,QAAQ,CAAC,MAAM,CAAC,IAAIE,IAAI,CAACF,QAAQ,CAAC,SAAS,CAAC;IACvDe,KAAK,EAAEb,IAAI,CAACF,QAAQ,CAAC,OAAO,CAAC;IAC7BgB,IAAI,EAAEd,IAAI,CAACF,QAAQ,CAAC,MAAM,CAAC;IAC3BiB,GAAG,EAAEf,IAAI,CAACF,QAAQ,CAAC,KAAK;GACzB;EAED,IAAMkB,cAAc,GAAGhB,IAAI,CAACiB,MAAM,CAAC,UAACR,CAAC;IAAA,OAAK,CAAC9B,wBAAwB,CAACmB,QAAQ,CAACW,CAAC,CAAC;IAAC;EAEhF,OAAAS,QAAA,KACKR,SAAS;IACZV,IAAI,EAAEgB,cAAc;IACpBV,WAAW,EAAXA;;AAEJ;;AC7DC,CAAC;EACA,IAAI,OAAOa,QAAQ,KAAK,WAAW,EAAE;IACnCA,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,UAACC,CAAC;MACrC,IAAIA,CAAC,CAAC5B,GAAG,KAAK6B,SAAS,EAAE;;QAEvB;;MAGFC,0BAA0B,CAAC,CAAC/B,MAAM,CAAC6B,CAAC,CAAC5B,GAAG,CAAC,EAAED,MAAM,CAAC6B,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;KAC5D,CAAC;IAEFL,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAE,UAACC,CAAC;MACnC,IAAIA,CAAC,CAAC5B,GAAG,KAAK6B,SAAS,EAAE;;QAEvB;;MAGFG,8BAA8B,CAAC,CAACjC,MAAM,CAAC6B,CAAC,CAAC5B,GAAG,CAAC,EAAED,MAAM,CAAC6B,CAAC,CAACG,IAAI,CAAC,CAAC,CAAC;KAChE,CAAC;;EAGJ,IAAI,OAAOE,MAAM,KAAK,WAAW,EAAE;IACjCA,MAAM,CAACN,gBAAgB,CAAC,MAAM,EAAE;MAC9BO,oBAAoB,CAACC,KAAK,EAAE;KAC7B,CAAC;;AAEN,CAAC,GAAG;AAEJ,IAAMD,oBAAoB,gBAAgB,IAAIE,GAAG,EAAU;AAE3D;AACA,SAAgBC,eAAeA,CAACC,KAAc;EAC5C,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC;AAC7B;AAEA,SAAgBG,eAAeA,CAACzC,GAA+B,EAAEQ,QAAQ;MAARA,QAAQ;IAARA,QAAQ,GAAG,GAAG;;EAC7E,IAAMkC,WAAW,GAAGL,eAAe,CAACrC,GAAG,CAAC,GAAGA,GAAG,GAAGA,GAAG,CAACS,KAAK,CAACD,QAAQ,CAAC;EAEpE,OAAOkC,WAAW,CAACC,KAAK,CAAC,UAAChC,MAAM;IAAA,OAAKuB,oBAAoB,CAACU,GAAG,CAACjC,MAAM,CAACV,IAAI,EAAE,CAACC,WAAW,EAAE,CAAC;IAAC;AAC7F;AAEA,SAAgB4B,0BAA0BA,CAAC9B,GAAsB;EAC/D,IAAM0C,WAAW,GAAGH,KAAK,CAACC,OAAO,CAACxC,GAAG,CAAC,GAAGA,GAAG,GAAG,CAACA,GAAG,CAAC;;;;;;EAOpD,IAAIkC,oBAAoB,CAACU,GAAG,CAAC,MAAM,CAAC,EAAE;IACpCV,oBAAoB,CAACW,OAAO,CAAC,UAAC7C,GAAG;MAAA,OAAK,CAACI,gBAAgB,CAACJ,GAAG,CAAC,IAAIkC,oBAAoB,UAAO,CAAClC,GAAG,CAACE,WAAW,EAAE,CAAC;MAAC;;EAGjHwC,WAAW,CAACG,OAAO,CAAC,UAAClC,MAAM;IAAA,OAAKuB,oBAAoB,CAACY,GAAG,CAACnC,MAAM,CAACT,WAAW,EAAE,CAAC;IAAC;AACjF;AAEA,SAAgB8B,8BAA8BA,CAAChC,GAAsB;EACnE,IAAM0C,WAAW,GAAGH,KAAK,CAACC,OAAO,CAACxC,GAAG,CAAC,GAAGA,GAAG,GAAG,CAACA,GAAG,CAAC;;;;;;EAOpD,IAAIA,GAAG,KAAK,MAAM,EAAE;IAClBkC,oBAAoB,CAACC,KAAK,EAAE;GAC7B,MAAM;IACLO,WAAW,CAACG,OAAO,CAAC,UAAClC,MAAM;MAAA,OAAKuB,oBAAoB,UAAO,CAACvB,MAAM,CAACT,WAAW,EAAE,CAAC;MAAC;;AAEtF;;SClEgB6C,mBAAmBA,CAACnB,CAAgB,EAAEjB,MAAc,EAAEqC,cAAwB;EAC5F,IAAK,OAAOA,cAAc,KAAK,UAAU,IAAIA,cAAc,CAACpB,CAAC,EAAEjB,MAAM,CAAC,IAAKqC,cAAc,KAAK,IAAI,EAAE;IAClGpB,CAAC,CAACoB,cAAc,EAAE;;AAEtB;AAEA,SAAgBC,eAAeA,CAACrB,CAAgB,EAAEjB,MAAc,EAAEuC,OAAiB;EACjF,IAAI,OAAOA,OAAO,KAAK,UAAU,EAAE;IACjC,OAAOA,OAAO,CAACtB,CAAC,EAAEjB,MAAM,CAAC;;EAG3B,OAAOuC,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAKrB,SAAS;AAClD;AAEA,SAAgBsB,+BAA+BA,CAACC,EAAiB;EAC/D,OAAOC,oBAAoB,CAACD,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAClE;AAEA,SAAgBC,oBAAoBA,CAAAC,IAAA,EAElCC;MADEC,MAAM,GAAAF,IAAA,CAANE,MAAM;EAAA,IACRD;IAAAA,gBAA+C,KAAK;;EAEpD,IAAME,aAAa,GAAGD,MAAM,IAAKA,MAAsB,CAACE,OAAO;EAE/D,IAAIrB,eAAe,CAACkB,aAAa,CAAC,EAAE;IAClC,OAAOI,OAAO,CACZF,aAAa,IAAIF,aAAa,IAAIA,aAAa,CAACK,IAAI,CAAC,UAACC,GAAG;MAAA,OAAKA,GAAG,CAAC3D,WAAW,EAAE,KAAKuD,aAAa,CAACvD,WAAW,EAAE;MAAC,CACjH;;EAGH,OAAOyD,OAAO,CAACF,aAAa,IAAIF,aAAa,IAAIA,aAAa,KAAK,IAAI,CAAC;AAC1E;AAEA,SAAgBO,aAAaA,CAACC,YAAsB,EAAEC,MAAe;EACnE,IAAID,YAAY,CAACE,MAAM,KAAK,CAAC,IAAID,MAAM,EAAE;IACvCE,OAAO,CAACC,IAAI,CACV,2KAA2K,CAC5K;IAED,OAAO,IAAI;;EAGb,IAAI,CAACH,MAAM,EAAE;IACX,OAAO,IAAI;;EAGb,OAAOD,YAAY,CAACH,IAAI,CAAC,UAACQ,KAAK;IAAA,OAAKJ,MAAM,CAAC3D,QAAQ,CAAC+D,KAAK,CAAC;IAAC,IAAIL,YAAY,CAAC1D,QAAQ,CAAC,GAAG,CAAC;AAC3F;AAEA,AAAO,IAAMgE,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIzC,CAAgB,EAAEjB,MAAc,EAAE2D,eAAe;MAAfA,eAAe;IAAfA,eAAe,GAAG,KAAK;;EACrG,IAAQpD,GAAG,GAAmCP,MAAM,CAA5CO,GAAG;IAAEG,IAAI,GAA6BV,MAAM,CAAvCU,IAAI;IAAEC,GAAG,GAAwBX,MAAM,CAAjCW,GAAG;IAAEF,KAAK,GAAiBT,MAAM,CAA5BS,KAAK;IAAED,IAAI,GAAWR,MAAM,CAArBQ,IAAI;IAAEZ,IAAI,GAAKI,MAAM,CAAfJ,IAAI;EACzC,IAAagE,mBAAmB,GAA+C3C,CAAC,CAAxE5B,GAAG;IAAuB+B,IAAI,GAAyCH,CAAC,CAA9CG,IAAI;IAAEyC,OAAO,GAAgC5C,CAAC,CAAxC4C,OAAO;IAAEC,OAAO,GAAuB7C,CAAC,CAA/B6C,OAAO;IAAEC,QAAQ,GAAa9C,CAAC,CAAtB8C,QAAQ;IAAEC,MAAM,GAAK/C,CAAC,CAAZ+C,MAAM;EAE1E,IAAMC,OAAO,GAAG7E,MAAM,CAACgC,IAAI,CAAC;EAC5B,IAAM8C,UAAU,GAAGN,mBAAmB,CAACrE,WAAW,EAAE;EAEpD,IACE,EAACK,IAAI,YAAJA,IAAI,CAAEF,QAAQ,CAACuE,OAAO,CAAC,KACxB,EAACrE,IAAI,YAAJA,IAAI,CAAEF,QAAQ,CAACwE,UAAU,CAAC,KAC3B,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAACxE,QAAQ,CAACuE,OAAO,CAAC,EAC/E;IACA,OAAO,KAAK;;EAGd,IAAI,CAACN,eAAe,EAAE;;IAEpB,IAAIpD,GAAG,KAAK,CAACyD,MAAM,IAAIE,UAAU,KAAK,KAAK,EAAE;MAC3C,OAAO,KAAK;;IAGd,IAAIzD,KAAK,KAAK,CAACsD,QAAQ,IAAIG,UAAU,KAAK,OAAO,EAAE;MACjD,OAAO,KAAK;;;IAId,IAAIvD,GAAG,EAAE;MACP,IAAI,CAACmD,OAAO,IAAI,CAACD,OAAO,EAAE;QACxB,OAAO,KAAK;;KAEf,MAAM;MACL,IAAInD,IAAI,KAAK,CAACoD,OAAO,IAAII,UAAU,KAAK,MAAM,IAAIA,UAAU,KAAK,IAAI,EAAE;QACrE,OAAO,KAAK;;MAGd,IAAI1D,IAAI,KAAK,CAACqD,OAAO,IAAIK,UAAU,KAAK,MAAM,IAAIA,UAAU,KAAK,SAAS,EAAE;QAC1E,OAAO,KAAK;;;;;;EAOlB,IAAItE,IAAI,IAAIA,IAAI,CAAC0D,MAAM,KAAK,CAAC,KAAK1D,IAAI,CAACF,QAAQ,CAACwE,UAAU,CAAC,IAAItE,IAAI,CAACF,QAAQ,CAACuE,OAAO,CAAC,CAAC,EAAE;IACtF,OAAO,IAAI;GACZ,MAAM,IAAIrE,IAAI,EAAE;;IAEf,OAAOkC,eAAe,CAAClC,IAAI,CAAC;GAC7B,MAAM,IAAI,CAACA,IAAI,EAAE;;IAEhB,OAAO,IAAI;;;EAIb,OAAO,KAAK;AACd,CAAC;;ACpGD,IAAMuE,yBAAyB,gBAAGC,mBAAa,CAA4ClD,SAAS,CAAC;AAErG,AAAO,IAAMmD,oBAAoB,GAAG,SAAvBA,oBAAoBA;EAC/B,OAAOC,gBAAU,CAACH,yBAAyB,CAAC;AAC9C,CAAC;AAQD,SAAwBI,iCAAiCA,CAAA5B,IAAA;MAAG6B,SAAS,GAAA7B,IAAA,CAAT6B,SAAS;IAAEC,YAAY,GAAA9B,IAAA,CAAZ8B,YAAY;IAAEC,QAAQ,GAAA/B,IAAA,CAAR+B,QAAQ;EAC3F,oBACEC,cAAA,CAACR,yBAAyB,CAACS,QAAQ;IAACjD,KAAK,EAAE;MAAE6C,SAAS,EAATA,SAAS;MAAEC,YAAY,EAAZA;KAAe;IAAAC,QAAA,EACpEA;GACiC,CAAC;AAEzC;;SC1BwBG,SAASA,CAACC,CAAM,EAAEC,CAAM;;EAE9C,OAAOD,CAAC,IAAIC,CAAC,IAAI,OAAOD,CAAC,KAAK,QAAQ,IAAI,OAAOC,CAAC,KAAK,QAAQ,GAC3DC,MAAM,CAACpF,IAAI,CAACkF,CAAC,CAAC,CAACxB,MAAM,KAAK0B,MAAM,CAACpF,IAAI,CAACmF,CAAC,CAAC,CAACzB,MAAM;;EAE7C0B,MAAM,CAACpF,IAAI,CAACkF,CAAC,CAAC,CAACG,MAAM,CAAC,UAACC,OAAO,EAAE7F,GAAG;IAAA,OAAK6F,OAAO,IAAIL,SAAS,CAACC,CAAC,CAACzF,GAAG,CAAC,EAAE0F,CAAC,CAAC1F,GAAG,CAAC,CAAC;KAAE,IAAI,CAAC,GACrFyF,CAAC,KAAKC,CAAC;AACb;;ACOA,IAAMI,cAAc,gBAAGf,mBAAa,CAAqB;EACvDgB,OAAO,EAAE,EAAE;EACXC,aAAa,EAAE,EAAE;EACjBC,WAAW,EAAE,SAAbA,WAAWA,KAAU;EACrBC,WAAW,EAAE,SAAbA,WAAWA,KAAU;EACrBC,YAAY,EAAE,SAAdA,YAAYA;CACb,CAAC;AAEF,IAAaC,iBAAiB,GAAG,SAApBA,iBAAiBA;EAC5B,OAAOnB,gBAAU,CAACa,cAAc,CAAC;AACnC,CAAC;AAOD,IAAaO,eAAe,GAAG,SAAlBA,eAAeA,CAAA/C,IAAA;mCAAMgD,qBAAqB;IAArBA,qBAAqB,GAAAC,qBAAA,cAAG,CAAC,GAAG,CAAC,GAAAA,qBAAA;IAAElB,QAAQ,GAAA/B,IAAA,CAAR+B,QAAQ;EACvE,IAAAmB,SAAA,GAAwDC,cAAQ,CAC9D,CAAAH,qBAAqB,oBAArBA,qBAAqB,CAAErC,MAAM,IAAG,CAAC,GAAGqC,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAClE;IAFMI,oBAAoB,GAAAF,SAAA;IAAEG,uBAAuB,GAAAH,SAAA;EAGpD,IAAAI,UAAA,GAAwCH,cAAQ,CAAW,EAAE,CAAC;IAAvDI,YAAY,GAAAD,UAAA;IAAEE,eAAe,GAAAF,UAAA;EAEpC,IAAMV,WAAW,GAAGa,iBAAW,CAAC,UAAC3C,KAAa;IAC5CuC,uBAAuB,CAAC,UAACK,IAAI;MAC3B,IAAIA,IAAI,CAAC3G,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,CAAC+D,KAAK,CAAC;;MAGhB,OAAO7B,KAAK,CAAC0E,IAAI,CAAC,IAAI7E,GAAG,IAAA8E,MAAA,CAAKF,IAAI,GAAE5C,KAAK,EAAC,CAAC,CAAC;KAC7C,CAAC;GACH,EAAE,EAAE,CAAC;EAEN,IAAM+B,YAAY,GAAGY,iBAAW,CAAC,UAAC3C,KAAa;IAC7CuC,uBAAuB,CAAC,UAACK,IAAI;MAC3B,IAAIA,IAAI,CAACxF,MAAM,CAAC,UAAC2F,CAAC;QAAA,OAAKA,CAAC,KAAK/C,KAAK;QAAC,CAACH,MAAM,KAAK,CAAC,EAAE;QAChD,OAAO,CAAC,GAAG,CAAC;OACb,MAAM;QACL,OAAO+C,IAAI,CAACxF,MAAM,CAAC,UAAC2F,CAAC;UAAA,OAAKA,CAAC,KAAK/C,KAAK;UAAC;;KAEzC,CAAC;GACH,EAAE,EAAE,CAAC;EAEN,IAAM6B,WAAW,GAAGc,iBAAW,CAAC,UAAC3C,KAAa;IAC5CuC,uBAAuB,CAAC,UAACK,IAAI;MAC3B,IAAIA,IAAI,CAAC3G,QAAQ,CAAC+D,KAAK,CAAC,EAAE;QACxB,IAAI4C,IAAI,CAACxF,MAAM,CAAC,UAAC2F,CAAC;UAAA,OAAKA,CAAC,KAAK/C,KAAK;UAAC,CAACH,MAAM,KAAK,CAAC,EAAE;UAChD,OAAO,CAAC,GAAG,CAAC;SACb,MAAM;UACL,OAAO+C,IAAI,CAACxF,MAAM,CAAC,UAAC2F,CAAC;YAAA,OAAKA,CAAC,KAAK/C,KAAK;YAAC;;OAEzC,MAAM;QACL,IAAI4C,IAAI,CAAC3G,QAAQ,CAAC,GAAG,CAAC,EAAE;UACtB,OAAO,CAAC+D,KAAK,CAAC;;QAGhB,OAAO7B,KAAK,CAAC0E,IAAI,CAAC,IAAI7E,GAAG,IAAA8E,MAAA,CAAKF,IAAI,GAAE5C,KAAK,EAAC,CAAC,CAAC;;KAE/C,CAAC;GACH,EAAE,EAAE,CAAC;EAEN,IAAMgD,cAAc,GAAGL,iBAAW,CAAC,UAACpG,MAAc;IAChDmG,eAAe,CAAC,UAACE,IAAI;MAAA,UAAAE,MAAA,CAASF,IAAI,GAAErG,MAAM;KAAC,CAAC;GAC7C,EAAE,EAAE,CAAC;EAEN,IAAM0G,iBAAiB,GAAGN,iBAAW,CAAC,UAACpG,MAAc;IACnDmG,eAAe,CAAC,UAACE,IAAI;MAAA,OAAKA,IAAI,CAACxF,MAAM,CAAC,UAAC8F,CAAC;QAAA,OAAK,CAAC9B,SAAS,CAAC8B,CAAC,EAAE3G,MAAM,CAAC;QAAC;MAAC;GACrE,EAAE,EAAE,CAAC;EAEN,oBACE2E,cAAA,CAACQ,cAAc,CAACP,QAAQ;IACtBjD,KAAK,EAAE;MAAE0D,aAAa,EAAEU,oBAAoB;MAAEX,OAAO,EAAEc,YAAY;MAAEX,WAAW,EAAXA,WAAW;MAAEC,YAAY,EAAZA,YAAY;MAAEF,WAAW,EAAXA;KAAc;IAAAZ,QAAA,eAE9GC,cAAA,CAACJ,iCAAiC;MAACC,SAAS,EAAEiC,cAAe;MAAChC,YAAY,EAAEiC,iBAAkB;MAAAhC,QAAA,EAC3FA;KACgC;GACZ,CAAC;AAE9B,CAAC;;SCzFuBkC,gBAAgBA,CAAIjF,KAAQ;EAClD,IAAMkF,GAAG,GAAGC,YAAM,CAAgB5F,SAAS,CAAC;EAE5C,IAAI,CAAC2D,SAAS,CAACgC,GAAG,CAACE,OAAO,EAAEpF,KAAK,CAAC,EAAE;IAClCkF,GAAG,CAACE,OAAO,GAAGpF,KAAK;;EAGrB,OAAOkF,GAAG,CAACE,OAAO;AACpB;;ACKA,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAI/F,CAAgB;EACvCA,CAAC,CAAC+F,eAAe,EAAE;EACnB/F,CAAC,CAACoB,cAAc,EAAE;EAClBpB,CAAC,CAACgG,wBAAwB,EAAE;AAC9B,CAAC;AAED,IAAMC,mBAAmB,GAAG,OAAO5F,MAAM,KAAK,WAAW,GAAG6F,qBAAe,GAAGC,eAAS;AAEvF,SAAwBC,UAAUA,CAChCzH,IAAU,EACV0H,QAAwB,EACxBC,OAAkC,EAClCC,YAAuC;EAEvC,IAAA3B,SAAA,GAAsBC,cAAQ,CAAa,IAAI,CAAC;IAAzCe,GAAG,GAAAhB,SAAA;IAAE4B,MAAM,GAAA5B,SAAA;EAClB,IAAM6B,eAAe,GAAGZ,YAAM,CAAC,KAAK,CAAC;EAErC,IAAMa,QAAQ,GAAwB,EAAEJ,OAAO,YAAY3F,KAAK,CAAC,GAC5D2F,OAAmB,GACpB,EAAEC,YAAY,YAAY5F,KAAK,CAAC,GAC/B4F,YAAwB,GACzBtG,SAAS;EACb,IAAM0G,KAAK,GAAWlG,eAAe,CAAC9B,IAAI,CAAC,GAAGA,IAAI,CAACiI,IAAI,CAACF,QAAQ,oBAARA,QAAQ,CAAE9H,QAAQ,CAAC,GAAGD,IAAI;EAClF,IAAMkI,KAAK,GACTP,OAAO,YAAY3F,KAAK,GAAG2F,OAAO,GAAGC,YAAY,YAAY5F,KAAK,GAAG4F,YAAY,GAAGtG,SAAS;EAE/F,IAAM6G,UAAU,GAAG3B,iBAAW,CAACkB,QAAQ,EAAEQ,KAAK,WAALA,KAAK,GAAI,EAAE,CAAC;EACrD,IAAME,KAAK,GAAGlB,YAAM,CAAiBiB,UAAU,CAAC;EAEhD,IAAID,KAAK,EAAE;IACTE,KAAK,CAACjB,OAAO,GAAGgB,UAAU;GAC3B,MAAM;IACLC,KAAK,CAACjB,OAAO,GAAGO,QAAQ;;EAG1B,IAAMW,eAAe,GAAGrB,gBAAgB,CAACe,QAAQ,CAAC;EAElD,IAAAO,kBAAA,GAA0BzC,iBAAiB,EAAE;IAArCJ,aAAa,GAAA6C,kBAAA,CAAb7C,aAAa;EACrB,IAAM8C,KAAK,GAAG9D,oBAAoB,EAAE;EAEpC6C,mBAAmB,CAAC;IAClB,IAAI,CAAAe,eAAe,oBAAfA,eAAe,CAAE1F,OAAO,MAAK,KAAK,IAAI,CAACY,aAAa,CAACkC,aAAa,EAAE4C,eAAe,oBAAfA,eAAe,CAAE5E,MAAM,CAAC,EAAE;MAChG;;IAGF,IAAM+E,QAAQ,GAAG,SAAXA,QAAQA,CAAInH,CAAgB,EAAEoH,OAAO;;UAAPA,OAAO;QAAPA,OAAO,GAAG,KAAK;;MACjD,IAAI7F,+BAA+B,CAACvB,CAAC,CAAC,IAAI,CAACyB,oBAAoB,CAACzB,CAAC,EAAEgH,eAAe,oBAAfA,eAAe,CAAEK,gBAAgB,CAAC,EAAE;QACrG;;;;MAKF,IAAIzB,GAAG,KAAK,IAAI,EAAE;QAChB,IAAM0B,QAAQ,GAAG1B,GAAG,CAAC2B,WAAW,EAAE;QAClC,IACE,CAACD,QAAQ,YAAYE,QAAQ,IAAIF,QAAQ,YAAYG,UAAU,KAC/DH,QAAQ,CAACI,aAAa,KAAK9B,GAAG,IAC9B,CAACA,GAAG,CAAC+B,QAAQ,CAACL,QAAQ,CAACI,aAAa,CAAC,EACrC;UACA3B,eAAe,CAAC/F,CAAC,CAAC;UAClB;;;MAIJ,IAAK,CAAA4H,SAAA,GAAA5H,CAAC,CAAC4B,MAAsB,aAAxBgG,SAAA,CAA0BC,iBAAiB,IAAI,EAACb,eAAe,YAAfA,eAAe,CAAEc,uBAAuB,GAAE;QAC7F;;MAGFpJ,kBAAkB,CAACiI,KAAK,EAAEK,eAAe,oBAAfA,eAAe,CAAEpI,QAAQ,CAAC,CAACqC,OAAO,CAAC,UAAC7C,GAAG;;QAC/D,IAAMW,MAAM,GAAGD,WAAW,CAACV,GAAG,EAAE4I,eAAe,oBAAfA,eAAe,CAAEhI,cAAc,CAAC;QAEhE,IAAIyD,6BAA6B,CAACzC,CAAC,EAAEjB,MAAM,EAAEiI,eAAe,oBAAfA,eAAe,CAAEtE,eAAe,CAAC,KAAAqF,YAAA,GAAIhJ,MAAM,CAACJ,IAAI,aAAXoJ,YAAA,CAAatJ,QAAQ,CAAC,GAAG,CAAC,EAAE;UAC5G,IAAIuI,eAAe,YAAfA,eAAe,CAAEgB,eAAe,YAAhChB,eAAe,CAAEgB,eAAe,CAAGhI,CAAC,CAAC,EAAE;YACzC;;UAGF,IAAIoH,OAAO,IAAIX,eAAe,CAACX,OAAO,EAAE;YACtC;;UAGF3E,mBAAmB,CAACnB,CAAC,EAAEjB,MAAM,EAAEiI,eAAe,oBAAfA,eAAe,CAAE5F,cAAc,CAAC;UAE/D,IAAI,CAACC,eAAe,CAACrB,CAAC,EAAEjB,MAAM,EAAEiI,eAAe,oBAAfA,eAAe,CAAE1F,OAAO,CAAC,EAAE;YACzDyE,eAAe,CAAC/F,CAAC,CAAC;YAElB;;;UAIF+G,KAAK,CAACjB,OAAO,CAAC9F,CAAC,EAAEjB,MAAM,CAAC;UAExB,IAAI,CAACqI,OAAO,EAAE;YACZX,eAAe,CAACX,OAAO,GAAG,IAAI;;;OAGnC,CAAC;KACH;IAED,IAAMmC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,KAAoB;MACzC,IAAIA,KAAK,CAAC9J,GAAG,KAAK6B,SAAS,EAAE;;QAE3B;;MAGFC,0BAA0B,CAAC/B,MAAM,CAAC+J,KAAK,CAAC/H,IAAI,CAAC,CAAC;MAE9C,IAAK,CAAA6G,eAAe,oBAAfA,eAAe,CAAEmB,OAAO,MAAKlI,SAAS,IAAI,CAAA+G,eAAe,oBAAfA,eAAe,CAAEoB,KAAK,MAAK,IAAI,IAAKpB,eAAe,YAAfA,eAAe,CAAEmB,OAAO,EAAE;QAC3GhB,QAAQ,CAACe,KAAK,CAAC;;KAElB;IAED,IAAMG,WAAW,GAAG,SAAdA,WAAWA,CAAIH,KAAoB;MACvC,IAAIA,KAAK,CAAC9J,GAAG,KAAK6B,SAAS,EAAE;;QAE3B;;MAGFG,8BAA8B,CAACjC,MAAM,CAAC+J,KAAK,CAAC/H,IAAI,CAAC,CAAC;MAElDsG,eAAe,CAACX,OAAO,GAAG,KAAK;MAE/B,IAAIkB,eAAe,YAAfA,eAAe,CAAEoB,KAAK,EAAE;QAC1BjB,QAAQ,CAACe,KAAK,EAAE,IAAI,CAAC;;KAExB;IAED,IAAMI,OAAO,GAAG1C,GAAG,KAAIc,QAAQ,oBAARA,QAAQ,CAAE5G,QAAQ,KAAIA,QAAQ;;IAGrDwI,OAAO,CAACvI,gBAAgB,CAAC,OAAO,EAAEsI,WAAW,CAAC;;IAE9CC,OAAO,CAACvI,gBAAgB,CAAC,SAAS,EAAEkI,aAAa,CAAC;IAElD,IAAIf,KAAK,EAAE;MACTxI,kBAAkB,CAACiI,KAAK,EAAEK,eAAe,oBAAfA,eAAe,CAAEpI,QAAQ,CAAC,CAACqC,OAAO,CAAC,UAAC7C,GAAG;QAAA,OAC/D8I,KAAK,CAAC3D,SAAS,CAACzE,WAAW,CAACV,GAAG,EAAE4I,eAAe,oBAAfA,eAAe,CAAEhI,cAAc,EAAEgI,eAAe,oBAAfA,eAAe,CAAE/H,WAAW,CAAC,CAAC;QACjG;;IAGH,OAAO;;MAELqJ,OAAO,CAACC,mBAAmB,CAAC,OAAO,EAAEF,WAAW,CAAC;;MAEjDC,OAAO,CAACC,mBAAmB,CAAC,SAAS,EAAEN,aAAa,CAAC;MAErD,IAAIf,KAAK,EAAE;QACTxI,kBAAkB,CAACiI,KAAK,EAAEK,eAAe,oBAAfA,eAAe,CAAEpI,QAAQ,CAAC,CAACqC,OAAO,CAAC,UAAC7C,GAAG;UAAA,OAC/D8I,KAAK,CAAC1D,YAAY,CAAC1E,WAAW,CAACV,GAAG,EAAE4I,eAAe,oBAAfA,eAAe,CAAEhI,cAAc,EAAEgI,eAAe,oBAAfA,eAAe,CAAE/H,WAAW,CAAC,CAAC;UACpG;;KAEJ;GACF,EAAE,CAAC2G,GAAG,EAAEe,KAAK,EAAEK,eAAe,EAAE5C,aAAa,CAAC,CAAC;EAEhD,OAAOoC,MAAwB;AACjC;;SCvKwBgC,gBAAgBA;EACtC,IAAA5D,SAAA,GAAwBC,cAAQ,CAAC,IAAIrE,GAAG,EAAU,CAAC;IAA5C7B,IAAI,GAAAiG,SAAA;IAAE6D,OAAO,GAAA7D,SAAA;EACpB,IAAAI,UAAA,GAAsCH,cAAQ,CAAC,KAAK,CAAC;IAA9C6D,WAAW,GAAA1D,UAAA;IAAE2D,cAAc,GAAA3D,UAAA;EAElC,IAAM4D,OAAO,GAAGzD,iBAAW,CAAC,UAAC+C,KAAoB;IAC/C,IAAIA,KAAK,CAAC9J,GAAG,KAAK6B,SAAS,EAAE;;MAE3B;;IAGFiI,KAAK,CAAC9G,cAAc,EAAE;IACtB8G,KAAK,CAACnC,eAAe,EAAE;IAEvB0C,OAAO,CAAC,UAACrD,IAAI;MACX,IAAMyD,OAAO,GAAG,IAAIrI,GAAG,CAAC4E,IAAI,CAAC;MAE7ByD,OAAO,CAAC3H,GAAG,CAAC/C,MAAM,CAAC+J,KAAK,CAAC/H,IAAI,CAAC,CAAC;MAE/B,OAAO0I,OAAO;KACf,CAAC;GACH,EAAE,EAAE,CAAC;EAEN,IAAMC,IAAI,GAAG3D,iBAAW,CAAC;IACvB,IAAI,OAAOrF,QAAQ,KAAK,WAAW,EAAE;MACnCA,QAAQ,CAACyI,mBAAmB,CAAC,SAAS,EAAEK,OAAO,CAAC;MAEhDD,cAAc,CAAC,KAAK,CAAC;;GAExB,EAAE,CAACC,OAAO,CAAC,CAAC;EAEb,IAAMG,KAAK,GAAG5D,iBAAW,CAAC;IACxBsD,OAAO,CAAC,IAAIjI,GAAG,EAAU,CAAC;IAE1B,IAAI,OAAOV,QAAQ,KAAK,WAAW,EAAE;MACnCgJ,IAAI,EAAE;MAENhJ,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE6I,OAAO,CAAC;MAE7CD,cAAc,CAAC,IAAI,CAAC;;GAEvB,EAAE,CAACC,OAAO,EAAEE,IAAI,CAAC,CAAC;EAEnB,IAAME,SAAS,GAAG7D,iBAAW,CAAC;IAC5BsD,OAAO,CAAC,IAAIjI,GAAG,EAAU,CAAC;GAC3B,EAAE,EAAE,CAAC;EAEN,OAAO,CAAC7B,IAAI,EAAE;IAAEoK,KAAK,EAALA,KAAK;IAAED,IAAI,EAAJA,IAAI;IAAEE,SAAS,EAATA,SAAS;IAAEN,WAAW,EAAXA;GAAa,CAAU;AACjE;;;;;;;;"}