@unsetsoft/ryunixjs 1.2.5-canary.11 → 1.2.5-canary.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Ryunix.esm.js +1955 -2019
- package/dist/Ryunix.esm.js.map +1 -1
- package/dist/Ryunix.umd.js +1985 -2017
- package/dist/Ryunix.umd.js.map +1 -1
- package/dist/Ryunix.umd.min.js +1 -1
- package/dist/Ryunix.umd.min.js.map +1 -1
- package/package.json +13 -6
- package/styles/layout-footer.css +313 -0
- package/styles/layout-header.css +239 -0
- package/styles/layout.css +76 -0
- package/styles/ryunix-style.css +834 -0
- package/styles/theme-toggle.css +101 -0
- package/types/index.d.ts +138 -1
package/dist/Ryunix.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ryunix.umd.js","sources":["../src/utils/index.ts","../src/lib/createElement.ts","../src/lib/effects.ts","../src/utils/svgAttributes.ts","../src/lib/priority.ts","../src/lib/dom.ts","../src/lib/portal.ts","../src/lib/hydrationLog.ts","../src/lib/commits.ts","../src/lib/reconciler.ts","../src/lib/bridge.ts","../src/lib/batching.ts","../src/lib/devtools.ts","../src/lib/hooks.ts","../src/lib/hydration.ts","../src/lib/components.ts","../src/lib/hydrationRecover.ts","../src/lib/workers.ts","../src/lib/render.ts","../src/lib/server.ts","../src/lib/memo.ts","../src/lib/lazy.ts","../src/lib/profiler.ts","../src/lib/forwardRef.ts","../src/lib/serverBoundary.ts","../src/lib/errorBoundary.ts","../src/lib/serverActions.ts","../src/lib/devOverlay.ts","../src/lib/index.ts","../src/main.js"],"sourcesContent":["import type { IdleDeadline, RyunixRenderState } from '../types/internal.js'\n\nconst rICFallback = (cb: (deadline: IdleDeadline) => void): number =>\n setTimeout(() => cb({ timeRemaining: () => 1 }), 1) as unknown as number\n\nconst rIC: (cb: (deadline: IdleDeadline) => void) => number =\n typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : rICFallback\n\nconst createRenderState = (): RyunixRenderState => ({\n containerRoot: null,\n nextUnitOfWork: null,\n currentRoot: null,\n wipRoot: null,\n deletions: [],\n wipFiber: null,\n hookIndex: 0,\n effects: [],\n})\n\nlet globalState: RyunixRenderState = createRenderState()\n\nexport const getState = (): RyunixRenderState => globalState\n\nconst CAMEL_TO_KEBAB_REGEX = /[A-Z]/g\n\nexport const RYUNIX_TYPES = Object.freeze({\n TEXT_ELEMENT: Symbol.for('ryunix.text.element'),\n RYUNIX_ELEMENT: Symbol.for('ryunix.element'),\n RYUNIX_EFFECT: Symbol.for('ryunix.effect'),\n RYUNIX_MEMO: Symbol.for('ryunix.memo'),\n RYUNIX_URL_QUERY: Symbol.for('ryunix.urlQuery'),\n RYUNIX_REF: Symbol.for('ryunix.ref'),\n RYUNIX_STORE: Symbol.for('ryunix.store'),\n RYUNIX_REDUCE: Symbol.for('ryunix.reduce'),\n RYUNIX_FRAGMENT: Symbol.for('ryunix.fragment'),\n RYUNIX_CONTEXT: Symbol.for('ryunix.context'),\n RYUNIX_SUSPENSE: Symbol.for('ryunix.suspense'),\n})\n\nexport const STRINGS = Object.freeze({\n OBJECT: 'object',\n FUNCTION: 'function',\n STYLE: 'ryunix-style',\n CLASS_NAME: 'ryunix-class',\n CHILDREN: 'children',\n BOOLEAN: 'boolean',\n STRING: 'string',\n UNDEFINED: 'undefined',\n})\n\nexport const OLD_STRINGS = Object.freeze({\n STYLE: 'style',\n CLASS_NAME: 'className',\n})\n\nexport const EFFECT_TAGS = Object.freeze({\n PLACEMENT: Symbol.for('ryunix.reconciler.status.placement'),\n UPDATE: Symbol.for('ryunix.reconciler.status.update'),\n DELETION: Symbol.for('ryunix.reconciler.status.deletion'),\n NO_EFFECT: Symbol.for('ryunix.reconciler.status.no_effect'),\n HYDRATE: Symbol.for('ryunix.reconciler.status.hydrate'),\n})\n\nexport function flattenArray<T>(arr: T[] | T, depth = 1): T[] {\n if (!Array.isArray(arr)) return [arr]\n if (depth < 1) return arr.slice()\n\n return arr.reduce<T[]>((acc, val) => {\n if (Array.isArray(val) && depth > 0) {\n acc.push(...flattenArray(val, depth - 1))\n } else {\n acc.push(val)\n }\n return acc\n }, [])\n}\n\nexport const is = {\n object: (val: unknown): val is object =>\n val !== null && typeof val === STRINGS.OBJECT,\n function: (val: unknown): val is (...args: never[]) => unknown =>\n typeof val === STRINGS.FUNCTION,\n string: (val: unknown): val is string => typeof val === STRINGS.STRING,\n undefined: (val: unknown): val is undefined =>\n typeof val === STRINGS.UNDEFINED,\n null: (val: unknown): val is null => val === null,\n array: (val: unknown): val is unknown[] => Array.isArray(val),\n promise: (val: unknown): val is Promise<unknown> => val instanceof Promise,\n}\n\nexport function getTypeLabel(type: unknown): string {\n if (typeof type === 'symbol') return type.description || type.toString()\n if (typeof type === 'function') return type.name || 'anonymous'\n return String(type)\n}\n\nexport function nextValidSibling(\n node: ChildNode | null | undefined,\n): ChildNode | null | undefined {\n let next = node\n while (\n next &&\n ((next.nodeType === 3 && !next.nodeValue?.trim()) ||\n next.nodeType === 8 ||\n (next.nodeType === 1 &&\n (next as Element).hasAttribute('data-ryunix-ssr')))\n ) {\n next = next.nextSibling\n }\n return next\n}\n\nexport { CAMEL_TO_KEBAB_REGEX, rIC }\n","import { RYUNIX_TYPES, STRINGS, is } from '../utils/index.js'\nimport type {\n RyunixElement,\n RyunixNode,\n RyunixTextElement,\n} from '../types/internal.js'\n\n/**\n * @param {string | number | boolean} text\n * @returns {RyunixTextElement}\n */\nconst createTextElement = (text) => {\n return {\n type: RYUNIX_TYPES.TEXT_ELEMENT,\n props: {\n nodeValue: String(text),\n children: [],\n },\n }\n}\n\n/**\n * Create a virtual DOM element.\n * @param {string | symbol | RyunixComponent} type\n * @param {RyunixProps | null} [props]\n * @param {...RyunixNode} children\n * @returns {RyunixElement}\n */\nconst createElement = (type, props, ...children) => {\n const safeProps = props || {}\n let rawChildren = children\n if (children.length === 0 && safeProps.children !== undefined) {\n rawChildren = Array.isArray(safeProps.children)\n ? safeProps.children\n : [safeProps.children]\n }\n\n rawChildren = rawChildren\n .flat()\n .filter((child) => child != null && child !== false && child !== true)\n\n /** @type {RyunixNode[]} */\n const normalizedChildren = []\n let currentText = ''\n\n for (const child of rawChildren) {\n if (typeof child !== STRINGS.OBJECT) {\n currentText += String(child)\n } else {\n if (currentText !== '') {\n normalizedChildren.push(createTextElement(currentText))\n currentText = ''\n }\n normalizedChildren.push(child)\n }\n }\n\n if (currentText !== '') {\n normalizedChildren.push(createTextElement(currentText))\n }\n\n return {\n type,\n props: {\n ...safeProps,\n children: normalizedChildren,\n },\n }\n}\n\n/**\n * @param {{ children?: RyunixNode | RyunixNode[] }} props\n * @returns {RyunixElement}\n */\nconst Fragment = (props) => {\n const children = Array.isArray(props.children)\n ? props.children\n : [props.children]\n return createElement(RYUNIX_TYPES.RYUNIX_FRAGMENT, {}, ...children)\n}\n\n/**\n * @param {RyunixElement} element\n * @param {RyunixProps} [props]\n * @param {...RyunixNode} children\n * @returns {RyunixElement}\n */\nconst cloneElement = (\n element: RyunixElement,\n props: Record<string, unknown> = {},\n ...children: RyunixNode[]\n): RyunixElement => {\n if (!element || !is.object(element)) {\n throw new Error('cloneElement requires a valid element')\n }\n\n const newChildren =\n children.length > 0 ? children : (element.props.children ?? [])\n\n return createElement(\n element.type,\n { ...element.props, ...props },\n ...(Array.isArray(newChildren) ? newChildren : [newChildren]),\n )\n}\n\nconst isValidElement = (object: unknown): object is RyunixElement => {\n return (\n is.object(object) &&\n (object as RyunixElement).type !== undefined &&\n (object as RyunixElement).props !== undefined\n )\n}\n\nexport {\n createElement,\n createTextElement,\n Fragment,\n cloneElement,\n isValidElement,\n}\n","import { RYUNIX_TYPES, STRINGS, is } from '../utils/index.js'\n\n/** @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber */\n/** @typedef {import('../types/internal.js').RyunixHook} RyunixHook */\n\n/**\n * @param {string} key\n * @returns {boolean}\n */\nconst isEvent = (key) => key.startsWith('on')\n\n/**\n * @param {string} key\n * @returns {boolean}\n */\nconst isProperty = (key) => key !== STRINGS.CHILDREN && !isEvent(key)\n\n/**\n * @param {Record<string, unknown>} prev\n * @param {Record<string, unknown>} next\n */\nconst isNew = (prev, next) => /** @param {string} key */ (key) => {\n return !Object.is(prev[key], next[key])\n}\n\n/**\n * @param {Record<string, unknown>} next\n */\nconst isGone = (next) => /** @param {string} key */ (key) => !(key in next)\n\n/**\n * @param {RyunixFiber} fiber\n */\nconst cancelEffects = (fiber) => {\n if (!fiber?.hooks?.length) return\n\n fiber.hooks\n .filter(\n (hook) =>\n hook.type === RYUNIX_TYPES.RYUNIX_EFFECT && is.function(hook.cancel),\n )\n .forEach((hook) => {\n try {\n if (hook.cancel) hook.cancel()\n hook.cancel = null\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect cleanup:', error)\n }\n }\n })\n}\n\n/**\n * @param {RyunixFiber} fiber\n */\nconst cancelEffectsDeep = (fiber) => {\n if (!fiber) return\n\n if (fiber.hooks?.length) {\n fiber.hooks\n .filter(\n (hook) =>\n hook.type === RYUNIX_TYPES.RYUNIX_EFFECT && is.function(hook.cancel),\n )\n .forEach((hook) => {\n try {\n if (hook.cancel) hook.cancel()\n hook.cancel = null\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in deep effect cleanup:', error)\n }\n }\n })\n }\n\n if (fiber.child) cancelEffectsDeep(fiber.child)\n if (fiber.sibling) cancelEffectsDeep(fiber.sibling)\n}\n\nexport { cancelEffects, cancelEffectsDeep, isEvent, isProperty, isNew, isGone }\n","const SVG_ATTR_MAP: Readonly<Record<string, string>> = {\n strokeWidth: 'stroke-width',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n fillRule: 'fill-rule',\n fillOpacity: 'fill-opacity',\n clipRule: 'clip-rule',\n clipPath: 'clip-path',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontWeight: 'font-weight',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n dominantBaseline: 'dominant-baseline',\n alignmentBaseline: 'alignment-baseline',\n baselineShift: 'baseline-shift',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n lightingColor: 'lighting-color',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n pointerEvents: 'pointer-events',\n shapeRendering: 'shape-rendering',\n imageRendering: 'image-rendering',\n markerStart: 'marker-start',\n markerMid: 'marker-mid',\n markerEnd: 'marker-end',\n}\n\nexport function toSvgAttrName(name: string): string {\n return SVG_ATTR_MAP[name] ?? name\n}\n\nexport { SVG_ATTR_MAP }\n","import { rIC } from '../utils/index.js'\n\nexport const Priority = {\n IMMEDIATE: 1,\n USER_BLOCKING: 2,\n NORMAL: 3,\n LOW: 4,\n IDLE: 5,\n} as const\n\ntype PriorityLevel = (typeof Priority)[keyof typeof Priority]\n\ninterface PendingUpdate {\n callback: () => void\n priority: number\n timestamp: number\n}\n\nlet currentPriority: number = Priority.NORMAL\n\nlet pendingUpdates: PendingUpdate[] = []\n\nlet isScheduling = false\n\nexport function scheduleUpdate(\n callback: () => void,\n priority: number = Priority.NORMAL,\n): void {\n pendingUpdates.push({ callback, priority, timestamp: Date.now() })\n\n if (!isScheduling) {\n isScheduling = true\n rIC(processPendingUpdates)\n }\n}\n\nfunction processPendingUpdates(deadline: {\n timeRemaining: () => number\n}): void {\n pendingUpdates.sort((a, b) => a.priority - b.priority)\n\n while (pendingUpdates.length > 0 && deadline.timeRemaining() > 1) {\n const update = pendingUpdates.shift()\n if (!update) break\n currentPriority = update.priority\n update.callback()\n }\n\n if (pendingUpdates.length > 0) {\n rIC(processPendingUpdates)\n } else {\n isScheduling = false\n currentPriority = Priority.NORMAL\n }\n}\n\nexport function runWithPriority<T>(\n priority: PriorityLevel | number,\n callback: () => T,\n): T {\n const previousPriority = currentPriority\n currentPriority = priority\n\n try {\n return callback()\n } finally {\n currentPriority = previousPriority\n }\n}\n\nexport function getCurrentPriority(): number {\n return currentPriority\n}\n\nexport function createPriorityDispatch(\n dispatch: (action: unknown, priority?: number) => void,\n): (action: unknown, priority?: number) => void {\n return (action, priority = currentPriority) => {\n scheduleUpdate(() => dispatch(action), priority)\n }\n}\n","import { isEvent, isGone, isNew, isProperty } from './effects.js'\nimport {\n RYUNIX_TYPES,\n STRINGS,\n OLD_STRINGS,\n CAMEL_TO_KEBAB_REGEX,\n is,\n} from '../utils/index.js'\nimport { toSvgAttrName } from '../utils/svgAttributes.js'\nimport { Priority, runWithPriority } from './priority.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n * @typedef {import('../types/internal.js').RyunixDomElement} RyunixDomElement\n */\n\n/**\n * Convert camelCase to kebab-case for CSS properties\n * @param {string} camelCase - CamelCase string\n * @returns {string} Kebab-case string\n */\nconst camelToKebab = (camelCase) => {\n return camelCase.replace(\n CAMEL_TO_KEBAB_REGEX,\n (match) => `-${match.toLowerCase()}`,\n )\n}\n\n/**\n * Apply styles to DOM element\n * @param {HTMLElement} dom - DOM element\n * @param {Object} styleObj - Style object\n */\nconst applyStyles = (dom, styleObj) => {\n if (!is.object(styleObj) || is.null(styleObj)) {\n dom.style.cssText = ''\n return\n }\n\n try {\n const cssText = Object.entries(styleObj)\n .filter(([_, value]) => value != null) // Filter out null/undefined\n .map(([key, value]) => {\n const kebabKey = camelToKebab(key)\n return `${kebabKey}: ${value}`\n })\n .join('; ')\n\n dom.style.cssText = cssText\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error applying styles:', error)\n }\n }\n}\n\n/**\n * Apply CSS classes to DOM element\n * @param {HTMLElement} dom - DOM element\n * @param {string} prevClasses - Previous class string\n * @param {string} nextClasses - Next class string\n */\nconst applyClasses = (dom, prevClasses, nextClasses) => {\n // Allow empty/undefined - just remove classes\n if (!nextClasses || nextClasses.trim() === '') {\n if (prevClasses) {\n const oldClasses = prevClasses.split(/\\s+/).filter(Boolean)\n dom.classList.remove(...oldClasses)\n }\n return\n }\n\n // Remove old classes\n if (prevClasses) {\n const oldClasses = prevClasses.split(/\\s+/).filter(Boolean)\n dom.classList.remove(...oldClasses)\n }\n\n // Add new classes\n const newClasses = nextClasses.split(/\\s+/).filter(Boolean)\n if (newClasses.length > 0) {\n dom.classList.add(...newClasses)\n }\n}\n\n/**\n * Create a DOM element from fiber\n * @param {RyunixFiber} fiber - Fiber node\n * @returns {HTMLElement | SVGElement | Text | null}\n */\nconst createDom = (fiber) => {\n // Fragments and Context Providers don't create real DOM nodes\n if (\n fiber.type === RYUNIX_TYPES.RYUNIX_FRAGMENT ||\n fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT ||\n fiber.type === Symbol.for('ryunix.portal')\n ) {\n return null\n }\n\n let dom\n\n try {\n if (fiber.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n dom = document.createTextNode('')\n } else if (is.string(fiber.type)) {\n const hostType = /** @type {string} */ fiber.type\n const isSvg = [\n 'svg',\n 'path',\n 'g',\n 'circle',\n 'polygon',\n 'rect',\n 'line',\n 'polyline',\n 'ellipse',\n 'text',\n 'tspan',\n 'defs',\n 'use',\n 'symbol',\n 'mask',\n 'clipPath',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'filter',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'feBlend',\n 'feColorMatrix',\n 'feComposite',\n 'foreignObject',\n 'image',\n 'marker',\n 'pattern',\n 'textPath',\n ].includes(hostType)\n\n if (isSvg) {\n dom = document.createElementNS('http://www.w3.org/2000/svg', hostType)\n } else {\n dom = document.createElement(hostType)\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Attempted to create DOM for non-host component:',\n fiber.type,\n )\n }\n return null\n }\n\n updateDom(\n /** @type {HTMLElement | Text} */ /** @type {HTMLElement | SVGElement | Text} */ dom,\n {},\n fiber.props,\n )\n return dom\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error creating DOM element:', error, fiber)\n }\n return null\n }\n}\n\n/**\n * @param {string} attrName\n * @param {unknown} value\n * @returns {unknown}\n */\n/** @type {(attrName: string, value: unknown) => unknown} */\nconst checkAttributeUri = (attrName, value) => {\n if (typeof value !== 'string') return value\n const attr = attrName.toLowerCase()\n if (\n attr !== 'href' &&\n attr !== 'src' &&\n attr !== 'action' &&\n attr !== 'formaction'\n ) {\n return value\n }\n\n const normalized = value.replace(/\\s+/g, '').toLowerCase()\n if (\n normalized.startsWith('javascript:') ||\n normalized.startsWith('vbscript:') ||\n normalized.startsWith('data:')\n ) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `[Ryunix Security] Blocked dangerous ${attrName} URI: ${value}`,\n )\n }\n return 'javascript:void(0)'\n }\n\n return value\n}\n\nexport const validateUri = checkAttributeUri\n\n/**\n * Update DOM element with new props\n * @param {HTMLElement|Text} dom - DOM element\n * @param {Record<string, unknown>} [prevProps] - Previous props\n * @param {Record<string, unknown>} [nextProps] - Next props\n */\nconst updateDom = (\n dom: HTMLElement | Text,\n prevProps: Record<string, unknown> = {},\n nextProps: Record<string, unknown> = {},\n) => {\n if (dom.nodeType === 3) {\n if (prevProps.nodeValue !== nextProps.nodeValue) {\n dom.nodeValue = String(nextProps.nodeValue ?? '')\n }\n return\n }\n const el = dom as HTMLElement\n const domEl = el as import('../types/internal.js').RyunixDomElement\n const handlerMap = domEl._ryunixHandlers\n // Remove old event listeners\n Object.keys(prevProps)\n .filter(isEvent)\n .filter((key) => isGone(nextProps)(key) || isNew(prevProps, nextProps)(key))\n .forEach((propKey) => {\n const eventType = propKey.toLowerCase().substring(2)\n try {\n const originalHandler = prevProps[propKey]\n const wrappedHandler =\n handlerMap?.get(originalHandler) || originalHandler\n el.removeEventListener(eventType, wrappedHandler as EventListener)\n if (handlerMap) {\n handlerMap.delete(originalHandler)\n }\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Error removing event listener:', error)\n }\n }\n })\n\n // Remove old properties\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(nextProps))\n .forEach((propKey) => {\n // Skip special properties\n if (\n propKey === STRINGS.STYLE ||\n propKey === OLD_STRINGS.STYLE ||\n propKey === STRINGS.CLASS_NAME ||\n propKey === OLD_STRINGS.CLASS_NAME\n ) {\n return\n }\n if (el instanceof SVGElement) {\n const attrName = toSvgAttrName(propKey)\n el.removeAttribute(attrName)\n } else {\n /** @type {Record<string, unknown>} */ /** @type {unknown} */ el[\n propKey\n ] = ''\n el.removeAttribute(propKey)\n }\n })\n\n // Set new properties\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n .forEach((propKey) => {\n try {\n // Handle style properties\n if (propKey === STRINGS.STYLE || propKey === OLD_STRINGS.STYLE) {\n const styleValue = nextProps[propKey]\n applyStyles(el, /** @type {Record<string, unknown>} */ styleValue)\n }\n // Handle className properties\n else if (propKey === STRINGS.CLASS_NAME) {\n applyClasses(\n el,\n /** @type {string} */ prevProps[STRINGS.CLASS_NAME],\n /** @type {string} */ nextProps[STRINGS.CLASS_NAME],\n )\n } else if (propKey === OLD_STRINGS.CLASS_NAME) {\n applyClasses(\n el,\n /** @type {string} */ prevProps[OLD_STRINGS.CLASS_NAME],\n /** @type {string} */ nextProps[OLD_STRINGS.CLASS_NAME],\n )\n }\n // Handle other properties\n else {\n // Special handling for value and checked (controlled components)\n if (propKey === 'value' || propKey === 'checked') {\n if (\n /** @type {Record<string, unknown>} */ /** @type {unknown} */ el[\n propKey\n ] !== nextProps[propKey]\n ) {\n /** @type {Record<string, unknown>} */ /** @type {unknown} */ el[\n propKey\n ] = nextProps[propKey]\n }\n } else {\n const isSvgNode = el instanceof SVGElement\n if (isSvgNode) {\n const attrName = toSvgAttrName(propKey)\n /** @type {unknown} */\n const svgValidated = checkAttributeUri(\n attrName,\n nextProps[propKey],\n )\n // viewBox is case sensitive, we respect the camelCase for it.\n el.setAttribute(attrName, /** @type {string} */ svgValidated)\n } else {\n const attrVal = nextProps[propKey]\n /** @type {unknown} */\n const safeValue = checkAttributeUri(propKey, attrVal)\n\n /** @type {Record<string, unknown>} */ /** @type {unknown} */ el[\n propKey\n ] = safeValue\n // Best effort: set html attributes if it's not a primitive component property\n if (\n typeof attrVal !== 'object' &&\n typeof attrVal !== 'function'\n ) {\n el.setAttribute(propKey, /** @type {string} */ safeValue)\n }\n }\n }\n }\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Error setting property ${propKey}:`, error)\n }\n }\n })\n\n // Add new event listeners\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach((propKey) => {\n const eventType = propKey.toLowerCase().substring(2)\n try {\n const handler = (e: Event) => {\n runWithPriority(Priority.IMMEDIATE, () =>\n (nextProps[propKey] as (e: Event) => void)(e),\n )\n }\n // Store the wrapped handler so it can be removed later\n // Note: For simplicity, we could also just wrap it on the fly,\n // but we need the exact reference for removeEventListener.\n // Actually, the current removeDom logic uses prevProps[name],\n // which won't work if we wrap it here and don't store it.\n // Wait, the current removeEventListener call in dom.js:177 is:\n // dom.removeEventListener(eventType, prevProps[name])\n // If we wrap it, we MUST store the wrapper.\n\n // Let's use a weakMap or a property on the DOM node to store the wrappers.\n if (!domEl._ryunixHandlers) {\n domEl._ryunixHandlers = new Map()\n }\n domEl._ryunixHandlers.set(nextProps[propKey], handler)\n\n el.addEventListener(eventType, handler)\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Error adding event listener:', error)\n }\n }\n })\n}\n\n/**\n * Clear all children from a DOM element\n * @param {HTMLElement} container - DOM element to clear\n */\nconst clearContainer = (container) => {\n if (!container) return\n while (container.firstChild) {\n container.removeChild(container.firstChild)\n }\n}\n\nexport {\n createDom,\n updateDom,\n applyStyles,\n applyClasses,\n camelToKebab,\n clearContainer,\n}\n","import type { RyunixNode } from '../types/internal.js'\n\nexport const RYUNIX_PORTAL = Symbol.for('ryunix.portal')\n\nexport interface RyunixPortalElement {\n type: typeof RYUNIX_PORTAL\n props: { children: RyunixNode[] }\n containerInfo: Element | DocumentFragment\n _isPortal: true\n}\n\nexport function createPortal(\n children: RyunixNode | RyunixNode[],\n container: Element | DocumentFragment,\n): RyunixPortalElement | null {\n if (!container) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('createPortal: target container is not a DOM element.')\n }\n return null\n }\n\n return {\n type: RYUNIX_PORTAL,\n props: {\n children: Array.isArray(children) ? children : [children],\n },\n containerInfo: container,\n _isPortal: true,\n }\n}\n","import { getState } from '../utils/index.js'\n\nconst PREFIX = '[Ryunix Hydration]'\n\n/**\n * @param {'warn' | 'error'} level\n * @param {string} message\n */\nconst emit = (level, message) => {\n const line = `${PREFIX} ${message}`\n if (level === 'error') {\n console.error(line)\n } else {\n console.warn(line)\n }\n}\n\nconst shouldReportStrict = () =>\n process.env.NODE_ENV !== 'production' &&\n process.env.RYUNIX_HYDRATION_STRICT === 'true'\n\n/** @param {string} message */\nexport const logHydrationInfo = (message) => {\n if (!shouldReportStrict()) return\n emit('warn', message)\n}\n\n/**\n * Log the first hydration DOM mismatch (tag/text vs client tree).\n * @param {string} detail\n */\nexport const logHydrationMismatch = (detail) => {\n const state = getState()\n if (state.hydrationMismatchReported) return\n state.hydrationMismatchReported = true\n\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn'\n emit(\n level,\n `${detail} Server HTML did not match the client render. Falling back to client-side render.`,\n )\n}\n\n/**\n * @param {string} detail\n */\nexport const logHydrationBoundaryMismatch = (detail) => {\n const state = getState()\n if (state.hydrationBoundaryMismatchReported) return\n state.hydrationBoundaryMismatchReported = true\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn'\n emit(\n level,\n `${detail} Recovering the nearest hydration boundary with a scoped client render.`,\n )\n}\n\n/**\n * @param {string} detail\n */\nexport const logHydrationRecoverable = (detail) => {\n if (!shouldReportStrict()) return\n emit(\n 'warn',\n `Recovered a hydration mismatch (${detail}) without root fallback.`,\n )\n}\n\n/**\n * Log when hydration failed and the SSR container is being cleared.\n * @param {string} [reason]\n */\nexport const logHydrationFailure = (reason = '') => {\n const state = getState()\n if (state.hydrationFailureReported) return\n state.hydrationFailureReported = true\n\n const detail = reason\n ? `${reason} `\n : state.hydrationMismatchReported\n ? ''\n : 'Hydration could not attach to the server HTML. '\n\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn'\n emit(level, `${detail}Clearing #__ryunix and remounting on the client.`)\n}\n\n/**\n * Log when leftover SSR nodes are removed after hydration (soft mismatch).\n * @param {number} count\n */\nexport const logHydrationUnmatchedNodes = (count) => {\n if (!count) return\n const state = getState()\n if (state.hydrationUnmatchedReported) return\n state.hydrationUnmatchedReported = true\n\n emit(\n 'warn',\n `Removed ${count} server-rendered DOM node(s) that were not used by the client tree. This can indicate an SSR/client markup mismatch.`,\n )\n}\n\n/** Log CSR recovery after a failed hydration pass. */\nexport const logHydrationRecovery = () => {\n const state = getState()\n if (state.hydrationRecoveryReported) return\n state.hydrationRecoveryReported = true\n\n emit(\n 'warn',\n 'Remounting the application on the client after hydration failure.',\n )\n}\n\n/** Log scoped boundary recovery after a local mismatch. */\nexport const logHydrationBoundaryRecovery = () => {\n const state = getState()\n if (state.hydrationBoundaryRecoveryReported) return\n state.hydrationBoundaryRecoveryReported = true\n emit('warn', 'Remounting a hydration boundary after local mismatch.')\n}\n\n/**\n * @param {string} reason\n */\nexport const logHydrationFatal = (reason) => {\n emit('error', reason)\n}\n\n/** Reset per-mount hydration log flags (call from init). */\nexport const resetHydrationLogFlags = () => {\n const state = getState()\n state.hydrationMismatchReported = false\n state.hydrationBoundaryMismatchReported = false\n state.hydrationFailureReported = false\n state.hydrationUnmatchedReported = false\n state.hydrationRecoveryReported = false\n state.hydrationBoundaryRecoveryReported = false\n}\n","import { updateDom } from './dom.js'\nimport { cancelEffects, cancelEffectsDeep } from './effects.js'\nimport { EFFECT_TAGS, RYUNIX_TYPES, getState, is } from '../utils/index.js'\nimport { RYUNIX_PORTAL } from './portal.js'\nimport { logHydrationUnmatchedNodes } from './hydrationLog.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n * @typedef {import('../types/internal.js').RyunixRootFiber} RyunixRootFiber\n */\n\n/**\n * Run layout effects (useLayoutEffect) synchronously during commit.\n * These run after DOM mutations but before the browser paints.\n * @param {RyunixFiber} fiber\n */\nconst runLayoutEffects = (fiber) => {\n if (!fiber?.hooks?.length) return\n\n for (let i = 0; i < fiber.hooks.length; i++) {\n /** @type {import('../types/internal.js').RyunixHook & { isLayout?: boolean }} */\n const hook = fiber.hooks[i]\n\n if (\n hook.type === RYUNIX_TYPES.RYUNIX_EFFECT &&\n hook.isLayout &&\n is.function(hook.effect)\n ) {\n // Cancel previous layout cleanup if exists\n if (is.function(hook.cancel)) {\n try {\n hook.cancel()\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in layout effect cleanup:', error)\n }\n }\n }\n\n // Run new layout effect synchronously\n try {\n const cleanup = hook.effect()\n hook.cancel = is.function(cleanup)\n ? /** @type {() => void} */ cleanup\n : null\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in layout effect:', error)\n }\n hook.cancel = null\n }\n\n hook.effect = null\n }\n }\n}\n\n/**\n * Run normal (non-layout) effects asynchronously after paint.\n * @param {RyunixFiber} fiber\n */\nconst runNormalEffects = (fiber) => {\n if (!fiber?.hooks?.length) return\n\n for (let i = 0; i < fiber.hooks.length; i++) {\n /** @type {import('../types/internal.js').RyunixHook & { isLayout?: boolean }} */\n const hook = fiber.hooks[i]\n\n if (\n hook.type === RYUNIX_TYPES.RYUNIX_EFFECT &&\n !hook.isLayout &&\n is.function(hook.effect)\n ) {\n // Cancel previous cleanup if exists\n if (is.function(hook.cancel)) {\n try {\n hook.cancel()\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect cleanup:', error)\n }\n }\n }\n\n // Run new effect\n try {\n const cleanup = hook.effect()\n hook.cancel = is.function(cleanup)\n ? /** @type {() => void} */ cleanup\n : null\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect:', error)\n }\n hook.cancel = null\n }\n\n hook.effect = null\n }\n }\n}\n\n/**\n * The `commitRoot` function commits the changes made to the virtual DOM by updating the actual DOM.\n */\nfunction commitRoot() {\n const state = getState()\n state.deletions.forEach(commitWork)\n\n const finishedWork = /** @type {RyunixRootFiber} */ state.wipRoot\n\n // Swap the currentRoot pointer BEFORE running effects\n // This allows dispatches inside effects to base their new work on the just-finished tree\n state.currentRoot = finishedWork\n\n // After hydration is done, reset the flag and cleanup unconsumed nodes\n if (state.isHydrating || state.hydrationFailed) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(\n `[Ryunix Debug] commitRoot - isHydrating: ${state.isHydrating}, hydrationFailed: ${state.hydrationFailed}`,\n )\n }\n if (state.hydrationFailed) {\n // Defer clearing to recoverHydrationFailureIfNeeded → renderSubtree.\n } else {\n // If there is a cursor left, it means these are SSR nodes that weren't matched\n // by any client fiber. We must remove them to avoid duplication.\n let cursor = state.hydrateCursor\n let removed = 0\n if (\n cursor &&\n process.env.NODE_ENV !== 'production' &&\n process.env.RYUNIX_DEBUG\n ) {\n console.log('[Ryunix Debug] Removing unmatched root siblings.')\n }\n while (cursor) {\n const next = cursor.nextSibling\n if (cursor.parentNode) {\n cursor.parentNode.removeChild(cursor)\n removed++\n }\n cursor = next\n }\n logHydrationUnmatchedNodes(removed)\n }\n\n state.isHydrating = false\n state.hydrationFailed = false\n state.hydrateCursor = null\n }\n\n commitWork(finishedWork.child)\n\n // If wipRoot was not reassigned by a synchronous dispatch during effects, clear it\n if (state.wipRoot === finishedWork) {\n state.wipRoot = null\n }\n}\n\n/**\n * @param {RyunixFiber | null | undefined} fiber\n */\nfunction commitWork(fiber) {\n if (!fiber) {\n return\n }\n\n // Handle portal fibers — they render into a different container\n if (fiber.type === RYUNIX_PORTAL || fiber._isPortal) {\n const portalContainer = fiber.containerInfo\n if (portalContainer) {\n // Process portal children into the portal container\n const portalFiber = fiber.child\n if (portalFiber) {\n commitPortalWork(portalFiber, portalContainer)\n }\n }\n commitWork(fiber.sibling)\n return\n }\n\n let domParentFiber = fiber.parent\n while (domParentFiber && !domParentFiber.dom) {\n domParentFiber = domParentFiber.parent\n }\n\n if (!domParentFiber) {\n return\n }\n\n const domParent = domParentFiber.dom\n\n if (fiber.effectTag === EFFECT_TAGS.PLACEMENT) {\n if (fiber.dom != null) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Appending PLACEMENT:', fiber.type)\n }\n domParent.appendChild(fiber.dom)\n }\n // Layout effects run synchronously during commit\n runLayoutEffects(fiber)\n // Normal effects run after paint\n runNormalEffects(fiber)\n } else if (fiber.effectTag === EFFECT_TAGS.UPDATE) {\n cancelEffects(fiber)\n if (fiber.dom != null) {\n updateDom(fiber.dom, fiber.alternate.props, fiber.props)\n }\n runLayoutEffects(fiber)\n runNormalEffects(fiber)\n } else if (fiber.effectTag === EFFECT_TAGS.HYDRATE) {\n const state = getState()\n if (state.hydrationFailed) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Hydration fallback PLACEMENT:', fiber.type)\n }\n // Since container is cleared on fallback, treat as normal placement\n // No need to check fiber.dom.parentNode !== domParent because the container was cleared.\n if (fiber.dom != null) {\n domParent.appendChild(fiber.dom)\n }\n runLayoutEffects(fiber)\n runNormalEffects(fiber)\n } else {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Hydrating node:', fiber.type)\n }\n if (fiber.dom != null) {\n updateDom(fiber.dom, {}, fiber.props)\n }\n runLayoutEffects(fiber)\n runNormalEffects(fiber)\n }\n } else if (fiber.effectTag === EFFECT_TAGS.DELETION) {\n // Run cleanups BEFORE removing DOM to allow cleanup functions to read DOM state\n cancelEffectsDeep(fiber)\n commitDeletion(fiber, domParent)\n return\n }\n\n commitWork(fiber.child)\n commitWork(fiber.sibling)\n}\n\n/**\n * Commit work for portal children into a specific container\n * @param {RyunixFiber | null | undefined} fiber\n * @param {Element | DocumentFragment} portalContainer\n */\nconst commitPortalWork = (fiber, portalContainer) => {\n if (!fiber) return\n\n if (fiber.effectTag === EFFECT_TAGS.PLACEMENT) {\n if (fiber.dom != null) {\n portalContainer.appendChild(fiber.dom)\n }\n runLayoutEffects(fiber)\n runNormalEffects(fiber)\n } else if (fiber.effectTag === EFFECT_TAGS.UPDATE) {\n cancelEffects(fiber)\n if (fiber.dom != null) {\n updateDom(fiber.dom, fiber.alternate.props, fiber.props)\n }\n runLayoutEffects(fiber)\n runNormalEffects(fiber)\n } else if (fiber.effectTag === EFFECT_TAGS.DELETION) {\n cancelEffectsDeep(fiber)\n commitDeletion(fiber, portalContainer)\n return\n }\n\n commitPortalWork(fiber.child, portalContainer)\n commitPortalWork(fiber.sibling, portalContainer)\n}\n\n/**\n * @param {RyunixFiber} fiber\n * @param {Node} domParent\n */\nconst commitDeletion = (fiber, domParent) => {\n if (fiber.dom) {\n if (fiber.dom.parentNode) {\n fiber.dom.parentNode.removeChild(fiber.dom)\n }\n } else {\n let child = fiber.child\n while (child) {\n commitDeletion(child, domParent)\n child = child.sibling\n }\n }\n}\n\nexport { commitDeletion, commitWork, commitRoot }\n","import { EFFECT_TAGS, getState } from '../utils/index.js'\nimport type {\n RyunixElement,\n RyunixFiber,\n RyunixNode,\n} from '../types/internal.js'\n\nconst reconcileChildren = (wipFiber: RyunixFiber, elements: RyunixNode[]) => {\n const state = getState()\n let index = 0\n let prevSibling: RyunixFiber | undefined\n let isFirstChild = true\n\n const oldFiberMap = new Map<string | number, RyunixFiber>()\n let oldFiber = wipFiber.alternate?.child\n let position = 0\n\n while (oldFiber) {\n const key = oldFiber.key ?? `__index_${oldFiber.index ?? position}__`\n oldFiberMap.set(key, oldFiber)\n oldFiber = oldFiber.sibling\n position++\n }\n\n while (index < elements.length) {\n const element = elements[index] as RyunixElement & {\n key?: string | number\n }\n if (!element) {\n index++\n continue\n }\n\n const key = element.key ?? `__index_${index}__`\n const matchedFiber = oldFiberMap.get(key)\n\n let newFiber: RyunixFiber\n const sameType = matchedFiber && element.type === matchedFiber.type\n\n if (sameType && matchedFiber) {\n newFiber = {\n type: matchedFiber.type,\n props: element.props,\n dom: matchedFiber.dom,\n parent: wipFiber,\n alternate: matchedFiber,\n effectTag: EFFECT_TAGS.UPDATE,\n hooks: matchedFiber.hooks,\n stateError: matchedFiber.stateError,\n key: element.key,\n index,\n }\n oldFiberMap.delete(key)\n } else {\n newFiber = {\n type: element.type,\n props: element.props,\n dom: null,\n parent: wipFiber,\n alternate: null,\n effectTag: state.isHydrating\n ? EFFECT_TAGS.HYDRATE\n : EFFECT_TAGS.PLACEMENT,\n key: element.key,\n index,\n }\n\n if (matchedFiber) {\n matchedFiber.effectTag = EFFECT_TAGS.DELETION\n state.deletions.push(matchedFiber)\n oldFiberMap.delete(key)\n }\n }\n\n if (isFirstChild) {\n wipFiber.child = newFiber\n isFirstChild = false\n } else if (prevSibling) {\n prevSibling.sibling = newFiber\n }\n\n prevSibling = newFiber\n index++\n }\n\n oldFiberMap.forEach((fiber) => {\n fiber.effectTag = EFFECT_TAGS.DELETION\n state.deletions.push(fiber)\n })\n}\n\nexport { reconcileChildren }\n","/**\n * Bridge module to break circular dependencies between hooks and workers.\n */\n\n/** @type {import('../types/internal.js').ScheduleWorkFn | null} */\nlet scheduleWorkFn = null\n\n/**\n * @param {import('../types/internal.js').ScheduleWorkFn} fn\n */\nexport const setScheduleWork = (fn) => {\n scheduleWorkFn = fn\n}\n\n/**\n * @param {import('../types/internal.js').RyunixRootFiber} root\n * @param {number} [priority]\n */\nexport const scheduleWork = (root, priority) => {\n if (scheduleWorkFn) {\n return scheduleWorkFn(root, priority)\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Ryunix] scheduleWork called before being initialized.')\n }\n}\n","let isBatching = false\n\nlet pendingUpdates: Array<() => void> = []\n\nexport function batchUpdates(callback: () => void): void {\n const wasBatching = isBatching\n isBatching = true\n\n try {\n callback()\n } finally {\n isBatching = wasBatching\n\n if (!isBatching && pendingUpdates.length > 0) {\n flushUpdates()\n }\n }\n}\n\nexport function queueUpdate(update: () => void): void {\n pendingUpdates.push(update)\n\n if (!isBatching) {\n flushUpdates()\n }\n}\n\nexport function flushUpdates(): void {\n if (pendingUpdates.length === 0) return\n\n const updates = pendingUpdates\n pendingUpdates = []\n\n updates.forEach((update) => update())\n}\n","import { getState } from '../utils/index.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixComponent} RyunixComponent\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n */\n\n/**\n * Development warnings\n */\nconst isDevelopment = process.env.NODE_ENV !== 'production'\n\n/**\n * @param {boolean} condition\n * @param {string} message\n */\nconst warning = (condition, message) => {\n if (!isDevelopment) return\n if (condition) return\n console.warn(`[Ryunix Warning] ${message}`)\n}\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n if (!isDevelopment) return\n console.error(`[Ryunix Error] ${message}`)\n}\n\n/**\n * Component name detection\n * @param {RyunixComponent | null | undefined} component\n * @returns {string}\n */\nconst getComponentName = (component) => {\n if (!component) return 'Unknown'\n return component.displayName || component.name || 'Anonymous'\n}\n\n/**\n * Hook call validation\n */\nconst validateHookContext = (hookName = 'A hook') => {\n const state = getState()\n if (!state.wipFiber) {\n throw new Error(\n `${hookName} can only be called inside function components. ` +\n 'Make sure you are calling hooks at the top level of your component.',\n )\n }\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n if (!Array.isArray(wipFiber.hooks)) {\n wipFiber.hooks = []\n }\n}\n\n/**\n * Performance tracking utilities\n */\nconst perfTracker = {\n marks: new Map(),\n\n /** @param {string} name */\n mark(name) {\n if (!isDevelopment) return\n this.marks.set(name, Date.now())\n },\n\n /**\n * @param {string} name\n * @param {string} startMark\n */\n measure(name, startMark) {\n if (!isDevelopment) return\n const start = this.marks.get(startMark)\n if (!start) return\n\n const duration = Date.now() - start\n console.log(`[Ryunix Performance] ${name}: ${duration}ms`)\n },\n\n clear() {\n this.marks.clear()\n },\n}\n\n/**\n * Deprecation warnings\n */\n/**\n * @param {string} oldAPI\n * @param {string} newAPI\n * @param {string} version\n */\nconst deprecated = (oldAPI, newAPI, version) => {\n if (!isDevelopment) return\n console.warn(\n `[Ryunix Deprecated] ${oldAPI} is deprecated and will be removed in version ${version}. ` +\n `Use ${newAPI} instead.`,\n )\n}\n\nexport {\n warning,\n error,\n getComponentName,\n validateHookContext,\n perfTracker,\n deprecated,\n}\n","import { RYUNIX_TYPES, getState, is, flattenArray } from '../utils/index.js'\nimport { createElement, Fragment } from './createElement.js'\nimport { scheduleWork } from './bridge.js'\nimport {\n Priority,\n scheduleUpdate,\n runWithPriority,\n getCurrentPriority,\n} from './priority.js'\nimport { RYUNIX_PORTAL } from './portal.js'\nimport { queueUpdate } from './batching.js'\nimport { validateHookContext as validateHookCall } from './devtools.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n * @typedef {import('../types/internal.js').RyunixHook} RyunixHook\n * @typedef {import('../types/internal.js').RyunixRoute} RyunixRoute\n * @typedef {import('../types/internal.js').RyunixRouterContextValue} RyunixRouterContextValue\n * @typedef {import('../types/internal.js').RyunixMetadataTags} RyunixMetadataTags\n * @typedef {import('../types/internal.js').RyunixMetadataOptions} RyunixMetadataOptions\n * @typedef {import('../types/internal.js').RyunixRootFiber} RyunixRootFiber\n * @typedef {import('../types/internal.js').RyunixComponent} RyunixComponent\n */\n\n/**\n * @typedef {{ route: RyunixRoute | { component: RyunixComponent | null }, params: Record<string, string | string[]> }} RouteMatch\n */\n\n/**\n * @param {unknown[] | undefined} oldDeps\n * @param {unknown[] | undefined} newDeps\n * @returns {boolean}\n */\nconst haveDepsChanged = (oldDeps, newDeps) => {\n if (!oldDeps || !newDeps) return true\n if (oldDeps.length !== newDeps.length) return true\n return oldDeps.some((dep, i) => !Object.is(dep, newDeps[i]))\n}\n\n/**\n * @param {unknown} initialState\n * @param {number} [priority]\n * @returns {[unknown, (action: unknown, priority?: number) => void]}\n */\nconst useStore = (initialState, priority = getCurrentPriority()) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return [\n is.function(initialState)\n ? /** @type {() => unknown} */ initialState()\n : initialState,\n () => {},\n ]\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return [\n is.function(initialState)\n ? /** @type {() => unknown} */ initialState()\n : initialState,\n () => {},\n ]\n }\n\n /**\n * @param {unknown} state\n * @param {unknown} action\n */\n const reducer = (state: unknown, action: unknown) =>\n is.function(action) ? (action as (s: unknown) => unknown)(state) : action\n return useReducer(reducer, initialState, undefined, priority)\n}\n\n/**\n * @param {(state: unknown, action: unknown) => unknown} reducer\n * @param {unknown} initialState\n * @param {((initial: unknown) => unknown)=} [init]\n * @param {number} [defaultPriority]\n * @returns {[unknown, (action: unknown, priority?: number) => void]}\n */\nconst useReducer = (\n reducer,\n initialState,\n init,\n defaultPriority = getCurrentPriority(),\n) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return [init ? init(initialState) : initialState, () => {}]\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return [init ? init(initialState) : initialState, () => {}]\n }\n\n validateHookCall()\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_STORE,\n state: oldHook ? oldHook.state : init ? init(initialState) : initialState,\n queue: /** @type {unknown[]} */ [],\n }\n\n if (oldHook?.queue) {\n oldHook.queue.forEach(\n /** @param {unknown} action */ (action) => {\n try {\n hook.state = reducer(hook.state, action)\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in reducer:', error)\n }\n }\n },\n )\n }\n\n /** @param {unknown} action @param {number} [priority] */\n const dispatch = (action, priority = defaultPriority) => {\n if (action === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('dispatch called with undefined action')\n }\n return\n }\n\n hook.queue.push(action)\n\n const currentState = getState()\n const activeRoot =\n /** @type {RyunixRootFiber | null | undefined} */ currentState.currentRoot ||\n currentState.wipRoot\n\n if (!activeRoot) return\n\n const newRoot = /** @type {RyunixRootFiber} */ {\n dom: activeRoot.dom,\n props: activeRoot.props,\n alternate:\n /** @type {RyunixRootFiber | null} */ currentState.currentRoot || null,\n }\n queueUpdate(() => scheduleWork(newRoot, priority))\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n return [hook.state, dispatch]\n}\n\n/**\n * The `useEffect` function in JavaScript is used to manage side effects in functional components by\n * comparing dependencies and executing a callback function when dependencies change.\n * @param callback - The `callback` parameter in the `useEffect` function is a function that will be\n * executed as the effect. This function can perform side effects like data fetching, subscriptions, or\n * DOM manipulations.\n * @param deps - The `deps` parameter in the `useEffect` function stands for dependencies. It is an\n * optional array that contains values that the effect depends on. The effect will only re-run if any\n * of the values in the `deps` array have changed since the last render. If the `deps` array\n * @param {() => void | (() => void)} callback\n * @param {unknown[] | undefined} deps\n * @returns {void}\n */\nconst useEffect = (callback, deps) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return\n }\n\n validateHookCall()\n\n if (!is.function(callback)) {\n throw new Error('useEffect callback must be a function')\n }\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error('useEffect dependencies must be an array or undefined')\n }\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n const hasChanged = haveDepsChanged(oldHook?.deps, deps)\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_EFFECT,\n deps,\n effect: hasChanged ? callback : null,\n cancel: oldHook?.cancel,\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n}\n\n/**\n * The useRef function in JavaScript creates a reference object with an initial value for use in functional components.\n * @param initialValue - The `initialValue` parameter in the `useRef` function represents the initial\n * value that will be assigned to the `current` property of the reference object. This initial value\n * will be used if there is no previous value stored in the hook.\n * @param {unknown} initialValue\n * @returns {{ current: unknown }}\n */\nconst useRef = (initialValue) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return { current: initialValue }\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return { current: initialValue }\n }\n\n validateHookCall()\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_REF,\n value: oldHook\n ? /** @type {{ value: { current: unknown } }} */ oldHook.value\n : { current: initialValue },\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n return /** @type {{ current: unknown }} */ hook.value\n}\n\n/**\n * The useMemo function in JavaScript is used to memoize the result of a computation based on\n * dependencies.\n * @param compute - The `compute` parameter in the `useMemo` function is a callback function that\n * calculates the value that `useMemo` will memoize and return. This function will be called to compute\n * the memoized value when necessary.\n * @param deps - The `deps` parameter in the `useMemo` function refers to an array of dependencies.\n * These dependencies are used to determine whether the memoized value needs to be recalculated or if\n * the previously calculated value can be reused. The `useMemo` hook will recompute the memoized value\n * only if\n * @param {() => unknown} compute\n * @param {unknown[]} deps\n * @returns {unknown}\n */\nconst useMemo = (compute, deps) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return compute()\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return compute()\n }\n\n validateHookCall()\n\n if (!is.function(compute)) {\n throw new Error('useMemo callback must be a function')\n }\n if (!Array.isArray(deps)) {\n throw new Error('useMemo requires a dependencies array')\n }\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n\n let value\n if (oldHook && !haveDepsChanged(oldHook.deps, deps)) {\n value = /** @type {{ value?: unknown }} */ oldHook.value\n } else {\n try {\n value = compute()\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in useMemo computation:', error)\n }\n throw error\n }\n }\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_MEMO,\n value,\n deps,\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n return value\n}\n\n/**\n * The useCallback function in JavaScript ensures that a callback function is memoized based on its\n * dependencies.\n * @param callback - A function that you want to memoize and return for later use.\n * @param deps - The `deps` parameter in the `useCallback` function refers to an array of dependencies.\n * These dependencies are used to determine when the callback function should be re-evaluated and\n * memoized. If any of the dependencies change, the callback function will be re-executed and the\n * memoized value will\n * @param {(...args: never[]) => unknown} callback\n * @param {unknown[]} deps\n * @returns {(...args: never[]) => unknown}\n */\nconst useCallback = (callback, deps) => {\n if (!is.function(callback)) {\n throw new Error('useCallback requires a function as first argument')\n }\n return /** @type {(...args: never[]) => unknown} */ useMemo(\n () => callback,\n deps,\n )\n}\n\n/**\n * The createContext function creates a context provider and useContext hook in JavaScript.\n * @param [contextId] - The `contextId` parameter in the `createContext` function is used to specify\n * the unique identifier for the context being created. It defaults to `RYUNIX_TYPES.RYUNIX_CONTEXT` if\n * not provided.\n * @param [defaultValue] - The `defaultValue` parameter in the `createContext` function is used to\n * specify the default value that will be returned by the `useContext` hook if no provider is found in\n * the component tree. It is an optional parameter, and if not provided, an empty object `{}` will be\n * used as\n * @param {string | symbol} [contextId]\n * @param {unknown} [defaultValue]\n * @returns {{ Provider: RyunixComponent & { _contextId?: string | symbol }, useContext: (ctxID?: string | symbol) => unknown }}\n */\nconst createContext = (\n contextId: string | symbol = RYUNIX_TYPES.RYUNIX_CONTEXT,\n defaultValue: unknown = {},\n) => {\n /** @param {{ value?: unknown, children?: import('../types/internal.js').RyunixNode }} props */\n const Provider = ({ value, children }) => {\n return createElement(\n RYUNIX_TYPES.RYUNIX_CONTEXT,\n { value, children, _contextId: contextId },\n ...flattenArray([children]),\n )\n }\n\n Provider._contextId = contextId\n\n /** @param {string | symbol} [ctxID] */\n const useContext = (ctxID = contextId) => {\n const state = getState()\n if (state.isServerRendering) {\n const ssrContexts =\n /** @type {Record<string | symbol, unknown> | undefined} */ state.ssrContexts\n return ssrContexts && ssrContexts[ctxID] !== undefined\n ? ssrContexts[ctxID]\n : defaultValue\n }\n\n validateHookCall()\n\n /** @type {RyunixFiber | null | undefined} */\n let fiber = /** @type {RyunixFiber} */ state.wipFiber\n\n while (fiber) {\n if (fiber._contextId === ctxID && fiber._contextValue !== undefined) {\n return fiber._contextValue\n }\n const fiberType = fiber.type as\n | import('../types/internal.js').RyunixComponent\n | undefined\n if (fiberType?._contextId === ctxID && fiber.props?.value !== undefined) {\n return fiber.props.value\n }\n fiber = fiber.parent\n }\n return defaultValue\n }\n\n return {\n Provider:\n /** @type {RyunixComponent & { _contextId?: string | symbol }} */ Provider,\n useContext,\n }\n}\n\n/**\n * The `useQuery` function extracts query parameters from the URL in a browser environment.\n * @returns {Record<string, string>}\n */\nconst useQuery = () => {\n if (typeof window === 'undefined') return {}\n\n const searchParams = new URLSearchParams(window.location.search)\n /** @type {Record<string, string>} */\n const query = {}\n for (const [key, value] of searchParams.entries()) {\n query[key] = value\n }\n return query\n}\n\n/**\n * The function `useHash` in JavaScript is used to manage and update the hash portion of the URL in a\n * web application.\n * @returns {string}\n */\nconst useHash = () => {\n if (typeof window === 'undefined') return ''\n\n const [hash, setHash] = useStore(window.location.hash)\n useEffect(() => {\n const onHashChange = () => setHash(window.location.hash)\n window.addEventListener('hashchange', onHashChange)\n return () => window.removeEventListener('hashchange', onHashChange)\n }, [])\n return /** @type {string} */ hash\n}\n\n/**\n * The `useMetadata` function in JavaScript is used to dynamically update metadata tags in the document\n * head based on provided tags and options.\n * @param [tags] - The `tags` parameter in the `useMetadata` function is an object that contains\n * metadata information for the webpage. It can include properties like `pageTitle`, `canonical`, and\n * other custom metadata tags like `og:title`, `og:description`, `twitter:title`,\n * `twitter:description`, etc. These tags\n * @param [options] - The `options` parameter in the `useMetadata` function is an object that can\n * contain the following properties:\n * - `title`: An object that can have the following properties:\n * - `template`: A string that defines the template for the page title. It can include a placeholder\n * `%s` that will be replaced with the actual page title.\n * - `prefix`: A string that will be used as the default title if no specific page title is provided.\n * This hook can't be reached by google crawler.\n * @param {RyunixMetadataTags} [tags]\n * @param {RyunixMetadataOptions} [options]\n * @returns {void}\n */\n\nconst useMetadata = (\n tags: import('../types/internal.js').RyunixMetadataTags = {},\n options: import('../types/internal.js').RyunixMetadataOptions = {},\n) => {\n const state = getState()\n if (state.isServerRendering) {\n state.ssrMetadata = { ...state.ssrMetadata, ...tags }\n return\n }\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n // ...\n\n let finalTitle = 'Ryunix App'\n const template = options.title?.template\n const defaultTitle = options.title?.prefix || 'Ryunix App'\n const pageTitle = tags.pageTitle || tags.title\n\n if (is.string(pageTitle) && pageTitle.trim()) {\n finalTitle = template?.includes('%s')\n ? template.replace('%s', pageTitle)\n : pageTitle\n } else {\n finalTitle = defaultTitle\n }\n\n document.title = finalTitle\n\n if (tags.canonical) {\n let link = document.querySelector('link[rel=\"canonical\"]')\n if (!link) {\n link = document.createElement('link')\n link.setAttribute('rel', 'canonical')\n document.head.appendChild(link)\n }\n link.setAttribute('href', tags.canonical)\n }\n\n Object.entries(tags).forEach(([key, value]) => {\n if (['title', 'pageTitle', 'canonical'].includes(key)) return\n\n const isProperty = key.startsWith('og:') || key.startsWith('twitter:')\n const selector = `meta[${isProperty ? 'property' : 'name'}='${key}']`\n let meta = document.head.querySelector(selector)\n\n if (!meta) {\n meta = document.createElement('meta')\n meta.setAttribute(isProperty ? 'property' : 'name', key)\n document.head.appendChild(meta)\n }\n meta.setAttribute('content', value)\n })\n }, [JSON.stringify(tags), JSON.stringify(options)])\n}\n\n// Router Context\n/** @type {ReturnType<typeof createContext>} */\nconst RouterContext = createContext(\n 'ryunix.navigation',\n /** @type {RyunixRouterContextValue} */ {\n location: '/',\n params: {},\n query: {},\n /** @param {string} _path */\n navigate: (_path) => {},\n route: null,\n },\n)\n\n/**\n * @param {RyunixRoute[]} routes\n * @param {string} path\n * @returns {RouteMatch}\n */\nconst findRoute = (routes, path) => {\n const pathname = path.split('?')[0].split('#')[0]\n const notFoundRoute = routes.find((route) => route.NotFound)\n const notFound = notFoundRoute\n ? { route: { component: notFoundRoute.NotFound }, params: {} }\n : { route: { component: null }, params: {} }\n\n for (const route of routes) {\n if (route.subRoutes) {\n const childRoute = findRoute(route.subRoutes, path)\n if (childRoute) return childRoute\n }\n if (route.path === '*') return notFound\n if (!route.path || typeof route.path !== 'string') continue\n\n /** @type {{ key: string, isCatchAll: boolean }[]} */\n const keys = []\n const pattern = new RegExp(\n `^${route.path.replace(\n /:(\\.\\.\\.)?(\\w+)/g,\n (\n /** @type {string} */ match,\n /** @type {string | undefined} */ isCatchAll,\n /** @type {string} */ key,\n ) => {\n keys.push({ key, isCatchAll: !!isCatchAll })\n return isCatchAll ? '(.+)' : '([^/]+)'\n },\n )}$`,\n )\n\n const matchPath = pathname.match(pattern)\n if (matchPath) {\n const params = keys.reduce(\n (acc, keyObj, index) => {\n const val = matchPath[index + 1]\n acc[keyObj.key] = keyObj.isCatchAll && val ? val.split('/') : val\n return acc\n },\n /** @type {Record<string, string | string[]>} */ {},\n )\n return { route, params }\n }\n }\n return notFound\n}\n\n/**\n * @returns {string}\n */\nconst getSsrPathname = () => {\n const pathname = globalThis?.window?.location?.pathname\n if (typeof pathname === 'string' && pathname) {\n return pathname.split('?')[0].split('#')[0]\n }\n return '/'\n}\n\n/**\n * The `RouterProvider` component manages routing in a Ryunix application by updating the location based\n * on window events and providing context for the current route.\n * @param {{ routes: RyunixRoute[], children?: import('../types/internal.js').RyunixNode }} props\n * @returns {import('./createElement.js').RyunixElement}\n */\nconst RouterProvider = ({ routes, children }) => {\n // SSR: Return server-safe version without hooks\n if (typeof window === 'undefined') {\n const location = getSsrPathname()\n const currentRouteData = findRoute(routes, location)\n /** @type {RyunixRouterContextValue} */\n const contextValue = {\n location,\n params: currentRouteData.params || {},\n query: {},\n navigate: () => {},\n route: currentRouteData.route,\n }\n return createElement(\n /** @type {string | symbol | Function} */ RouterContext.Provider,\n { value: contextValue },\n Fragment({ children }),\n )\n }\n\n const [location, setLocation] =\n /** @type {[string, (action: unknown, priority?: number) => void]} */ useStore(\n window.location.pathname,\n )\n\n useEffect(() => {\n const update = () => setLocation(window.location.pathname)\n window.addEventListener('popstate', update)\n window.addEventListener('hashchange', update)\n return () => {\n window.removeEventListener('popstate', update)\n window.removeEventListener('hashchange', update)\n }\n }, [])\n\n /** @param {string} path */\n const navigate = (path) => {\n if (typeof window !== 'undefined' && window.__RYUNIX_MPA__) {\n window.location.assign(path)\n return\n }\n window.history.pushState({}, '', path)\n setLocation(path)\n }\n\n const currentRouteData = findRoute(routes, location)\n const query = useQuery()\n\n /** @type {RyunixRouterContextValue} */\n const contextValue = {\n location,\n params: currentRouteData.params || {},\n query,\n navigate,\n route: currentRouteData.route,\n }\n\n return createElement(\n /** @type {string | symbol | Function} */ RouterContext.Provider,\n { value: contextValue },\n Fragment({ children }),\n )\n}\n\n/**\n * The function `useRouter` returns the context of the Router for navigation in a Ryunix application.\n * @returns {RyunixRouterContextValue}\n */\nconst useRouter =\n (): import('../types/internal.js').RyunixRouterContextValue => {\n return RouterContext.useContext(\n 'ryunix.navigation',\n ) as import('../types/internal.js').RyunixRouterContextValue\n }\n\n/**\n * The `Children` function in JavaScript uses router hooks to handle scrolling to a specific element\n * based on the hash in the URL.\n * @returns {import('./createElement.js').RyunixElement | null}\n */\nconst Children = () => {\n const { route, params, query, location } = useRouter()\n if (!route || !route.component) return null\n const hash = useHash()\n\n useEffect(() => {\n if (hash) {\n const id = /** @type {string} */ hash.slice(1)\n const el = document.getElementById(id)\n if (el) el.scrollIntoView({ block: 'start', behavior: 'smooth' })\n }\n }, [hash])\n\n return createElement(\n /** @type {string | symbol | Function} */ route.component,\n {\n key: location,\n params,\n query,\n hash,\n location,\n },\n )\n}\n\n/**\n * usePathname - Returns the current pathname\n * @returns {string}\n */\nconst usePathname = () => {\n const { location } = useRouter()\n return location.split('?')[0].split('#')[0]\n}\n\n/**\n * useSearchParams - Returns the current URLSearchParams object\n * @returns {URLSearchParams}\n */\nconst useSearchParams = () => {\n const { query } = useRouter()\n return new URLSearchParams(query)\n}\n\n/**\n * Link - Base link component for SPA navigation\n * Supports optional prefetching of lazy components.\n * @param {{ to: string, prefetch?: boolean, children?: import('../types/internal.js').RyunixNode } & Record<string, unknown>} props\n * @returns {import('./createElement.js').RyunixElement}\n */\nconst Link = ({ to, prefetch = true, ...props }) => {\n const { navigate } = useRouter()\n\n /** @param {MouseEvent} e */\n const handleClick = (e) => {\n if (e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return\n }\n\n e.preventDefault()\n navigate(to)\n }\n\n const handleMouseEnter = () => {\n if (prefetch && typeof window !== 'undefined') {\n // Logic for prefetching could go here if route component is known\n }\n }\n\n const { className: _omitClassName, ...cleanedProps } = props\n\n return createElement(\n 'a',\n {\n href: to,\n onClick: handleClick,\n onMouseEnter: handleMouseEnter,\n className: props.className || props['ryunix-class'],\n ...cleanedProps,\n },\n props.children,\n )\n}\n\n/**\n * The NavLink function in JavaScript is a component that generates a link element with customizable\n * classes and active state based on the current location.\n * @param {{ to: string, exact?: boolean, children?: import('../types/internal.js').RyunixNode } & Record<string, unknown>} props\n * @returns {import('./createElement.js').RyunixElement}\n */\nconst NavLink = ({ to, exact = false, ...props }) => {\n const { location, navigate } = useRouter()\n const isActive = exact ? location === to : location.startsWith(to)\n\n /** @param {string | ((args: { isActive: boolean }) => string) | undefined} cls */\n const resolveClass = (cls) =>\n typeof cls === 'function' ? cls({ isActive }) : cls || ''\n\n /** @param {MouseEvent} e */\n const handleClick = (e) => {\n if (e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return\n }\n e.preventDefault()\n navigate(to)\n }\n\n const classAttrName = props['ryunix-class'] ? 'ryunix-class' : 'className'\n const classAttrValue = resolveClass(\n /** @type {string | ((args: { isActive: boolean }) => string) | undefined} */ props[\n 'ryunix-class'\n ] || props.className,\n )\n\n const {\n ['ryunix-class']: _omitRyunix,\n className: _omitClassName,\n ...cleanedProps\n } = props\n\n return createElement(\n 'a',\n {\n href: to,\n onClick: handleClick,\n [classAttrName]: classAttrValue,\n ...cleanedProps,\n },\n props.children,\n )\n}\n\n/**\n * useStore with priority support\n * @param {unknown} initialState\n * @returns {[unknown, (action: unknown, priority?: number) => void]}\n */\nconst useStorePriority = (initialState) => {\n /** @param {unknown} state @param {{ value: unknown, priority?: number }} action */\n const reducer = (state, action) =>\n typeof action === 'function'\n ? /** @type {{ value: (s: unknown) => unknown }} */ action.value(state)\n : action.value\n\n const [state, baseDispatch] = useReducer(reducer, initialState, undefined)\n\n /** @param {unknown} action @param {number} [priority] */\n const dispatch = (action, priority = Priority.NORMAL) => {\n const wrappedAction = {\n value: action,\n priority,\n }\n\n scheduleUpdate(() => baseDispatch(wrappedAction, priority), priority)\n }\n\n return [state, dispatch]\n}\n\n/**\n * useTransition - Mark updates as non-urgent\n * @returns {[boolean, (callback: () => void) => void]}\n */\nconst useTransition = () => {\n const [isPending, setIsPending] = useStorePriority(false)\n\n /** @param {() => void} callback */\n const startTransition = (callback) => {\n setIsPending(true, Priority.IMMEDIATE)\n\n setTimeout(() => {\n runWithPriority(Priority.LOW, () => {\n callback()\n setIsPending(false, Priority.LOW)\n })\n }, 0)\n }\n\n return [/** @type {boolean} */ isPending, startTransition]\n}\n\n/**\n * useDeferredValue - Defer value updates\n * @param {unknown} value\n * @returns {unknown}\n */\nconst useDeferredValue = (value) => {\n const [deferredValue, setDeferredValue] = useStorePriority(value)\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n setDeferredValue(value, Priority.LOW)\n }, 100)\n\n return () => clearTimeout(timeout)\n }, [value])\n\n return deferredValue\n}\n\n/**\n * The `usePersitentStore` function manages state using local storage in JavaScript, allowing for easy\n * storage and retrieval of data.\n * @param key - The `key` parameter in the `usePersitentStore` function is a string that represents the key\n * under which the data will be stored in the browser's local storage. It is used to retrieve and store\n * data associated with this specific key.\n * @param [initialState] - The `initialState` parameter in the `usePersitentStore` function is the initial\n * value that will be used if there is no data stored in the local storage under the specified `key`.\n * It serves as the default value for the state if no data is retrieved from the local storage.\n * @param {string} key\n * @param {unknown} [initialState]\n * @returns {[unknown, (value: unknown) => void]}\n */\nconst usePersistentStore = (key, initialState = '') => {\n const [state, dispatch] = useStore(() => {\n try {\n const item = window.localStorage.getItem(key)\n return item ? JSON.parse(item) : initialState\n } catch (error) {\n return initialState\n }\n })\n\n /**\n * The function `setValue` dispatches a value and stores it in the local storage as a JSON string,\n * handling any errors with a console log.\n * @param value - The `value` parameter in the `setValue` function is the data that you want to set.\n * It is dispatched to update the state and then stored in the browser's local storage after being\n * converted to a JSON string.\n * @param {unknown} value\n */\n const setValue = (value) => {\n try {\n dispatch(value)\n window.localStorage.setItem(key, JSON.stringify(value))\n } catch (error) {\n console.error(error)\n }\n }\n\n return [state, setValue]\n}\n\n/**\n * The `useSwitch` function returns a state value and a toggle function to switch the state between\n * true and false.\n * @param [initialState=false] - The `initialState` parameter in the `useSwitch` function is used to\n * set the initial value of the state. If no value is provided when calling `useSwitch`, the default\n * initial state will be `false`.\n * @param {boolean} [initialState]\n * @returns {[boolean, () => void]}\n */\nconst useSwitch = (initialState = false) => {\n const [state, dispatch] = useStore(initialState)\n\n /**\n * The function `toggle` toggles the state by dispatching the opposite value of the current state.\n * Uses functional update to avoid stale closure issues with rapid calls.\n */\n const toggle = () => {\n dispatch(/** @param {boolean} prev */ (prev) => !prev)\n }\n\n return [/** @type {boolean} */ state, toggle]\n}\n\n/**\n * useLayoutEffect - Like useEffect but runs synchronously after DOM mutations\n * and before the browser paints. Use for DOM measurements.\n * @param {() => void | (() => void)} callback - Effect callback\n * @param {unknown[] | undefined} deps - Dependencies array\n * @returns {void}\n */\nconst useLayoutEffect = (callback, deps) => {\n // SSR safety check - more reliable than state.isServerRendering\n if (typeof window === 'undefined') {\n return\n }\n\n const state = getState()\n if (state.isServerRendering) {\n return\n }\n\n validateHookCall()\n\n if (!is.function(callback)) {\n throw new Error('useLayoutEffect callback must be a function')\n }\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error(\n 'useLayoutEffect dependencies must be an array or undefined',\n )\n }\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n const hasChanged = haveDepsChanged(oldHook?.deps, deps)\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_EFFECT,\n deps,\n effect: hasChanged ? callback : null,\n cancel: oldHook?.cancel,\n isLayout: true, // Flag to run synchronously during commit\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n}\n\n// Counter for deterministic ID generation\nlet idCounter = 0\n\n/**\n * Reset the idCounter for useId - call this before each SSR renderToString\n * to ensure deterministic IDs across multiple renders\n * @returns {void}\n */\nconst resetIdCounter = () => {\n idCounter = 0\n}\n\n/**\n * useId - Generate a deterministic, unique ID that is stable across SSR and hydration.\n * @returns {string} A unique ID string\n */\nconst useId = () => {\n const state = getState()\n\n if (state.isServerRendering) {\n // On server, use a simple incrementing counter (reset per renderToString call)\n return `:r${idCounter++}:`\n }\n\n validateHookCall()\n\n const { hookIndex } = state\n const wipFiber = /** @type {RyunixFiber} */ state.wipFiber\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex]\n\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_REF,\n value: oldHook\n ? /** @type {{ value: string }} */ oldHook.value\n : `:r${idCounter++}:`,\n }\n\n wipFiber.hooks[hookIndex] = hook as import('../types/internal.js').RyunixHook\n state.hookIndex++\n return /** @type {string} */ /** @type {{ value: string }} */ hook.value\n}\n\n/**\n * useDebounce - Returns a debounced version of the value that only updates\n * after the specified delay has passed since the last change.\n * @param {unknown} value - Value to debounce\n * @param {number} delay - Delay in milliseconds (default: 300)\n * @returns {unknown} Debounced value\n */\nconst useDebounce = (value, delay = 300) => {\n const [debouncedValue, setDebouncedValue] = useStore(value)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => clearTimeout(timer)\n }, [value, delay])\n\n return debouncedValue\n}\n\n/**\n * useThrottle - Returns a throttled version of the value that only updates\n * at most once per specified interval.\n * @param {unknown} value - Value to throttle\n * @param {number} interval - Minimum interval in milliseconds (default: 300)\n * @returns {unknown} Throttled value\n */\nconst useThrottle = (value, interval = 300) => {\n const [throttledValue, setThrottledValue] = useStore(value)\n const lastUpdated = useRef(Date.now()) as { current: number }\n\n useEffect(() => {\n const now = Date.now()\n const elapsed = now - (lastUpdated.current as number)\n\n if (elapsed >= interval) {\n lastUpdated.current = now\n setThrottledValue(value)\n } else {\n const timer = setTimeout(() => {\n lastUpdated.current = Date.now()\n setThrottledValue(value)\n }, interval - elapsed)\n\n return () => clearTimeout(timer)\n }\n }, [value, interval])\n\n return throttledValue\n}\n\nexport {\n useStore,\n useReducer,\n useEffect,\n useLayoutEffect,\n useRef,\n useMemo,\n useCallback,\n createContext,\n useQuery,\n useHash,\n useMetadata,\n useId,\n resetIdCounter,\n useDebounce,\n useThrottle,\n useStorePriority,\n useTransition,\n useDeferredValue,\n usePersistentStore,\n usePersistentStore as usePersitentStore, // backwards-compatible alias\n useSwitch,\n // Router exports\n RouterProvider,\n useRouter,\n Children,\n NavLink,\n Link,\n usePathname,\n useSearchParams,\n}\n","import { getState } from '../utils/index.js'\nimport type {\n HydrationPolicy,\n RyunixFiber,\n RyunixNode,\n ScopedRecovery,\n} from '../types/internal.js'\n\nexport const getHydrationPolicy = (): HydrationPolicy => {\n const env = typeof process !== 'undefined' && process.env ? process.env : {}\n const recoverRaw = env.RYUNIX_HYDRATION_RECOVER || 'boundary'\n const boundariesRaw = env.RYUNIX_HYDRATION_BOUNDARIES || 'route'\n const strict = env.RYUNIX_HYDRATION_STRICT === 'true'\n const recover: HydrationPolicy['recover'] =\n recoverRaw === 'none' || recoverRaw === 'root' ? recoverRaw : 'boundary'\n const boundaries: HydrationPolicy['boundaries'] =\n boundariesRaw === 'server-only' || boundariesRaw === 'all-layouts'\n ? boundariesRaw\n : 'route'\n return {\n recover,\n boundaries,\n strict,\n }\n}\n\n/**\n */\nexport const findNearestHydrationBoundary = (\n fiber: RyunixFiber | null | undefined,\n): RyunixFiber | null => {\n let current: RyunixFiber | null = fiber || null\n while (current) {\n const props = current.props\n if (\n props &&\n Object.prototype.hasOwnProperty.call(\n props,\n 'data-ryunix-hydrate-boundary',\n )\n ) {\n return current\n }\n\n const type = current.type\n const maybeTyped = type as { ryunix_type?: string } | undefined\n if (\n type &&\n typeof type === 'function' &&\n (maybeTyped?.ryunix_type === 'RYUNIX_HYDRATION_BOUNDARY' ||\n maybeTyped?.ryunix_type === 'RYUNIX_SERVER_BOUNDARY')\n ) {\n return current\n }\n current = current.parent || null\n }\n return null\n}\n\n/**\n */\nexport const getBoundaryDom = (fiber: RyunixFiber | null): Element | null => {\n if (!fiber) return null\n if (fiber.dom && fiber.dom.nodeType === 1) {\n const el = fiber.dom as Element\n if (el.hasAttribute('data-ryunix-hydrate-boundary')) return el\n }\n\n let child = fiber.child || null\n while (child) {\n if (child.dom && child.dom.nodeType === 1) {\n const el = child.dom as Element\n if (el.hasAttribute('data-ryunix-hydrate-boundary')) return el\n }\n child = child.child || child.sibling || null\n }\n\n return null\n}\n\n/**\n */\nexport const skipHydrationSubtree = (\n cursor: ChildNode | null,\n boundaryRoot: Element | null,\n): ChildNode | null => {\n if (!cursor || !boundaryRoot) return cursor\n if (cursor === boundaryRoot) return boundaryRoot.nextSibling\n if (boundaryRoot.contains(cursor)) return boundaryRoot.nextSibling\n return cursor\n}\n\n/**\n */\nexport const enqueueScopedRecovery = (\n boundaryFiber: RyunixFiber | null,\n boundaryDom: Element | null,\n resumeCursor: ChildNode | null,\n) => {\n if (!boundaryFiber || !boundaryDom) return\n const state = getState()\n const queue: ScopedRecovery[] = state.scopedRecoveryQueue || []\n queue.push({\n boundaryFiber,\n boundaryDom,\n resumeCursor,\n element: (Array.isArray(boundaryFiber.props?.children)\n ? boundaryFiber.props.children[0]\n : boundaryFiber.props?.children) as RyunixNode,\n })\n state.scopedRecoveryQueue = queue\n}\n","import { createDom } from './dom.js'\nimport { reconcileChildren } from './reconciler.js'\nimport {\n getState,\n RYUNIX_TYPES,\n EFFECT_TAGS,\n nextValidSibling,\n} from '../utils/index.js'\nimport { createElement } from './createElement.js'\nimport { createContext } from './hooks.js'\nimport {\n logHydrationBoundaryMismatch,\n logHydrationFatal,\n logHydrationMismatch,\n logHydrationRecoverable,\n} from './hydrationLog.js'\nimport {\n enqueueScopedRecovery,\n findNearestHydrationBoundary,\n getBoundaryDom,\n getHydrationPolicy,\n skipHydrationSubtree,\n} from './hydration.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n * @typedef {import('../types/internal.js').RyunixComponent} RyunixComponent\n * @typedef {import('../types/internal.js').RyunixNode} RyunixNode\n */\n\n/**\n * @param {RyunixFiber} fiber\n */\nconst updateFunctionComponent = (fiber) => {\n const state = getState()\n state.wipFiber = fiber\n state.hookIndex = 0\n /** @type {RyunixFiber} */ state.wipFiber.hooks = []\n\n if (state.isHydrating) {\n fiber.effectTag = EFFECT_TAGS.HYDRATE\n }\n\n // Memo bailout: skip re-render if props haven't changed\n const componentType =\n /** @type {RyunixComponent & { _arePropsEqual?: (prev: Record<string, unknown>, next: Record<string, unknown>) => boolean }} */ fiber.type\n if (componentType._isMemo && fiber.alternate) {\n const { children: _pc, ...prevRest } = fiber.alternate.props || {}\n const { children: _nc, ...nextRest } = fiber.props || {}\n if (componentType._arePropsEqual?.(prevRest, nextRest)) {\n fiber.hooks = fiber.alternate.hooks\n const oldChild = fiber.alternate.child\n if (oldChild) {\n oldChild.parent = fiber\n fiber.child = oldChild\n }\n return\n }\n }\n\n let children = [\n /** @type {RyunixNode} */ /** @type {(props?: Record<string, unknown>) => unknown} */ componentType(\n fiber.props,\n ),\n ]\n\n if (componentType._contextId && fiber.props?.value !== undefined) {\n fiber._contextId = componentType._contextId\n fiber._contextValue = fiber.props.value\n }\n\n reconcileChildren(fiber, children)\n}\n\n/**\n * @param {RyunixFiber | null | undefined} fiber\n * @returns {boolean}\n */\nconst isUnderClientOnlyBoundary = (fiber) => {\n let current = fiber?.parent || null\n while (current) {\n if (current._hydrateClientOnly) return true\n current = current.parent || null\n }\n return false\n}\n\n/**\n * @param {RyunixFiber} fiber\n */\nconst updateHostComponent = (fiber) => {\n const state = getState()\n\n if (fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n fiber._contextId =\n /** @type {string | symbol | undefined} */ fiber.props?._contextId\n fiber._contextValue = fiber.props?.value\n }\n\n const isPassthrough =\n fiber.type === RYUNIX_TYPES.RYUNIX_FRAGMENT ||\n fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT ||\n fiber.type === Symbol.for('ryunix.portal')\n\n if (state.isHydrating && isPassthrough) {\n fiber.effectTag = EFFECT_TAGS.HYDRATE\n } else if (state.isHydrating && isUnderClientOnlyBoundary(fiber)) {\n if (!fiber.dom) {\n fiber.dom = /** @type {HTMLElement | Text | null} */ createDom(fiber)\n fiber.effectTag = EFFECT_TAGS.PLACEMENT\n }\n } else if (!fiber.dom) {\n if (state.isHydrating && state.hydrateCursor) {\n const domNode = state.hydrateCursor\n const isText =\n fiber.type === RYUNIX_TYPES.TEXT_ELEMENT && domNode.nodeType === 3\n const isElement =\n typeof fiber.type === 'string' &&\n domNode.nodeType === 1 &&\n (domNode as Element).tagName.toLowerCase() === fiber.type.toLowerCase()\n\n if (isText || isElement) {\n fiber.dom = /** @type {HTMLElement | Text} */ domNode\n fiber.effectTag = EFFECT_TAGS.HYDRATE\n\n if (\n isText &&\n fiber.props?.nodeValue != null &&\n domNode.nodeValue !== String(fiber.props.nodeValue)\n ) {\n domNode.nodeValue = String(fiber.props.nodeValue)\n logHydrationRecoverable('text')\n }\n\n if (\n isElement &&\n (domNode as Element).hasAttribute('data-ryunix-hydrate-boundary')\n ) {\n fiber._hydrateClientOnly = true\n }\n\n state.hydrateCursor = nextValidSibling(domNode.firstChild)\n } else {\n const policy = getHydrationPolicy()\n const detail = `Mismatch at ${getTypeLabel(fiber.type)}. Expected ${\n domNode.nodeType === 1 ? (domNode as Element).tagName : 'text'\n } but got ${String(fiber.type)}.`\n const boundaryFiber = findNearestHydrationBoundary(fiber)\n const boundaryDom = boundaryFiber ? getBoundaryDom(boundaryFiber) : null\n\n if (policy.recover === 'boundary' && boundaryFiber && boundaryDom) {\n logHydrationBoundaryMismatch(detail)\n enqueueScopedRecovery(\n boundaryFiber,\n boundaryDom,\n state.hydrateCursor ?? null,\n )\n state.hydrateCursor = skipHydrationSubtree(\n state.hydrateCursor ?? null,\n boundaryDom,\n )\n fiber.dom = /** @type {HTMLElement | Text | null} */ createDom(fiber)\n fiber.effectTag = EFFECT_TAGS.PLACEMENT\n } else if (policy.recover === 'none') {\n logHydrationFatal(detail)\n state.isHydrating = false\n state.hydrateCursor = null\n fiber.dom = /** @type {HTMLElement | Text | null} */ createDom(fiber)\n fiber.effectTag = EFFECT_TAGS.PLACEMENT\n } else {\n logHydrationMismatch(detail)\n state.isHydrating = false\n state.hydrationFailed = true\n state.hydrateCursor = null\n fiber.dom = /** @type {HTMLElement | Text | null} */ createDom(fiber)\n fiber.effectTag = EFFECT_TAGS.PLACEMENT\n }\n }\n } else {\n fiber.dom = /** @type {HTMLElement | Text | null} */ createDom(fiber)\n }\n }\n\n const children = fiber.props?.children || []\n reconcileChildren(fiber, children)\n}\n\n/**\n * @param {string | symbol | RyunixComponent | object} type\n * @returns {string}\n */\nconst getTypeLabel = (type) => {\n if (typeof type === 'symbol') return type.description || type.toString()\n if (typeof type === 'function') return type.name || 'anonymous'\n return String(type)\n}\n\n/**\n * The Component `Image` takes in a `src` and other props, and returns an `img` element with the\n * specified `src` and props.\n * @returns The `Image` component is being returned. It is a functional component that renders an `img`\n * element with the specified `src` and other props passed to it.\n */\n/**\n * @param {{ src: string } & Record<string, unknown>} props\n * @returns {import('./createElement.js').RyunixElement}\n */\nconst Image = ({ src, ...props }) => {\n return createElement('img', { ...props, src })\n}\n\nconst { Provider: MDXProvider, useContext: useMDXComponents } = createContext(\n 'ryunix.mdx',\n /** @type {Record<string, RyunixComponent>} */ {},\n)\n\n/**\n * Get merged MDX components from context and provided components\n * @param {Record<string, RyunixComponent>} [components] - Additional components to merge\n * @returns {Record<string, RyunixComponent>} Merged components object\n */\nconst getMDXComponents = (components) => {\n const contextComponents = useMDXComponents() as Record<\n string,\n import('../types/internal.js').RyunixComponent\n >\n return {\n ...contextComponents,\n ...components,\n }\n}\n\n/**\n * @param {string} tag\n * @param {Record<string, unknown>} props\n * @returns {RyunixNode}\n */\nconst mdxHost = (tag, props) =>\n /** @type {RyunixNode} */ createElement(tag, props)\n\n/**\n * Default MDX components with Ryunix-optimized rendering\n * @type {Record<string, (props: Record<string, unknown>) => RyunixNode>}\n */\nconst defaultComponents = {\n // Headings\n h1: (props) => mdxHost('h1', props),\n h2: (props) => mdxHost('h2', props),\n h3: (props) => mdxHost('h3', props),\n h4: (props) => mdxHost('h4', props),\n h5: (props) => mdxHost('h5', props),\n h6: (props) => mdxHost('h6', props),\n\n // Text\n p: (props) => mdxHost('p', props),\n a: (props) => mdxHost('a', props),\n strong: (props) => mdxHost('strong', props),\n em: (props) => mdxHost('em', props),\n code: (props) => mdxHost('code', props),\n\n // Lists\n ul: (props) => mdxHost('ul', props),\n ol: (props) => mdxHost('ol', props),\n li: (props) => mdxHost('li', props),\n\n // Blocks\n blockquote: (props) => mdxHost('blockquote', props),\n pre: (props) => mdxHost('pre', props),\n hr: (props) => mdxHost('hr', props),\n\n // Tables\n table: (props) => mdxHost('table', props),\n thead: (props) => mdxHost('thead', props),\n tbody: (props) => mdxHost('tbody', props),\n tr: (props) => mdxHost('tr', props),\n th: (props) => mdxHost('th', props),\n td: (props) => mdxHost('td', props),\n\n // Media\n img: (props) => mdxHost('img', props),\n}\n\n/**\n * MDX Wrapper component\n * Provides default styling and components for MDX content\n */\n/**\n * @param {{ children?: RyunixNode, components?: Record<string, RyunixComponent> }} props\n * @returns {import('./createElement.js').RyunixElement}\n */\nconst MDXContent = ({ children, components = {} }) => {\n const mergedComponents = getMDXComponents(components)\n\n return createElement(\n /** @type {string | symbol | Function} */ MDXProvider,\n { value: mergedComponents },\n createElement('div', null, children),\n )\n}\n\nexport {\n // Internal use\n updateFunctionComponent,\n updateHostComponent,\n\n // Built-in components\n\n // MDX Support\n MDXContent,\n MDXProvider,\n useMDXComponents,\n getMDXComponents,\n defaultComponents,\n\n // Custom components\n Image,\n}\n","import { clearContainer } from './dom.js'\nimport { getState } from '../utils/index.js'\nimport { scheduleWork } from './bridge.js'\nimport {\n logHydrationBoundaryRecovery,\n logHydrationFailure,\n logHydrationRecovery,\n} from './hydrationLog.js'\nimport { getHydrationPolicy } from './hydration.js'\nimport type { RyunixNode, RyunixRootFiber } from '../types/internal.js'\n\n/**\n * @param {RyunixNode} element\n * @param {Element | DocumentFragment} container\n */\nexport const renderSubtree = (element, container) => {\n clearContainer(/** @type {HTMLElement} */ container)\n\n /** @type {RyunixRootFiber} */\n const root = {\n dom: container,\n props: { children: [element] },\n isHydrating: false,\n hydrateCursor: null,\n }\n\n scheduleWork(root, undefined)\n}\n\nexport const recoverScopedHydrationFailures = () => {\n const state = getState()\n const queue = state.scopedRecoveryQueue\n if (!queue?.length) return\n\n state.scopedRecoveryQueue = []\n for (const item of queue) {\n logHydrationBoundaryRecovery()\n renderSubtree(item.element, item.boundaryDom)\n }\n}\n\nexport const recoverHydrationFailureIfNeeded = () => {\n const state = getState()\n if (!state.hydrationFailed || state.hydrationRecover) return\n\n const policy = getHydrationPolicy()\n if (policy.recover === 'none') return\n\n const container = state.containerRoot || state.currentRoot?.dom\n const element = state.currentRoot?.props?.children?.[0]\n if (!container || element == null) return\n\n state.hydrationRecover = true\n state.hydrationFailed = false\n logHydrationFailure('')\n logHydrationRecovery()\n renderSubtree(/** @type {RyunixNode} */ element, container)\n}\n\nexport const runHydrationRecovery = () => {\n recoverScopedHydrationFailures()\n recoverHydrationFailureIfNeeded()\n}\n","import { commitRoot } from './commits.js'\nimport { updateFunctionComponent, updateHostComponent } from './components.js'\nimport { runHydrationRecovery } from './hydrationRecover.js'\nimport { getState, rIC, nextValidSibling } from '../utils/index.js'\nimport { getCurrentPriority, Priority } from './priority.js'\nimport { profiler } from './profiler.js'\nimport { setScheduleWork } from './bridge.js'\n\n/**\n * @typedef {import('../types/internal.js').RyunixFiber} RyunixFiber\n * @typedef {import('../types/internal.js').RyunixRootFiber} RyunixRootFiber\n */\n\n/** @type {RyunixRootFiber[]} */\nlet workQueue = []\n/** @type {boolean} */\nlet isWorkLoopScheduled = false\n\n/**\n * @param {RyunixFiber} fiber\n * @returns {RyunixFiber | null}\n */\nfunction performUnitOfWork(fiber) {\n const state = getState()\n const isFunctionComponent =\n fiber.type instanceof Function || typeof fiber.type === 'function'\n\n try {\n if (isFunctionComponent) {\n updateFunctionComponent(fiber)\n } else {\n updateHostComponent(fiber)\n }\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('[Ryunix ErrorBoundary] Caught error during render:', error)\n\n try {\n // Attempt to attach original JSX source map for DevOverlay lookup\n const src = fiber.props && fiber.props.__source\n if (src && error && typeof error === 'object') {\n error.__ryunix_source = src\n }\n\n let targetFiber = fiber\n while (!error.__ryunix_source && targetFiber) {\n if (targetFiber.props && targetFiber.props.__source) {\n error.__ryunix_source = targetFiber.props.__source\n }\n targetFiber = targetFiber.parent\n }\n } catch (e) {}\n }\n\n // Traverse upwards to find nearest ErrorBoundary\n let boundaryFiber = fiber.parent\n let foundBoundary = false\n\n while (boundaryFiber) {\n if (\n boundaryFiber.type &&\n /** @type {{ ryunix_type?: string }} */ boundaryFiber.type\n .ryunix_type === 'RYUNIX_ERROR_BOUNDARY'\n ) {\n foundBoundary = true\n break\n }\n boundaryFiber = boundaryFiber.parent\n }\n\n if (foundBoundary) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n '[Ryunix ErrorBoundary] Recovering tree at nearest boundary.',\n )\n }\n // Assign the error state to the boundary so it can render the fallback\n boundaryFiber.stateError = error\n // Discard the corrupted children of the crashing fiber to prevent undefined behavior\n fiber.child = null\n\n // Rewind the rendering context to the ErrorBoundary fiber\n // so the work loop immediately starts re-evaluating the boundary branch\n return boundaryFiber\n } else {\n // Uncaught fatal error: stop the work loop entirely\n console.error(\n '[Ryunix] Fatal Uncaught Error. No ErrorBoundary was found in the tree to handle this exception:\\n',\n error,\n )\n state.nextUnitOfWork = null\n return null\n }\n }\n\n if (fiber.child) {\n return fiber.child\n }\n\n let nextFiber = fiber\n while (nextFiber) {\n // If we just finished a Host node during hydration,\n // the next fiber (sibling) should start at the next DOM sibling.\n if (state.isHydrating && nextFiber.dom) {\n state.hydrateCursor = nextValidSibling(nextFiber.dom.nextSibling)\n }\n\n if (nextFiber.sibling) {\n return nextFiber.sibling\n }\n\n nextFiber = nextFiber.parent\n // When ascending, we don't need to do anything else,\n // the loop will handle the parent's sibling or end.\n }\n}\n\n/**\n * @param {{ timeRemaining: () => number, didTimeout?: boolean }} deadline\n */\nconst workLoop = (deadline) => {\n const state = getState()\n let shouldYield = false\n\n while ((state.nextUnitOfWork || workQueue.length > 0) && !shouldYield) {\n if (!state.nextUnitOfWork && workQueue.length > 0) {\n const nextRoot = workQueue.shift()\n state.wipRoot = nextRoot\n state.nextUnitOfWork = nextRoot\n state.deletions = []\n\n // Restore specific hydration state for this root\n if (nextRoot.isHydrating !== undefined) {\n state.isHydrating = nextRoot.isHydrating\n state.hydrateCursor = nextRoot.hydrateCursor\n }\n }\n\n if (state.nextUnitOfWork) {\n state.nextUnitOfWork = performUnitOfWork(state.nextUnitOfWork)\n }\n\n shouldYield = deadline.timeRemaining() < 1\n }\n\n if (!state.nextUnitOfWork && state.wipRoot) {\n commitRoot()\n runHydrationRecovery()\n }\n\n if (state.nextUnitOfWork || workQueue.length > 0) {\n rIC(workLoop)\n } else {\n isWorkLoopScheduled = false\n }\n}\n\n/**\n * @param {RyunixRootFiber} root\n * @param {number} [priority]\n */\nconst scheduleWork = (root, priority = getCurrentPriority()) => {\n const state = getState()\n\n if (state.wipRoot) {\n workQueue.push(root)\n } else {\n state.nextUnitOfWork = root\n state.wipRoot = root\n state.deletions = []\n\n // Set immediate hydration state\n if (root.isHydrating !== undefined) {\n state.isHydrating = root.isHydrating\n state.hydrateCursor = root.hydrateCursor\n }\n }\n\n state.hookIndex = 0\n state.effects = []\n\n if (!isWorkLoopScheduled) {\n isWorkLoopScheduled = true\n if (priority <= Priority.USER_BLOCKING) {\n // High priority: run as soon as possible in a micro-task\n // We provide a synthetic deadline that allows some work before yielding\n Promise.resolve().then(() => {\n workLoop({ timeRemaining: () => 10, didTimeout: true })\n })\n } else {\n // Low priority: wait for browser idleness\n rIC(workLoop)\n }\n }\n}\n\nsetScheduleWork(scheduleWork)\n\nexport { performUnitOfWork, workLoop, scheduleWork }\n","import { clearContainer } from './dom.js'\nimport { getState } from '../utils/index.js'\nimport { scheduleWork } from './workers.js'\nimport { resetHydrationLogFlags } from './hydrationLog.js'\nimport { getHydrationPolicy } from './hydration.js'\n\n/**\n * @typedef {import('./createElement.js').RyunixNode} RyunixNode\n * @typedef {import('../types/internal.js').RyunixRootFiber} RyunixRootFiber\n * @typedef {import('../types/internal.js').RyunixComponent} RyunixComponent\n */\n\n/**\n * The `render` function in JavaScript updates the DOM with a new element and schedules work to be done\n * on the element.\n * @param {RyunixNode} element\n * @param {Element | DocumentFragment} container\n * @returns {RyunixRootFiber}\n */\nconst render = (element, container) => {\n const state = getState()\n\n // Clear container before CSR render to avoid duplication\n clearContainer(/** @type {HTMLElement} */ container)\n\n /** @type {RyunixRootFiber} */\n const root = {\n dom: container,\n props: {\n children: [\n /** @type {import('../types/internal.js').RyunixNode} */ element,\n ],\n },\n alternate: state.currentRoot,\n isHydrating: false,\n hydrateCursor: /** @type {ChildNode | null} */ null,\n }\n\n scheduleWork(root)\n return root\n}\n\n/**\n * @param {ChildNode | null} node\n * @returns {ChildNode | null}\n */\nconst nextValidSibling = (node) => {\n let next = node\n while (\n next &&\n ((next.nodeType === 3 && !next.nodeValue.trim()) ||\n next.nodeType === 8 ||\n (next.nodeType === 1 &&\n /** @type {Element} */ next.hasAttribute('data-ryunix-ssr')))\n ) {\n next = next.nextSibling\n }\n return next\n}\n\n/**\n * The `hydrate` function attaches Ryunix to an existing server-rendered DOM tree.\n * Instead of clearing and re-rendering, it walks the existing DOM nodes and\n * attaches event listeners and reconciles state, preserving SSR HTML.\n * @param {RyunixNode} element\n * @param {Element | DocumentFragment} container\n * @returns {RyunixRootFiber}\n */\nconst hydrate = (element, container) => {\n const state = getState()\n\n state.containerRoot = container\n\n /** @type {RyunixRootFiber} */\n const root = {\n dom: container,\n props: {\n children: [\n /** @type {import('../types/internal.js').RyunixNode} */ element,\n ],\n },\n alternate: state.currentRoot,\n isHydrating: true,\n hydrateCursor: nextValidSibling(container.firstChild),\n }\n\n scheduleWork(root)\n return root\n}\n\n/**\n * @param {RyunixNode} MainElement\n * @param {string} [root]\n * @param {Record<string, unknown>} [components]\n * @returns {RyunixRootFiber | undefined}\n */\nconst init = (MainElement, root = '__ryunix', components = {}) => {\n const state = getState()\n state.containerRoot = document.getElementById(root)\n\n resetHydrationLogFlags()\n state.hydrationPolicy = getHydrationPolicy()\n state.scopedRecoveryQueue = []\n state.hydrationRecover = false\n\n // Reset any stale hydration flags\n state.isHydrating = false\n state.hydrationFailed = false\n\n // Auto-detect SSR based on child nodes - no need to manually set process.env.RYUNIX_SSR\n const hasChildNodes =\n state.containerRoot && state.containerRoot.hasChildNodes()\n\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(\n `[Ryunix Debug] init: hasChildNodes=${hasChildNodes}, has SSR content detected.`,\n )\n }\n\n // Auto-detect: if there's existing content, try to hydrate (SSR)\n // If explicitly disabled via RYUNIX_SSR=false, skip hydration\n const ssrEnabled = process.env.RYUNIX_SSR !== 'false'\n if (hasChildNodes && ssrEnabled) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(\n `[Ryunix Debug] init: SSR content detected. Starting hydration on #${root}`,\n )\n }\n const res = hydrate(MainElement, state.containerRoot)\n return res\n }\n\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(\n `[Ryunix Debug] init: No SSR content or SSR disabled. Starting normal render on #${root}`,\n )\n }\n const res = render(MainElement, state.containerRoot)\n return res\n}\n\n/**\n * @param {RyunixComponent} component\n * @param {Record<string, unknown>} props\n * @param {(error: unknown) => void} [onError]\n * @returns {RyunixNode}\n */\nconst safeRender = (component, props, onError) => {\n try {\n return /** @type {RyunixNode} */ /** @type {(props: Record<string, unknown>) => RyunixNode} */ component(\n props,\n )\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Component error:', error)\n }\n if (onError) onError(error)\n return null\n }\n}\n\nexport { init, render, safeRender, hydrate, clearContainer }\nexport {\n renderSubtree,\n recoverScopedHydrationFailures,\n recoverHydrationFailureIfNeeded,\n runHydrationRecovery,\n} from './hydrationRecover.js'\n","import {\n RYUNIX_TYPES,\n STRINGS,\n OLD_STRINGS,\n is,\n getState,\n} from '../utils/index.js'\nimport { camelToKebab, validateUri } from './dom.js'\nimport { toSvgAttrName } from '../utils/svgAttributes.js'\nimport { resetIdCounter } from './hooks.js'\n\n/**\n * @typedef {import('./createElement.js').RyunixNode} RyunixNode\n * @typedef {import('./createElement.js').RyunixElement} RyunixElement\n * @typedef {import('../types/internal.js').RyunixRenderToStringOptions} RyunixRenderToStringOptions\n * @typedef {Promise<{ success: boolean, id: string, content: string, error?: unknown }>} RyunixSuspenseTask\n */\n\n/**\n * @param {unknown} unsafe\n * @returns {string}\n */\nexport const escapeHtml = (unsafe) => {\n if (typeof unsafe !== 'string') return String(unsafe)\n return unsafe\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * @param {Record<string, unknown>} styleObj\n * @returns {string}\n */\nconst renderStyle = (styleObj) => {\n if (!is.object(styleObj) || is.null(styleObj)) return ''\n return Object.entries(styleObj)\n .filter(([_, value]) => value != null)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';')\n}\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\n/**\n * @param {RyunixNode | RyunixNode[]} element\n * @returns {string}\n */\nconst renderToStringImpl = (element) => {\n if (element == null || typeof element === 'boolean') {\n return ''\n }\n\n if (typeof element === 'string' || typeof element === 'number') {\n return escapeHtml(element)\n }\n\n if (Array.isArray(element)) {\n return element.map((child) => renderToStringImpl(child)).join('')\n }\n\n /** @type {RyunixElement} */\n const vnode = element\n\n if (vnode.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n return escapeHtml(\n /** @type {import('./createElement.js').RyunixTextElement} */ vnode.props\n .nodeValue,\n )\n }\n\n if (vnode.type === RYUNIX_TYPES.RYUNIX_FRAGMENT) {\n const children = vnode.props?.children || []\n return children.map((child) => renderToStringImpl(child)).join('')\n }\n\n if (vnode.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n // Context Providers just render their children transparently on the server\n const state = getState()\n state.ssrContexts = state.ssrContexts || {}\n const ctxProps =\n /** @type {{ _contextId?: string, value?: unknown, children?: RyunixNode | RyunixNode[] }} */ vnode.props ||\n {}\n const ctxId = ctxProps._contextId\n const prevCtx = state.ssrContexts[ctxId]\n\n if (ctxId) {\n state.ssrContexts[ctxId] = ctxProps.value\n }\n\n const children = ctxProps.children || []\n let result = ''\n if (Array.isArray(children)) {\n result = children.map((child) => renderToStringImpl(child)).join('')\n } else {\n result = renderToStringImpl(children)\n }\n\n if (ctxId) {\n state.ssrContexts[ctxId] = prevCtx\n }\n\n return result\n }\n\n if (typeof vnode.type === 'function') {\n const type = vnode.type\n const props = vnode.props || {}\n const renderedElement =\n /** @type {(props: Record<string, unknown>) => RyunixNode} */ type(props)\n return renderToStringImpl(renderedElement)\n }\n\n // It's a standard host element\n const type = String(vnode.type)\n const props = vnode.props || {}\n\n let attributes = ''\n let htmlChildren = ''\n let innerHTML = null\n\n Object.entries(props).forEach(([key, value]) => {\n if (key === 'children') {\n if (Array.isArray(value)) {\n htmlChildren = value.map((child) => renderToStringImpl(child)).join('')\n } else {\n htmlChildren = renderToStringImpl(/** @type {RyunixNode} */ value)\n }\n } else if (key === 'dangerouslySetInnerHTML') {\n const inner = value as { __html?: string } | null | undefined\n if (inner?.__html) {\n innerHTML = inner.__html\n }\n } else if (key === STRINGS.STYLE || key === OLD_STRINGS.STYLE) {\n const styleString = renderStyle(\n /** @type {Record<string, unknown>} */ value,\n )\n if (styleString) {\n attributes += ` style=\"${escapeHtml(styleString)}\"`\n }\n } else if (key === STRINGS.CLASS_NAME || key === OLD_STRINGS.CLASS_NAME) {\n if (value) {\n attributes += ` class=\"${escapeHtml(value)}\"`\n }\n } else if (\n !key.startsWith('on') &&\n key !== '__source' &&\n key !== '__self'\n ) {\n if (typeof value === 'boolean') {\n if (value) attributes += ` ${key}=\"\"`\n } else if (value != null) {\n let attrName = toSvgAttrName(key)\n let validatedValue = validateUri(attrName, value)\n attributes += ` ${attrName}=\"${escapeHtml(validatedValue)}\"`\n }\n }\n })\n\n if (VOID_ELEMENTS.has(type)) {\n return `<${type}${attributes} />`\n }\n\n const finalContent = innerHTML !== null ? innerHTML : htmlChildren\n\n return `<${type}${attributes}>${finalContent}</${type}>`\n}\n\nconst RC_SCRIPT = `\nfunction $RC(id, templateId) {\n var b = document.getElementById(id);\n var t = document.getElementById(templateId);\n if (b && t) {\n b.innerHTML = t.innerHTML;\n t.remove();\n }\n}\n`\n .replace(/\\s+/g, ' ')\n .trim()\n\n/**\n * @param {RyunixNode | RyunixNode[]} element\n * @param {(chunk: string) => void} push\n * @param {RyunixSuspenseTask[]} [suspenseTasks]\n * @returns {Promise<void>}\n */\nconst renderToStreamImpl = async (element, push, suspenseTasks = []) => {\n if (element == null || typeof element === 'boolean') {\n return\n }\n\n // Await the element if it's a promise (e.g. from an async Server Component directly rendered)\n if (element instanceof Promise) {\n element = await element\n if (element == null || typeof element === 'boolean') return\n }\n\n if (typeof element === 'string' || typeof element === 'number') {\n push(escapeHtml(element))\n return\n }\n\n if (Array.isArray(element)) {\n for (const child of element) {\n await renderToStreamImpl(child, push, suspenseTasks)\n }\n return\n }\n\n /** @type {RyunixElement} */\n const vnode = element\n\n if (vnode.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n push(\n escapeHtml(\n /** @type {import('./createElement.js').RyunixTextElement} */ vnode\n .props.nodeValue,\n ),\n )\n return\n }\n\n if (vnode.type === RYUNIX_TYPES.RYUNIX_FRAGMENT) {\n const children = vnode.props?.children || []\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks)\n }\n return\n }\n\n if (vnode.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n const state = getState()\n state.ssrContexts = state.ssrContexts || {}\n const ctxProps =\n /** @type {{ _contextId?: string, value?: unknown, children?: RyunixNode | RyunixNode[] }} */ vnode.props ||\n {}\n const ctxId = ctxProps._contextId\n const prevCtx = state.ssrContexts[ctxId]\n\n if (ctxId) {\n state.ssrContexts[ctxId] = ctxProps.value\n }\n\n const children = ctxProps.children || []\n if (Array.isArray(children)) {\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks)\n }\n } else {\n await renderToStreamImpl(children, push, suspenseTasks)\n }\n\n if (ctxId) {\n state.ssrContexts[ctxId] = prevCtx\n }\n\n return\n }\n\n // Handle Suspense specifically\n const suspenseType = vnode.type\n const isSuspenseBoundary =\n vnode.type === RYUNIX_TYPES.RYUNIX_SUSPENSE ||\n (typeof suspenseType === 'object' &&\n suspenseType != null &&\n /** @type {{ type?: symbol }} */ suspenseType.type ===\n RYUNIX_TYPES.RYUNIX_SUSPENSE)\n if (isSuspenseBoundary) {\n const suspenseProps =\n /** @type {{ fallback?: RyunixNode, children?: RyunixNode | RyunixNode[] }} */ vnode.props ||\n {}\n const { fallback, children } = suspenseProps\n const id = `s-${Math.random().toString(36).slice(2, 9)}`\n\n // In universal mode, Suspense renders children if ready, or fallback if pending.\n // BUT we want to force a background task for the REAL children if we hit a lazy component.\n\n push(`<!--$?--><template id=\"B:${id}\"></template><div id=\"S:${id}\">`)\n\n // 1. Start rendering the actual content in the background\n const task = (async () => {\n const state = getState()\n const wasBackground = state.isSuspenseBackground\n state.isSuspenseBackground = true\n\n let content = ''\n /** @param {string} chunk */\n const subPush = (chunk) => {\n content += chunk\n }\n try {\n await renderToStreamImpl(children, subPush, suspenseTasks)\n return { id, content, success: true }\n } catch (e) {\n return { id, content: '', success: false, error: e }\n } finally {\n state.isSuspenseBackground = wasBackground\n }\n })()\n\n suspenseTasks.push(task)\n\n // 2. Render fallback immediately for the main stream\n await renderToStreamImpl(fallback, push, suspenseTasks)\n push(`</div><!--$/-->`)\n return\n }\n\n let type = vnode.type\n let props = vnode.props || {}\n\n if (typeof type === 'function') {\n if (process.env.RYUNIX_DEBUG) {\n console.log('[SSR Debug] Rendering function:', type.name || 'anonymous')\n }\n const renderedElement =\n await /** @type {(props: Record<string, unknown>) => RyunixNode | Promise<RyunixNode>} */ type(\n props,\n )\n await renderToStreamImpl(renderedElement, push, suspenseTasks)\n return\n }\n\n // It's a standard host element\n const hostTag = String(type)\n let attributes = ''\n let innerHTML = null\n let children = props.children || []\n\n Object.entries(props).forEach(([key, value]) => {\n if (key === 'children') {\n // Ignored here, handled below\n } else if (key === 'dangerouslySetInnerHTML') {\n const inner = value as { __html?: string } | null | undefined\n if (inner?.__html) {\n innerHTML = inner.__html\n }\n } else if (key === STRINGS.STYLE || key === OLD_STRINGS.STYLE) {\n const styleString = renderStyle(\n /** @type {Record<string, unknown>} */ value,\n )\n if (styleString) {\n attributes += ` style=\"${escapeHtml(styleString)}\"`\n }\n } else if (key === STRINGS.CLASS_NAME || key === OLD_STRINGS.CLASS_NAME) {\n if (value) {\n attributes += ` class=\"${escapeHtml(value)}\"`\n }\n } else if (\n !key.startsWith('on') &&\n key !== '__source' &&\n key !== '__self'\n ) {\n if (typeof value === 'boolean') {\n if (value) attributes += ` ${key}=\"\"`\n } else if (value != null) {\n const attrName = toSvgAttrName(key)\n const validatedValue = validateUri(attrName, value)\n attributes += ` ${attrName}=\"${escapeHtml(validatedValue)}\"`\n }\n }\n })\n\n push(`<${hostTag}${attributes}>`)\n\n if (innerHTML !== null) {\n push(innerHTML)\n } else {\n if (Array.isArray(children)) {\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks)\n }\n } else {\n await renderToStreamImpl(children, push, suspenseTasks)\n }\n }\n\n if (!VOID_ELEMENTS.has(hostTag)) {\n push(`</${hostTag}>`)\n }\n}\n\n/**\n * @param {RyunixNode} element\n * @param {RyunixRenderToStringOptions} [options]\n * @returns {ReadableStream<Uint8Array>}\n */\nexport const renderToReadableStream = (\n element: import('../types/internal.js').RyunixNode,\n options: import('../types/internal.js').RyunixRenderToStringOptions = {},\n) => {\n const state = getState()\n const encoder = new TextEncoder()\n\n // Reset idCounter for deterministic useId values\n resetIdCounter()\n\n return new ReadableStream({\n async start(controller) {\n const wasServerRendering = state.isServerRendering\n state.isServerRendering = true\n state.ssrMetadata = {}\n\n /** @param {string} text */\n const push = (text) => controller.enqueue(encoder.encode(text))\n /** @type {RyunixSuspenseTask[]} */\n const suspenseTasks = []\n\n try {\n // 0. Inject RC helper script first\n const nonceAttr = options.nonce ? ` nonce=\"${options.nonce}\"` : ''\n push(`<script${nonceAttr} data-ryunix-ssr>${RC_SCRIPT}</script>`)\n\n // 1. Render initial tree (with fallbacks)\n await renderToStreamImpl(element, push, suspenseTasks)\n\n // 2. Process suspense tasks as they complete\n // For now, we wait for all, but in a real streaming scenario,\n // we could push them as they resolve.\n while (suspenseTasks.length > 0) {\n const task = suspenseTasks.shift()\n const res = await task\n if (res.success) {\n push(\n `<template id=\"P:${res.id}\" data-ryunix-ssr>${res.content}</template>`,\n )\n push(\n `<script${nonceAttr} data-ryunix-ssr>$RC(\"S:${res.id}\", \"P:${res.id}\")</script>`,\n )\n }\n }\n\n controller.close()\n } catch (e) {\n controller.error(e)\n } finally {\n state.isServerRendering = wasServerRendering\n }\n },\n })\n}\n\n/**\n * @param {RyunixNode} element\n * @param {RyunixRenderToStringOptions} [options]\n * @returns {string}\n */\nexport const renderToString = (\n element: import('../types/internal.js').RyunixNode,\n options: import('../types/internal.js').RyunixRenderToStringOptions = {},\n) => {\n const state = getState()\n const wasServerRendering = state.isServerRendering\n state.isServerRendering = true\n state.ssrMetadata = {}\n\n // Reset idCounter for deterministic useId values\n resetIdCounter()\n\n try {\n return renderToStringImpl(element)\n } finally {\n state.isServerRendering = wasServerRendering\n }\n}\n\n/**\n * @param {RyunixNode} element\n * @param {RyunixRenderToStringOptions} [options]\n * @returns {Promise<string>}\n */\nexport const renderToStringAsync = async (\n element: import('../types/internal.js').RyunixNode,\n options: import('../types/internal.js').RyunixRenderToStringOptions = {},\n) => {\n const stream = renderToReadableStream(element, options)\n const reader = stream.getReader()\n const decoder = new TextDecoder()\n let result = ''\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n result += decoder.decode(value, { stream: true })\n }\n\n result += decoder.decode()\n return result\n}\n","import type { RyunixComponent } from '../types/internal.js'\n\ntype PropsEqual = (\n prev: Record<string, unknown>,\n next: Record<string, unknown>,\n) => boolean\n\ninterface MemoizedComponent extends RyunixComponent {\n _isMemo: true\n _wrappedComponent: RyunixComponent\n _arePropsEqual: PropsEqual\n}\n\nexport function memo(\n Component: RyunixComponent,\n arePropsEqual: PropsEqual = shallowEqual,\n): MemoizedComponent {\n const MemoizedComponent = ((props: Record<string, unknown>) => {\n return Component(props as never)\n }) as MemoizedComponent\n\n MemoizedComponent._isMemo = true\n MemoizedComponent._wrappedComponent = Component\n MemoizedComponent._arePropsEqual = arePropsEqual\n MemoizedComponent.displayName = `Memo(${Component.displayName || Component.name || 'Component'})`\n\n return MemoizedComponent\n}\n\nexport function shallowEqual(\n prevProps: Record<string, unknown>,\n nextProps: Record<string, unknown>,\n): boolean {\n const prevKeys = Object.keys(prevProps)\n const nextKeys = Object.keys(nextProps)\n\n if (prevKeys.length !== nextKeys.length) return false\n\n return prevKeys.every((key) => Object.is(prevProps[key], nextProps[key]))\n}\n\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n if (a == null || b == null) return false\n if (typeof a !== 'object' || typeof b !== 'object') return false\n\n const keysA = Object.keys(a as Record<string, unknown>)\n const keysB = Object.keys(b as Record<string, unknown>)\n\n if (keysA.length !== keysB.length) return false\n\n return keysA.every((key) =>\n deepEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n )\n}\n","import { RYUNIX_TYPES, getState } from '../utils/index.js'\nimport { createElement, Fragment } from './createElement.js'\nimport { useStore, useEffect } from './hooks.js'\nimport type {\n RyunixComponent,\n RyunixElement,\n RyunixNode,\n} from '../types/internal.js'\n\nexport const SUSPENSE_STATUS = {\n PENDING: 'pending',\n RESOLVED: 'resolved',\n REJECTED: 'rejected',\n} as const\n\ntype SuspenseStatus = (typeof SUSPENSE_STATUS)[keyof typeof SUSPENSE_STATUS]\n\ntype LazyModule = { default?: RyunixComponent } | RyunixComponent\n\ninterface LazyComponent extends RyunixComponent {\n _isLazy: true\n _getStatus: () => SuspenseStatus\n}\n\ninterface SuspenseComponent extends RyunixComponent {\n type: symbol\n}\n\nfunction isLazyElement(child: RyunixNode): child is RyunixElement & {\n type: LazyComponent\n} {\n return (\n child != null &&\n typeof child === 'object' &&\n 'type' in child &&\n typeof child.type === 'function' &&\n Boolean((child.type as LazyComponent)._isLazy)\n )\n}\n\nexport function lazy(importFn: () => Promise<LazyModule>): LazyComponent {\n let status: SuspenseStatus = SUSPENSE_STATUS.PENDING\n let Component: RyunixComponent | null = null\n let error: unknown = null\n let promise: Promise<void> | null = null\n\n const LazyComponent = ((props: Record<string, unknown>) => {\n if (status === SUSPENSE_STATUS.RESOLVED && Component) {\n return createElement(Component as Function, props)\n }\n\n if (status === SUSPENSE_STATUS.REJECTED && error) {\n throw error\n }\n\n if (!promise) {\n promise = importFn()\n .then((module) => {\n const resolved = module\n Component =\n 'default' in resolved && resolved.default\n ? resolved.default\n : (resolved as RyunixComponent)\n status = SUSPENSE_STATUS.RESOLVED\n })\n .catch((err) => {\n error = err\n status = SUSPENSE_STATUS.REJECTED\n })\n }\n\n const [, forceUpdate] = useStore(0)\n\n useEffect(() => {\n if (status === SUSPENSE_STATUS.PENDING && promise) {\n let active = true\n promise\n .then(() => {\n if (active) {\n forceUpdate((x: number) => x + 1)\n }\n })\n .catch(() => {\n if (active) {\n forceUpdate((x: number) => x + 1)\n }\n })\n return () => {\n active = false\n }\n }\n }, [])\n\n return null\n }) as LazyComponent\n\n LazyComponent._isLazy = true\n LazyComponent._getStatus = () => status\n\n return LazyComponent\n}\n\nexport const Suspense: SuspenseComponent = ({\n fallback,\n children,\n}: {\n fallback?: RyunixNode\n children?: RyunixNode\n}) => {\n const [isLoaded, setIsLoaded] = useStore(false)\n\n const childArray = Array.isArray(children) ? children : [children]\n let anyPending = false\n\n for (const child of childArray) {\n if (isLazyElement(child)) {\n const lazyStatus = child.type._getStatus?.()\n if (lazyStatus === SUSPENSE_STATUS.PENDING) {\n anyPending = true\n }\n }\n }\n\n useEffect(() => {\n if (!anyPending && !isLoaded) {\n setIsLoaded(true)\n }\n }, [anyPending])\n\n if (anyPending && !getState().isSuspenseBackground) {\n return fallback || null\n }\n\n return createElement(Fragment, { children })\n}\n\nSuspense.type = RYUNIX_TYPES.RYUNIX_SUSPENSE\n\nexport function preload(importFn: () => Promise<unknown>): Promise<unknown> {\n return importFn()\n}\n","import type { RyunixComponent, RyunixNode } from '../types/internal.js'\n\nconst perfNow = (): number =>\n typeof performance !== 'undefined' ? performance.now() : Date.now()\n\ninterface RenderSample {\n component: string\n duration: number\n timestamp: number\n}\n\ninterface ProfilerStats {\n total: number\n avg: number\n max: number\n min: number\n count: number\n}\n\ninterface ComponentAggregate {\n total: number\n count: number\n max: number\n}\n\ninterface ComponentStats {\n name: string\n avg: number\n max: number\n count: number\n}\n\nclass Profiler {\n enabled: boolean\n measures: Map<string, number>\n renderTimes: RenderSample[]\n maxSamples: number\n\n constructor() {\n this.enabled = process.env.NODE_ENV !== 'production'\n this.measures = new Map()\n this.renderTimes = []\n this.maxSamples = 100\n }\n\n startMeasure(name: string): void {\n if (!this.enabled) return\n this.measures.set(name, perfNow())\n }\n\n endMeasure(name: string): number | undefined {\n if (!this.enabled) return\n const start = this.measures.get(name)\n if (!start) return\n\n const duration = perfNow() - start\n this.measures.delete(name)\n\n return duration\n }\n\n recordRender(componentName: string, duration: number): void {\n if (!this.enabled) return\n\n this.renderTimes.push({\n component: componentName,\n duration,\n timestamp: Date.now(),\n })\n\n if (this.renderTimes.length > this.maxSamples) {\n this.renderTimes.shift()\n }\n }\n\n getStats(): ProfilerStats | null {\n if (!this.enabled) return null\n\n const total = this.renderTimes.reduce((sum, r) => sum + r.duration, 0)\n const avg = total / this.renderTimes.length\n const max = Math.max(...this.renderTimes.map((r) => r.duration))\n const min = Math.min(...this.renderTimes.map((r) => r.duration))\n\n return { total, avg, max, min, count: this.renderTimes.length }\n }\n\n getSlowestComponents(limit = 10): ComponentStats[] {\n if (!this.enabled) return []\n\n const byComponent = new Map<string, ComponentAggregate>()\n\n this.renderTimes.forEach(({ component, duration }) => {\n if (!byComponent.has(component)) {\n byComponent.set(component, { total: 0, count: 0, max: 0 })\n }\n const stats = byComponent.get(component)!\n stats.total += duration\n stats.count++\n stats.max = Math.max(stats.max, duration)\n })\n\n return Array.from(byComponent.entries())\n .map(([name, stats]) => ({\n name,\n avg: stats.total / stats.count,\n max: stats.max,\n count: stats.count,\n }))\n .sort((a, b) => b.avg - a.avg)\n .slice(0, limit)\n }\n\n logStats(): void {\n if (!this.enabled) return\n\n const stats = this.getStats()\n if (!stats) return\n\n console.group('🔍 Ryunix Performance Stats')\n console.log(`Total renders: ${stats.count}`)\n console.log(`Avg render time: ${stats.avg.toFixed(2)}ms`)\n console.log(\n `Min: ${stats.min.toFixed(2)}ms | Max: ${stats.max.toFixed(2)}ms`,\n )\n\n const slowest = this.getSlowestComponents(5)\n if (slowest.length > 0) {\n console.log('\\n⚠️ Slowest components:')\n slowest.forEach((comp, i) => {\n console.log(\n `${i + 1}. ${comp.name}: ${comp.avg.toFixed(2)}ms avg (${comp.count} renders)`,\n )\n })\n }\n console.groupEnd()\n }\n\n clear(): void {\n this.renderTimes = []\n this.measures.clear()\n }\n\n enable(): void {\n this.enabled = true\n }\n\n disable(): void {\n this.enabled = false\n }\n}\n\nconst profiler = new Profiler()\n\nexport function useProfiler(componentName: string): () => void {\n const startTime = perfNow()\n\n return () => {\n const duration = perfNow() - startTime\n profiler.recordRender(componentName, duration)\n }\n}\n\nexport function withProfiler(\n Component: RyunixComponent,\n name: string,\n): RyunixComponent {\n const Profiled = (props: Record<string, unknown>): RyunixNode => {\n profiler.startMeasure(name)\n const result = Component(props as never)\n const duration = profiler.endMeasure(name)\n if (duration) profiler.recordRender(name, duration)\n return result\n }\n\n return Profiled as RyunixComponent\n}\n\nexport { profiler }\n","import type { RyunixComponent, RyunixNode } from '../types/internal.js'\n\ntype ForwardRefRender = (\n props: Record<string, unknown>,\n ref: unknown,\n) => RyunixNode\n\ninterface ForwardRefComponent extends RyunixComponent {\n _isForwardRef: true\n _render: ForwardRefRender\n}\n\nexport function forwardRef(render: ForwardRefRender): ForwardRefComponent {\n if (typeof render !== 'function') {\n throw new Error('forwardRef requires a render function')\n }\n\n const ForwardRefComponent = ((\n props: Record<string, unknown> & { ref?: unknown },\n ) => {\n const { ref, ...restProps } = props || {}\n return render(restProps, ref ?? null)\n }) as ForwardRefComponent\n\n const named = render as { displayName?: string; name?: string }\n ForwardRefComponent.displayName = `ForwardRef(${named.displayName || named.name || 'Component'})`\n ForwardRefComponent._isForwardRef = true\n ForwardRefComponent._render = render\n\n return ForwardRefComponent\n}\n","import { createElement } from './createElement.js'\n\n/**\n * Wraps content rendered exclusively on the server. During hydration Ryunix\n * preserves the server HTML inside this boundary.\n *\n * @param {object} props\n * @param {import('./createElement.js').RyunixNode} [props.children]\n * @param {string} [props.id]\n * @returns {import('./createElement.js').RyunixElement}\n */\nexport function ServerBoundary({ children, id }) {\n return createElement(\n 'div',\n { 'data-ryunix-server': id, style: { display: 'contents' } },\n children,\n )\n}\n\nServerBoundary.ryunix_type = 'RYUNIX_SERVER_BOUNDARY'\n\n/**\n * Marks a DOM subtree for scoped hydration recovery. Mismatches inside this\n * boundary can be recovered locally without remounting the full app root.\n *\n * @param {object} props\n * @param {import('./createElement.js').RyunixNode} [props.children]\n * @param {string} [props.id]\n * @returns {import('./createElement.js').RyunixElement}\n */\nexport function HydrationBoundary({ children, id }) {\n return createElement(\n 'div',\n {\n 'data-ryunix-hydrate-boundary': id ?? '',\n suppressHydrationWarning: true,\n style: { display: 'contents' },\n },\n children,\n )\n}\n\nHydrationBoundary.ryunix_type = 'RYUNIX_HYDRATION_BOUNDARY'\n","import { createElement } from './createElement.js'\nimport { getState } from '../utils/index.js'\nimport type { RyunixFiber, RyunixNode } from '../types/internal.js'\n\ninterface ErrorBoundaryProps {\n children?: RyunixNode\n fallback?: RyunixNode | ((error: unknown) => RyunixNode)\n}\n\nexport function ErrorBoundary({\n children,\n fallback,\n}: ErrorBoundaryProps): RyunixNode {\n const state = getState()\n const wipFiber = state.wipFiber as RyunixFiber | null | undefined\n\n if (wipFiber?.stateError) {\n const error = wipFiber.stateError\n if (typeof fallback === 'function') {\n return fallback(error)\n }\n return fallback ?? null\n }\n\n return createElement(\n 'ryunix-error-boundary-wrapper',\n { style: { display: 'contents' } },\n children,\n )\n}\n\n;(ErrorBoundary as { ryunix_type?: string }).ryunix_type =\n 'RYUNIX_ERROR_BOUNDARY'\n","/**\n * Client proxy for a compiled server action.\n * @param {string} actionId - Build-time action identifier\n * @returns {(...args: unknown[]) => Promise<unknown>}\n */\nexport function createActionProxy(actionId) {\n return async function (...args) {\n const response = await fetch('/_ryunix/action', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Ryunix-Action': 'true',\n },\n body: JSON.stringify({ actionId, args }),\n })\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}))\n throw new Error(errorData.error || 'Server Action failed')\n }\n\n return response.json()\n }\n}\n","import { createElement } from './createElement.js'\nimport { useStore, useEffect } from './hooks.js'\n\n/**\n * @typedef {object} OverlayError\n * @property {string} [name]\n * @property {string} [message]\n * @property {string | string[]} [stack]\n * @property {{ fileName?: string, lineNumber?: number }} [__ryunix_source]\n */\n\n/**\n * @param {unknown} propsOrError\n */\nexport function RyunixDevOverlay(propsOrError) {\n /** @type {Record<string, unknown> | Error | null | undefined} */\n const propsInput =\n /** @type {Record<string, unknown> | Error | null | undefined} */ propsOrError\n\n // If propsOrError is an event or wrapped object, try to extract error\n const rawError =\n propsInput &&\n typeof propsInput === 'object' &&\n !(propsInput instanceof Error) &&\n propsInput.nativeEvent\n ? propsInput.error\n : propsInput\n\n /** @type {OverlayError | null} */\n let error = null\n if (rawError instanceof Error) {\n error = rawError\n } else if (rawError && typeof rawError === 'object') {\n if ('message' in rawError) {\n error = /** @type {OverlayError} */ rawError\n } else if ('error' in rawError) {\n const nested = /** @type {Record<string, unknown>} */ rawError.error\n error =\n nested && typeof nested === 'object'\n ? /** @type {OverlayError} */ nested\n : null\n } else {\n error = /** @type {OverlayError} */ rawError\n }\n }\n\n // Debug string if error is broken\n const debugObjectStr = JSON.stringify(\n propsInput,\n Object.getOwnPropertyNames(propsInput || {}),\n )\n\n const [snippetState, setSnippet] = useStore(null)\n const [startLineState, setStartLine] = useStore(1)\n const [errorFileState, setErrorFile] = useStore('')\n const [errorLineState, setErrorLine] = useStore(0)\n const snippet = /** @type {string | null} */ snippetState\n const startLine = /** @type {number} */ startLineState\n const errorFile = /** @type {string} */ errorFileState\n const errorLine = /** @type {number} */ errorLineState\n\n // Normalize stack ensuring we have lines\n /** @type {string[]} */\n let stackLines = []\n if (error && error.stack) {\n stackLines =\n typeof error.stack === 'string'\n ? error.stack.split('\\n').filter((/** @type {string} */ line) => {\n const trimmed = line.trim()\n if (!trimmed) return false\n if (trimmed.includes('node_modules')) return false\n // Filter out internal Ryunix core framework files to isolate user code\n const isInternal = [\n 'components.js',\n 'workers.js',\n 'reconciler.js',\n 'commits.js',\n 'hooks.js',\n 'errorBoundary.js',\n 'serverBoundary.js',\n 'app-router.js',\n 'app-router-server.js',\n 'render.js',\n 'createElement.js',\n 'index.js',\n ].some((file) => trimmed.includes(file))\n return !isInternal\n })\n : Array.isArray(error.stack)\n ? /** @type {string[]} */ error.stack\n : []\n }\n\n const errorName =\n error && typeof error.name === 'string' ? error.name : 'Unknown Error Type'\n const errorMessage =\n error && typeof error.message === 'string'\n ? error.message\n : `Raw unhandled error. Debug: ${debugObjectStr}`\n\n useEffect(() => {\n let targetPath = null\n let targetLine = null\n\n // 1. Direct JSX __source mapping (injected by Webpack/SWC)\n const ryunixSource = error?.__ryunix_source\n if (ryunixSource?.fileName) {\n targetPath = ryunixSource.fileName\n targetLine = ryunixSource.lineNumber ?? null\n }\n\n // 2. Fallback to Regex Stack Parsing\n if (!targetPath || !targetLine) {\n for (let i = 0; i < stackLines.length; i++) {\n const line = stackLines[i]\n if (!line.includes(':')) continue\n\n // Deterministic string-based parsing (no regex on uncontrolled data)\n let matchedPath = null\n let matchedLine = null\n\n // V8 format: \"at fn (file:line:col)\" — extract content between parens\n const parenOpen = line.indexOf('(')\n const parenClose = line.lastIndexOf(')')\n if (parenOpen !== -1 && parenClose > parenOpen) {\n const inner = line.slice(parenOpen + 1, parenClose)\n const c2 = inner.lastIndexOf(':')\n const c1 = c2 > 0 ? inner.lastIndexOf(':', c2 - 1) : -1\n if (c1 > 0) {\n const col = inner.slice(c2 + 1)\n const ln = inner.slice(c1 + 1, c2)\n if (/^\\d+$/.test(ln) && /^\\d+$/.test(col)) {\n matchedPath = inner.slice(0, c1)\n matchedLine = parseInt(ln, 10)\n }\n }\n }\n\n // V8 format without parens: \"at file:line:col\"\n if (!matchedPath) {\n const trimmed = line.trim()\n if (trimmed.startsWith('at ')) {\n const rest = trimmed.slice(3).trim()\n const c2 = rest.lastIndexOf(':')\n const c1 = c2 > 0 ? rest.lastIndexOf(':', c2 - 1) : -1\n if (c1 > 0) {\n const col = rest.slice(c2 + 1)\n const ln = rest.slice(c1 + 1, c2)\n if (/^\\d+$/.test(ln) && /^\\d+$/.test(col)) {\n matchedPath = rest.slice(0, c1)\n matchedLine = parseInt(ln, 10)\n }\n }\n }\n }\n\n // Ryunix format: \"file.ryx:line\" or \"file.jsx:line\"\n if (!matchedPath) {\n const exts = ['.ryx', '.jsx', '.js', '.ts', '.tsx']\n const c1 = line.lastIndexOf(':')\n if (c1 > 0) {\n const ln = line.slice(c1 + 1).trim()\n const filePart = line.slice(0, c1).trim()\n if (\n /^\\d+$/.test(ln) &&\n exts.some((ext) => filePart.endsWith(ext))\n ) {\n matchedPath = filePart\n matchedLine = parseInt(ln, 10)\n }\n }\n }\n\n if (matchedPath && matchedLine) {\n targetPath = matchedPath\n targetLine = matchedLine\n break\n }\n }\n }\n\n if (targetPath && targetLine) {\n setErrorFile(targetPath)\n setErrorLine(targetLine)\n fetch(\n `/_ryunix/source?file=${encodeURIComponent(targetPath)}&line=${targetLine}`,\n )\n .then((res) => res.json())\n .then((data) => {\n if (data.snippet) {\n setSnippet(data.snippet)\n setStartLine(data.startLine)\n }\n })\n .catch((err) => console.error('Failed to fetch source snippet', err))\n }\n }, [error])\n\n const overlayStyle = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 2147483647,\n backgroundColor: 'rgba(0, 0, 0, 0.85)',\n backdropFilter: 'blur(8px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n }\n\n const modalStyle = {\n backgroundColor: '#0c0c0c',\n width: '100%',\n maxWidth: '1000px',\n maxHeight: '90vh',\n borderRadius: '12px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.8)',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n border: '1px solid #333',\n }\n\n const headerStyle = {\n backgroundColor: '#161616',\n padding: '16px 24px',\n borderBottom: '1px solid #333',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }\n\n const badgeStyle = {\n backgroundColor: 'rgba(239, 68, 68, 0.2)',\n color: '#ef4444',\n padding: '4px 8px',\n borderRadius: '4px',\n fontSize: '13px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }\n\n const contentStyle = {\n padding: '32px',\n overflowY: 'auto',\n flex: 1,\n color: '#fff',\n }\n\n const titleStyle = {\n fontSize: '24px',\n fontWeight: 'bold',\n marginBottom: '24px',\n fontFamily: 'ui-monospace, monospace',\n wordBreak: 'break-word',\n lineHeight: 1.4,\n }\n\n const snippetContainerStyle = {\n backgroundColor: '#000',\n borderRadius: '8px',\n border: '1px solid #333',\n padding: '16px',\n fontFamily: 'ui-monospace, monospace',\n fontSize: '14px',\n overflowX: 'auto',\n color: '#d1d5db',\n marginBottom: '32px',\n whiteSpace: 'pre-wrap',\n maxHeight: '150px',\n height: 'auto',\n }\n\n /** @param {boolean} isErrorLine */\n const lineStyle = (isErrorLine) => ({\n display: 'flex',\n backgroundColor: isErrorLine ? 'rgba(239, 68, 68, 0.15)' : 'transparent',\n padding: '2px 8px',\n borderRadius: '4px',\n borderLeft: isErrorLine ? '3px solid #ef4444' : '3px solid transparent',\n })\n\n const snippetLines = snippet ? snippet.split('\\n') : []\n\n let badgeText = 'UNHANDLED RUNTIME ERROR'\n if (\n errorName &&\n errorName !== 'Error' &&\n errorName !== 'Unknown Error Type'\n ) {\n badgeText = errorName.replace(/([a-z])([A-Z])/g, '$1 $2').toUpperCase()\n }\n\n return createElement(\n 'div',\n { style: overlayStyle },\n createElement(\n 'div',\n { style: modalStyle },\n createElement(\n 'div',\n { style: headerStyle },\n createElement(\n 'div',\n { style: { display: 'flex', alignItems: 'center', gap: '12px' } },\n createElement('span', { style: badgeStyle }, badgeText),\n createElement(\n 'span',\n { style: { color: '#9ca3af', fontSize: '14px' } },\n 'Ryunix Development',\n ),\n ),\n createElement(\n 'button',\n {\n onClick: () => window.location.reload(),\n style: {\n background: 'none',\n border: 'none',\n color: '#9ca3af',\n cursor: 'pointer',\n outline: 'none',\n },\n title: 'Reload page',\n },\n createElement(\n 'svg',\n {\n width: '20',\n height: '20',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n createElement('path', {\n d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8',\n }),\n createElement('path', { d: 'M3 3v5h5' }),\n ),\n ),\n ),\n createElement(\n 'div',\n { style: contentStyle },\n createElement(\n 'h1',\n { style: titleStyle },\n createElement('span', { style: { color: '#f87171' } }, errorName),\n ': ',\n errorMessage,\n ),\n\n errorFile &&\n createElement(\n 'div',\n {\n style: {\n marginBottom: '16px',\n color: '#9ca3af',\n fontSize: '14px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n },\n createElement(\n 'svg',\n {\n width: '16',\n height: '16',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n createElement('path', {\n d: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\n }),\n createElement('polyline', { points: '13 2 13 9 20 9' }),\n ),\n errorFile,\n ':',\n errorLine,\n ),\n\n snippet &&\n createElement(\n 'div',\n { style: snippetContainerStyle },\n createElement(\n 'div',\n { style: { display: 'flex', flexDirection: 'column' } },\n ...snippetLines.map(\n (\n /** @type {string} */ lineText,\n /** @type {number} */ index,\n ) => {\n const currentLineNumber = startLine + index\n const isErrorLine = currentLineNumber === errorLine\n return createElement(\n 'div',\n { key: index, style: lineStyle(isErrorLine) },\n createElement(\n 'span',\n {\n style: {\n color: '#6b7280',\n width: '40px',\n userSelect: 'none',\n textAlign: 'right',\n marginRight: '16px',\n display: 'inline-block',\n },\n },\n currentLineNumber,\n ),\n createElement(\n 'span',\n {\n style: {\n color: isErrorLine ? '#f87171' : '#e5e7eb',\n whiteSpace: 'pre',\n },\n },\n lineText || ' ',\n ),\n )\n },\n ),\n ),\n ),\n\n createElement(\n 'div',\n { style: { marginBottom: '16px' } },\n createElement(\n 'p',\n {\n style: {\n color: '#9ca3af',\n fontSize: '14px',\n marginBottom: '8px',\n fontWeight: 600,\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n },\n },\n 'Call Stack',\n ),\n createElement(\n 'div',\n { style: snippetContainerStyle },\n stackLines.length > 0\n ? createElement(\n 'ul',\n {\n style: {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n },\n },\n ...stackLines.map(\n (/** @type {string} */ line, /** @type {number} */ i) => {\n if (\n i === 0 &&\n (line.startsWith('Error:') ||\n line.startsWith('TypeError:'))\n )\n return null\n\n // Deterministic string-based stack frame parsing (no polynomial regex)\n const trimmed = line.trim()\n let fnName = '<anonymous>'\n let filePath = line\n\n // V8 format: \"at fnName (file:line:col)\" or \"at file:line:col\"\n if (trimmed.startsWith('at ')) {\n const rest = trimmed.slice(3)\n const parenOpen = rest.indexOf('(')\n const parenClose = rest.lastIndexOf(')')\n if (parenOpen !== -1 && parenClose > parenOpen) {\n fnName =\n rest.slice(0, parenOpen).trim() || '<anonymous>'\n filePath = rest.slice(parenOpen + 1, parenClose)\n } else {\n // \"at file:line:col\" — no function name\n if (rest.includes(':')) {\n fnName = '<anonymous>'\n } else {\n fnName = rest\n }\n filePath = rest\n }\n }\n // Firefox format: \"fnName@file:line:col\"\n else if (trimmed.includes('@')) {\n const atIdx = trimmed.indexOf('@')\n fnName = trimmed.slice(0, atIdx) || '<anonymous>'\n filePath = trimmed.slice(atIdx + 1)\n }\n // Ryunix format: \"fnName file.ext:line\"\n else {\n const exts = ['.ryx', '.jsx', '.js', '.ts', '.tsx']\n const parts = trimmed.split(/\\s+/)\n if (parts.length >= 2) {\n const lastPart = parts[parts.length - 1]\n const colonIdx = lastPart.indexOf(':')\n const fileCandidate =\n colonIdx > 0\n ? lastPart.slice(0, colonIdx)\n : lastPart\n if (exts.some((ext) => fileCandidate.endsWith(ext))) {\n fnName = parts.slice(0, -1).join(' ')\n filePath = lastPart\n } else {\n fnName = parts[0]\n filePath = parts.slice(1).join(' ')\n }\n }\n }\n\n return createElement(\n 'li',\n { key: i },\n createElement(\n 'span',\n { style: { color: '#60a5fa', fontWeight: 600 } },\n fnName,\n ),\n createElement(\n 'div',\n {\n style: {\n color: '#6b7280',\n marginTop: '4px',\n paddingLeft: '16px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n },\n createElement(\n 'svg',\n {\n width: '12',\n height: '12',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n },\n createElement('path', {\n d: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\n }),\n createElement('polyline', {\n points: '13 2 13 9 20 9',\n }),\n ),\n filePath,\n ),\n )\n },\n ),\n )\n : createElement(\n 'div',\n { style: { color: '#6b7280', fontStyle: 'italic' } },\n 'No stack trace available.',\n ),\n ),\n ),\n ),\n ),\n )\n}\n","/**\n * Public API surface of `@unsetsoft/ryunixjs`.\n * Re-exports createElement, hooks, render, SSR helpers, and related utilities.\n *\n * @module lib/index\n */\n\nexport {\n createElement,\n Fragment,\n cloneElement,\n isValidElement,\n} from './createElement.js'\nexport { render, init, safeRender, hydrate } from './render.js'\nexport {\n renderToString,\n renderToReadableStream,\n escapeHtml,\n renderToStringAsync,\n} from './server.js'\nexport * from './hooks.js'\nexport * as Hooks from './hooks.js'\nexport { memo, shallowEqual, deepEqual } from './memo.js'\nexport { lazy, Suspense, preload } from './lazy.js'\nexport { batchUpdates } from './batching.js'\nexport { Priority } from './priority.js'\nexport { profiler, useProfiler, withProfiler } from './profiler.js'\nexport { forwardRef } from './forwardRef.js'\nexport { createPortal } from './portal.js'\nexport { ServerBoundary, HydrationBoundary } from './serverBoundary.js'\nexport { ErrorBoundary } from './errorBoundary.js'\nexport {\n logHydrationInfo,\n logHydrationRecoverable,\n logHydrationBoundaryMismatch,\n logHydrationBoundaryRecovery,\n logHydrationFatal,\n} from './hydrationLog.js'\nexport { getState } from '../utils/index.js'\nexport { createActionProxy } from './serverActions.js'\nexport { RyunixDevOverlay } from './devOverlay.js'\n","import * as Ryunix from './lib/index.js'\nexport * from './lib/index.js'\nexport {\n Image,\n MDXContent,\n MDXProvider,\n useMDXComponents,\n getMDXComponents,\n defaultComponents,\n} from './lib/components.js'\nif (typeof window !== 'undefined') window.Ryunix = Ryunix\nexport default Ryunix\n"],"names":["nextValidSibling","pendingUpdates","scheduleWork","validateHookCall"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Ryunix.umd.js","sources":["../.generated/utils/index.js","../.generated/lib/reconciler/createElement.js","../.generated/lib/reconciler/effects.js","../.generated/utils/svgAttributes.js","../.generated/lib/reconciler/priority.js","../.generated/lib/reconciler/dom.js","../.generated/lib/render/portal.js","../.generated/lib/hydration/log.js","../.generated/lib/reconciler/commits.js","../.generated/lib/reconciler/reconciler.js","../.generated/lib/hydration/policy.js","../.generated/lib/reconciler/fiber-update.js","../.generated/lib/reconciler/bridge.js","../.generated/lib/hydration/recover.js","../.generated/lib/reconciler/workers.js","../.generated/lib/render/render.js","../.generated/lib/reconciler/batching.js","../.generated/lib/devtools/runtime.js","../.generated/lib/hooks/metadata.js","../.generated/lib/hooks/hooks.js","../.generated/lib/server/ssr.js","../.generated/lib/hooks/memo.js","../.generated/lib/hooks/forwardRef.js","../.generated/lib/hooks/lazy.js","../.generated/lib/devtools/profiler.js","../.generated/lib/hydration/boundaries.js","../.generated/lib/ui/error-boundary.js","../.generated/lib/server/actions.js","../.generated/lib/ui/dev-overlay.js","../.generated/lib/ui/theme.js","../.generated/lib/ui/theme-toggle.js","../.generated/lib/ui/layout.js","../.generated/lib/i18n/config.js","../.generated/lib/i18n/messages.js","../.generated/lib/i18n/paths.js","../.generated/lib/i18n/createI18n.js","../.generated/lib/ui/mdx.js","../.generated/main.js"],"sourcesContent":["const rICFallback = (cb) => setTimeout(() => cb({ timeRemaining: () => 1 }), 1);\nconst rIC = typeof requestIdleCallback !== 'undefined' ? requestIdleCallback : rICFallback;\nconst createRenderState = () => ({\n containerRoot: null,\n nextUnitOfWork: null,\n currentRoot: null,\n wipRoot: null,\n deletions: [],\n wipFiber: null,\n hookIndex: 0,\n effects: [],\n});\nlet globalState = createRenderState();\nexport const getState = () => globalState;\nconst CAMEL_TO_KEBAB_REGEX = /[A-Z]/g;\nexport const RYUNIX_TYPES = Object.freeze({\n TEXT_ELEMENT: Symbol.for('ryunix.text.element'),\n RYUNIX_ELEMENT: Symbol.for('ryunix.element'),\n RYUNIX_EFFECT: Symbol.for('ryunix.effect'),\n RYUNIX_MEMO: Symbol.for('ryunix.memo'),\n RYUNIX_URL_QUERY: Symbol.for('ryunix.urlQuery'),\n RYUNIX_REF: Symbol.for('ryunix.ref'),\n RYUNIX_STORE: Symbol.for('ryunix.store'),\n RYUNIX_REDUCE: Symbol.for('ryunix.reduce'),\n RYUNIX_FRAGMENT: Symbol.for('ryunix.fragment'),\n RYUNIX_CONTEXT: Symbol.for('ryunix.context'),\n RYUNIX_SUSPENSE: Symbol.for('ryunix.suspense'),\n});\nexport const STRINGS = Object.freeze({\n OBJECT: 'object',\n FUNCTION: 'function',\n STYLE: 'ryunix-style',\n CLASS_NAME: 'ryunix-class',\n CHILDREN: 'children',\n BOOLEAN: 'boolean',\n STRING: 'string',\n UNDEFINED: 'undefined',\n});\nexport const OLD_STRINGS = Object.freeze({\n STYLE: 'style',\n CLASS_NAME: 'className',\n});\nexport const EFFECT_TAGS = Object.freeze({\n PLACEMENT: Symbol.for('ryunix.reconciler.status.placement'),\n UPDATE: Symbol.for('ryunix.reconciler.status.update'),\n DELETION: Symbol.for('ryunix.reconciler.status.deletion'),\n NO_EFFECT: Symbol.for('ryunix.reconciler.status.no_effect'),\n HYDRATE: Symbol.for('ryunix.reconciler.status.hydrate'),\n});\nexport function flattenArray(arr, depth = 1) {\n if (!Array.isArray(arr))\n return [arr];\n if (depth < 1)\n return arr.slice();\n return arr.reduce((acc, val) => {\n if (Array.isArray(val) && depth > 0) {\n acc.push(...flattenArray(val, depth - 1));\n }\n else {\n acc.push(val);\n }\n return acc;\n }, []);\n}\nexport const is = {\n object: (val) => val !== null && typeof val === STRINGS.OBJECT,\n function: (val) => typeof val === STRINGS.FUNCTION,\n string: (val) => typeof val === STRINGS.STRING,\n undefined: (val) => typeof val === STRINGS.UNDEFINED,\n null: (val) => val === null,\n array: (val) => Array.isArray(val),\n promise: (val) => val instanceof Promise,\n};\nexport function getTypeLabel(type) {\n if (typeof type === 'symbol')\n return type.description || type.toString();\n if (typeof type === 'function')\n return type.name || 'anonymous';\n return String(type);\n}\nexport function nextValidSibling(node) {\n let next = node;\n while (next &&\n ((next.nodeType === 3 && !next.nodeValue?.trim()) ||\n next.nodeType === 8 ||\n (next.nodeType === 1 &&\n next.hasAttribute('data-ryunix-ssr')))) {\n next = next.nextSibling;\n }\n return next;\n}\nexport { CAMEL_TO_KEBAB_REGEX, rIC };\n","import { RYUNIX_TYPES, STRINGS, is } from '../../utils/index.js';\nconst createTextElement = (text) => {\n return {\n type: RYUNIX_TYPES.TEXT_ELEMENT,\n props: {\n nodeValue: String(text),\n children: [],\n },\n };\n};\nconst createElement = (type, props, ...children) => {\n const safeProps = props || {};\n let rawChildren = children;\n if (children.length === 0 && safeProps.children !== undefined) {\n rawChildren = Array.isArray(safeProps.children)\n ? safeProps.children\n : [safeProps.children];\n }\n rawChildren = rawChildren\n .flat()\n .filter((child) => child != null && child !== false && child !== true);\n const normalizedChildren = [];\n let currentText = '';\n for (const child of rawChildren) {\n if (typeof child !== STRINGS.OBJECT) {\n currentText += String(child);\n }\n else {\n if (currentText !== '') {\n normalizedChildren.push(createTextElement(currentText));\n currentText = '';\n }\n normalizedChildren.push(child);\n }\n }\n if (currentText !== '') {\n normalizedChildren.push(createTextElement(currentText));\n }\n return {\n type,\n props: {\n ...safeProps,\n children: normalizedChildren,\n },\n };\n};\nconst Fragment = (props) => {\n const children = Array.isArray(props.children)\n ? props.children\n : [props.children];\n return createElement(RYUNIX_TYPES.RYUNIX_FRAGMENT, {}, ...children);\n};\nconst cloneElement = (element, props = {}, ...children) => {\n if (!element || !is.object(element)) {\n throw new Error('cloneElement requires a valid element');\n }\n const newChildren = children.length > 0 ? children : (element.props.children ?? []);\n return createElement(element.type, { ...element.props, ...props }, ...(Array.isArray(newChildren) ? newChildren : [newChildren]));\n};\nconst isValidElement = (object) => {\n return (is.object(object) &&\n object.type !== undefined &&\n object.props !== undefined);\n};\nexport { createElement, createTextElement, Fragment, cloneElement, isValidElement, };\n","import { RYUNIX_TYPES, STRINGS, is } from '../../utils/index.js';\nconst isEvent = (key) => key.startsWith('on');\nconst RESERVED_DOM_PROPS = new Set(['key', 'ref', STRINGS.CHILDREN]);\nconst isProperty = (key) => !RESERVED_DOM_PROPS.has(key) && !isEvent(key);\nconst isNew = (prev, next) => (key) => {\n return !Object.is(prev[key], next[key]);\n};\nconst isGone = (next) => (key) => !(key in next);\nconst cancelEffects = (fiber) => {\n if (!fiber?.hooks?.length)\n return;\n fiber.hooks\n .filter((hook) => hook.type === RYUNIX_TYPES.RYUNIX_EFFECT && is.function(hook.cancel))\n .forEach((hook) => {\n try {\n if (hook.cancel)\n hook.cancel();\n hook.cancel = null;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect cleanup:', error);\n }\n }\n });\n};\nconst cancelEffectsDeep = (fiber) => {\n if (!fiber)\n return;\n if (fiber.hooks?.length) {\n fiber.hooks\n .filter((hook) => hook.type === RYUNIX_TYPES.RYUNIX_EFFECT && is.function(hook.cancel))\n .forEach((hook) => {\n try {\n if (hook.cancel)\n hook.cancel();\n hook.cancel = null;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in deep effect cleanup:', error);\n }\n }\n });\n }\n if (fiber.child)\n cancelEffectsDeep(fiber.child);\n if (fiber.sibling)\n cancelEffectsDeep(fiber.sibling);\n};\nexport { cancelEffects, cancelEffectsDeep, isEvent, isProperty, isNew, isGone };\n","const SVG_ATTR_MAP = {\n strokeWidth: 'stroke-width',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n fillRule: 'fill-rule',\n fillOpacity: 'fill-opacity',\n clipRule: 'clip-rule',\n clipPath: 'clip-path',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontWeight: 'font-weight',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n dominantBaseline: 'dominant-baseline',\n alignmentBaseline: 'alignment-baseline',\n baselineShift: 'baseline-shift',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n lightingColor: 'lighting-color',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n pointerEvents: 'pointer-events',\n shapeRendering: 'shape-rendering',\n imageRendering: 'image-rendering',\n markerStart: 'marker-start',\n markerMid: 'marker-mid',\n markerEnd: 'marker-end',\n};\nexport function toSvgAttrName(name) {\n return SVG_ATTR_MAP[name] ?? name;\n}\nexport { SVG_ATTR_MAP };\n","import { rIC } from '../../utils/index.js';\nexport const Priority = {\n IMMEDIATE: 1,\n USER_BLOCKING: 2,\n NORMAL: 3,\n LOW: 4,\n IDLE: 5,\n};\nlet currentPriority = Priority.NORMAL;\nlet pendingUpdates = [];\nlet isScheduling = false;\nexport function scheduleUpdate(callback, priority = Priority.NORMAL) {\n pendingUpdates.push({ callback, priority, timestamp: Date.now() });\n if (!isScheduling) {\n isScheduling = true;\n rIC(processPendingUpdates);\n }\n}\nfunction processPendingUpdates(deadline) {\n pendingUpdates.sort((a, b) => a.priority - b.priority);\n while (pendingUpdates.length > 0 && deadline.timeRemaining() > 1) {\n const update = pendingUpdates.shift();\n if (!update)\n break;\n currentPriority = update.priority;\n update.callback();\n }\n if (pendingUpdates.length > 0) {\n rIC(processPendingUpdates);\n }\n else {\n isScheduling = false;\n currentPriority = Priority.NORMAL;\n }\n}\nexport function runWithPriority(priority, callback) {\n const previousPriority = currentPriority;\n currentPriority = priority;\n try {\n return callback();\n }\n finally {\n currentPriority = previousPriority;\n }\n}\nexport function getCurrentPriority() {\n return currentPriority;\n}\nexport function createPriorityDispatch(dispatch) {\n return (action, priority = currentPriority) => {\n scheduleUpdate(() => dispatch(action), priority);\n };\n}\n","import { isEvent, isGone, isNew, isProperty } from './effects.js';\nimport { RYUNIX_TYPES, STRINGS, OLD_STRINGS, CAMEL_TO_KEBAB_REGEX, is, } from '../../utils/index.js';\nimport { toSvgAttrName } from '../../utils/svgAttributes.js';\nimport { Priority, runWithPriority } from './priority.js';\nconst camelToKebab = (camelCase) => {\n return camelCase.replace(CAMEL_TO_KEBAB_REGEX, (match) => `-${match.toLowerCase()}`);\n};\nconst applyStyles = (dom, styleObj) => {\n if (!is.object(styleObj) || is.null(styleObj)) {\n dom.style.cssText = '';\n return;\n }\n try {\n const cssText = Object.entries(styleObj)\n .filter(([_, value]) => value != null)\n .map(([key, value]) => {\n const kebabKey = camelToKebab(key);\n return `${kebabKey}: ${value}`;\n })\n .join('; ');\n dom.style.cssText = cssText;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error applying styles:', error);\n }\n }\n};\nconst applyClasses = (dom, prevClasses, nextClasses) => {\n if (!nextClasses || nextClasses.trim() === '') {\n if (prevClasses) {\n const oldClasses = prevClasses.split(/\\s+/).filter(Boolean);\n dom.classList.remove(...oldClasses);\n }\n return;\n }\n if (prevClasses) {\n const oldClasses = prevClasses.split(/\\s+/).filter(Boolean);\n dom.classList.remove(...oldClasses);\n }\n const newClasses = nextClasses.split(/\\s+/).filter(Boolean);\n if (newClasses.length > 0) {\n dom.classList.add(...newClasses);\n }\n};\nconst createDom = (fiber) => {\n if (fiber.type === RYUNIX_TYPES.RYUNIX_FRAGMENT ||\n fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT ||\n fiber.type === Symbol.for('ryunix.portal')) {\n return null;\n }\n let dom;\n try {\n if (fiber.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n dom = document.createTextNode('');\n }\n else if (is.string(fiber.type)) {\n const hostType = fiber.type;\n const isSvg = [\n 'svg',\n 'path',\n 'g',\n 'circle',\n 'polygon',\n 'rect',\n 'line',\n 'polyline',\n 'ellipse',\n 'text',\n 'tspan',\n 'defs',\n 'use',\n 'symbol',\n 'mask',\n 'clipPath',\n 'linearGradient',\n 'radialGradient',\n 'stop',\n 'filter',\n 'feGaussianBlur',\n 'feOffset',\n 'feMerge',\n 'feMergeNode',\n 'feBlend',\n 'feColorMatrix',\n 'feComposite',\n 'foreignObject',\n 'image',\n 'marker',\n 'pattern',\n 'textPath',\n ].includes(hostType);\n if (isSvg) {\n dom = document.createElementNS('http://www.w3.org/2000/svg', hostType);\n }\n else {\n dom = document.createElement(hostType);\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Attempted to create DOM for non-host component:', fiber.type);\n }\n return null;\n }\n updateDom(dom, {}, fiber.props);\n return dom;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error creating DOM element:', error, fiber);\n }\n return null;\n }\n};\nconst checkAttributeUri = (attrName, value) => {\n if (typeof value !== 'string')\n return value;\n const attr = attrName.toLowerCase();\n if (attr !== 'href' &&\n attr !== 'src' &&\n attr !== 'action' &&\n attr !== 'formaction') {\n return value;\n }\n const normalized = value.replace(/\\s+/g, '').toLowerCase();\n if (normalized.startsWith('javascript:') ||\n normalized.startsWith('vbscript:') ||\n normalized.startsWith('data:')) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Ryunix Security] Blocked dangerous ${attrName} URI: ${value}`);\n }\n return 'javascript:void(0)';\n }\n return value;\n};\nexport const validateUri = checkAttributeUri;\nconst updateDom = (dom, prevProps = {}, nextProps = {}) => {\n if (dom.nodeType === 3) {\n if (prevProps.nodeValue !== nextProps.nodeValue) {\n dom.nodeValue = String(nextProps.nodeValue ?? '');\n }\n return;\n }\n const el = dom;\n const domEl = el;\n const handlerMap = domEl._ryunixHandlers;\n const elRecord = el;\n Object.keys(prevProps)\n .filter(isEvent)\n .filter((key) => isGone(nextProps)(key) || isNew(prevProps, nextProps)(key))\n .forEach((propKey) => {\n const eventType = propKey.toLowerCase().substring(2);\n try {\n const originalHandler = prevProps[propKey];\n const wrappedHandler = handlerMap?.get(originalHandler) || originalHandler;\n el.removeEventListener(eventType, wrappedHandler);\n if (handlerMap) {\n handlerMap.delete(originalHandler);\n }\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Error removing event listener:', error);\n }\n }\n });\n Object.keys(prevProps)\n .filter(isProperty)\n .filter(isGone(nextProps))\n .forEach((propKey) => {\n if (propKey === STRINGS.STYLE ||\n propKey === OLD_STRINGS.STYLE ||\n propKey === STRINGS.CLASS_NAME ||\n propKey === OLD_STRINGS.CLASS_NAME) {\n return;\n }\n if (el instanceof SVGElement) {\n const attrName = toSvgAttrName(propKey);\n el.removeAttribute(attrName);\n }\n else {\n elRecord[propKey] = '';\n el.removeAttribute(propKey);\n }\n });\n Object.keys(nextProps)\n .filter(isProperty)\n .filter(isNew(prevProps, nextProps))\n .forEach((propKey) => {\n try {\n if (propKey === STRINGS.STYLE || propKey === OLD_STRINGS.STYLE) {\n const styleValue = nextProps[propKey];\n applyStyles(el, styleValue);\n }\n else if (propKey === STRINGS.CLASS_NAME) {\n applyClasses(el, prevProps[STRINGS.CLASS_NAME], nextProps[STRINGS.CLASS_NAME]);\n }\n else if (propKey === OLD_STRINGS.CLASS_NAME) {\n applyClasses(el, prevProps[OLD_STRINGS.CLASS_NAME], nextProps[OLD_STRINGS.CLASS_NAME]);\n }\n else {\n if (propKey === 'value' || propKey === 'checked') {\n if (elRecord[propKey] !== nextProps[propKey]) {\n elRecord[propKey] = nextProps[propKey];\n }\n }\n else {\n const isSvgNode = el instanceof SVGElement;\n if (isSvgNode) {\n const attrName = toSvgAttrName(propKey);\n const svgValidated = checkAttributeUri(attrName, nextProps[propKey]);\n el.setAttribute(attrName, String(svgValidated));\n }\n else {\n const attrVal = nextProps[propKey];\n const safeValue = checkAttributeUri(propKey, attrVal);\n elRecord[propKey] = safeValue;\n if (typeof attrVal !== 'object' &&\n typeof attrVal !== 'function') {\n el.setAttribute(propKey, String(safeValue));\n }\n }\n }\n }\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Error setting property ${propKey}:`, error);\n }\n }\n });\n Object.keys(nextProps)\n .filter(isEvent)\n .filter(isNew(prevProps, nextProps))\n .forEach((propKey) => {\n const eventType = propKey.toLowerCase().substring(2);\n try {\n const handler = (e) => {\n runWithPriority(Priority.IMMEDIATE, () => nextProps[propKey](e));\n };\n if (!domEl._ryunixHandlers) {\n domEl._ryunixHandlers = new Map();\n }\n domEl._ryunixHandlers.set(nextProps[propKey], handler);\n el.addEventListener(eventType, handler);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Error adding event listener:', error);\n }\n }\n });\n};\nconst clearContainer = (container) => {\n if (!container)\n return;\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n};\nexport { createDom, updateDom, applyStyles, applyClasses, camelToKebab, clearContainer, };\n","export const RYUNIX_PORTAL = Symbol.for('ryunix.portal');\nexport function createPortal(children, container) {\n if (!container) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('createPortal: target container is not a DOM element.');\n }\n return null;\n }\n return {\n type: RYUNIX_PORTAL,\n props: {\n children: Array.isArray(children) ? children : [children],\n },\n containerInfo: container,\n _isPortal: true,\n };\n}\n","import { getState } from '../../utils/index.js';\nconst PREFIX = '[Ryunix Hydration]';\nconst emit = (level, message) => {\n const line = `${PREFIX} ${message}`;\n if (level === 'error') {\n console.error(line);\n }\n else {\n console.warn(line);\n }\n};\nconst shouldReportStrict = () => process.env.NODE_ENV !== 'production' &&\n process.env.RYUNIX_HYDRATION_STRICT === 'true';\nexport const logHydrationInfo = (message) => {\n if (!shouldReportStrict())\n return;\n emit('warn', message);\n};\nexport const logHydrationMismatch = (detail) => {\n const state = getState();\n if (state.hydrationMismatchReported)\n return;\n state.hydrationMismatchReported = true;\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn';\n emit(level, `${detail} Server HTML did not match the client render. Falling back to client-side render.`);\n};\nexport const logHydrationBoundaryMismatch = (detail) => {\n const state = getState();\n if (state.hydrationBoundaryMismatchReported)\n return;\n state.hydrationBoundaryMismatchReported = true;\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn';\n emit(level, `${detail} Recovering the nearest hydration boundary with a scoped client render.`);\n};\nexport const logHydrationRecoverable = (detail) => {\n if (!shouldReportStrict())\n return;\n emit('warn', `Recovered a hydration mismatch (${detail}) without root fallback.`);\n};\nexport const logHydrationFailure = (reason = '') => {\n const state = getState();\n if (state.hydrationFailureReported)\n return;\n state.hydrationFailureReported = true;\n const detail = reason\n ? `${reason} `\n : state.hydrationMismatchReported\n ? ''\n : 'Hydration could not attach to the server HTML. ';\n const level = process.env.NODE_ENV === 'production' ? 'error' : 'warn';\n emit(level, `${detail}Clearing #__ryunix and remounting on the client.`);\n};\nexport const logHydrationUnmatchedNodes = (count) => {\n if (!count)\n return;\n const state = getState();\n if (state.hydrationUnmatchedReported)\n return;\n state.hydrationUnmatchedReported = true;\n emit('warn', `Removed ${count} server-rendered DOM node(s) that were not used by the client tree. This can indicate an SSR/client markup mismatch.`);\n};\nexport const logHydrationRecovery = () => {\n const state = getState();\n if (state.hydrationRecoveryReported)\n return;\n state.hydrationRecoveryReported = true;\n emit('warn', 'Remounting the application on the client after hydration failure.');\n};\nexport const logHydrationBoundaryRecovery = () => {\n const state = getState();\n if (state.hydrationBoundaryRecoveryReported)\n return;\n state.hydrationBoundaryRecoveryReported = true;\n emit('warn', 'Remounting a hydration boundary after local mismatch.');\n};\nexport const logHydrationFatal = (reason) => {\n emit('error', reason);\n};\nexport const resetHydrationLogFlags = () => {\n const state = getState();\n state.hydrationMismatchReported = false;\n state.hydrationBoundaryMismatchReported = false;\n state.hydrationFailureReported = false;\n state.hydrationUnmatchedReported = false;\n state.hydrationRecoveryReported = false;\n state.hydrationBoundaryRecoveryReported = false;\n};\n","import { updateDom } from './dom.js';\nimport { cancelEffects, cancelEffectsDeep } from './effects.js';\nimport { EFFECT_TAGS, RYUNIX_TYPES, getState, is } from '../../utils/index.js';\nimport { RYUNIX_PORTAL } from '../render/portal.js';\nimport { logHydrationUnmatchedNodes } from '../hydration/log.js';\nconst runLayoutEffects = (fiber) => {\n if (!fiber?.hooks?.length)\n return;\n for (let i = 0; i < fiber.hooks.length; i++) {\n const hook = fiber.hooks[i];\n if (hook.type === RYUNIX_TYPES.RYUNIX_EFFECT &&\n hook.isLayout &&\n is.function(hook.effect)) {\n if (is.function(hook.cancel)) {\n try {\n hook.cancel();\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in layout effect cleanup:', error);\n }\n }\n }\n try {\n const cleanup = hook.effect();\n hook.cancel = is.function(cleanup) ? cleanup : null;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in layout effect:', error);\n }\n hook.cancel = null;\n }\n hook.effect = null;\n }\n }\n};\nconst runNormalEffects = (fiber) => {\n if (!fiber?.hooks?.length)\n return;\n for (let i = 0; i < fiber.hooks.length; i++) {\n const hook = fiber.hooks[i];\n if (hook.type === RYUNIX_TYPES.RYUNIX_EFFECT &&\n !hook.isLayout &&\n is.function(hook.effect)) {\n if (is.function(hook.cancel)) {\n try {\n hook.cancel();\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect cleanup:', error);\n }\n }\n }\n try {\n const cleanup = hook.effect();\n hook.cancel = is.function(cleanup) ? cleanup : null;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in effect:', error);\n }\n hook.cancel = null;\n }\n hook.effect = null;\n }\n }\n};\nfunction commitRoot() {\n const state = getState();\n state.deletions.forEach(commitWork);\n const finishedWork = state.wipRoot;\n if (!finishedWork)\n return;\n state.currentRoot = finishedWork;\n if (state.isHydrating || state.hydrationFailed) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(`[Ryunix Debug] commitRoot - isHydrating: ${state.isHydrating}, hydrationFailed: ${state.hydrationFailed}`);\n }\n if (state.hydrationFailed) {\n }\n else {\n let cursor = state.hydrateCursor;\n let removed = 0;\n if (cursor &&\n process.env.NODE_ENV !== 'production' &&\n process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Removing unmatched root siblings.');\n }\n while (cursor) {\n const next = cursor.nextSibling;\n if (cursor.parentNode) {\n cursor.parentNode.removeChild(cursor);\n removed++;\n }\n cursor = next;\n }\n logHydrationUnmatchedNodes(removed);\n }\n state.isHydrating = false;\n state.hydrationFailed = false;\n state.hydrateCursor = null;\n }\n commitWork(finishedWork.child);\n if (state.wipRoot === finishedWork) {\n state.wipRoot = null;\n }\n}\nfunction commitWork(fiber) {\n if (!fiber) {\n return;\n }\n if (fiber.type === RYUNIX_PORTAL || fiber._isPortal) {\n const portalContainer = fiber.containerInfo;\n if (portalContainer) {\n const portalFiber = fiber.child;\n if (portalFiber) {\n commitPortalWork(portalFiber, portalContainer);\n }\n }\n commitWork(fiber.sibling);\n return;\n }\n let domParentFiber = fiber.parent;\n while (domParentFiber && !domParentFiber.dom) {\n domParentFiber = domParentFiber.parent;\n }\n if (!domParentFiber) {\n return;\n }\n const domParent = domParentFiber.dom;\n if (!domParent)\n return;\n if (fiber.effectTag === EFFECT_TAGS.PLACEMENT) {\n if (fiber.dom != null) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Appending PLACEMENT:', fiber.type);\n }\n domParent.appendChild(fiber.dom);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n else if (fiber.effectTag === EFFECT_TAGS.UPDATE) {\n cancelEffects(fiber);\n if (fiber.dom != null) {\n updateDom(fiber.dom, fiber.alternate?.props, fiber.props);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n else if (fiber.effectTag === EFFECT_TAGS.HYDRATE) {\n const state = getState();\n if (state.hydrationFailed) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Hydration fallback PLACEMENT:', fiber.type);\n }\n if (fiber.dom != null) {\n domParent.appendChild(fiber.dom);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n else {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log('[Ryunix Debug] Hydrating node:', fiber.type);\n }\n if (fiber.dom != null) {\n updateDom(fiber.dom, {}, fiber.props);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n }\n else if (fiber.effectTag === EFFECT_TAGS.DELETION) {\n cancelEffectsDeep(fiber);\n commitDeletion(fiber, domParent);\n return;\n }\n commitWork(fiber.child);\n commitWork(fiber.sibling);\n}\nconst commitPortalWork = (fiber, portalContainer) => {\n if (!fiber)\n return;\n if (fiber.effectTag === EFFECT_TAGS.PLACEMENT) {\n if (fiber.dom != null) {\n portalContainer.appendChild(fiber.dom);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n else if (fiber.effectTag === EFFECT_TAGS.UPDATE) {\n cancelEffects(fiber);\n if (fiber.dom != null) {\n updateDom(fiber.dom, fiber.alternate?.props, fiber.props);\n }\n runLayoutEffects(fiber);\n runNormalEffects(fiber);\n }\n else if (fiber.effectTag === EFFECT_TAGS.DELETION) {\n cancelEffectsDeep(fiber);\n commitDeletion(fiber, portalContainer);\n return;\n }\n commitPortalWork(fiber.child, portalContainer);\n commitPortalWork(fiber.sibling, portalContainer);\n};\nconst commitDeletion = (fiber, domParent) => {\n if (fiber.dom) {\n if (fiber.dom.parentNode) {\n fiber.dom.parentNode.removeChild(fiber.dom);\n }\n }\n else {\n let child = fiber.child;\n while (child) {\n commitDeletion(child, domParent);\n child = child.sibling;\n }\n }\n};\nexport { commitDeletion, commitWork, commitRoot };\n","import { EFFECT_TAGS, getState } from '../../utils/index.js';\nconst reconcileChildren = (wipFiber, elements) => {\n const state = getState();\n let index = 0;\n let prevSibling;\n let isFirstChild = true;\n const oldFiberMap = new Map();\n let oldFiber = wipFiber.alternate?.child;\n let position = 0;\n while (oldFiber) {\n const key = oldFiber.key ?? `__index_${oldFiber.index ?? position}__`;\n oldFiberMap.set(key, oldFiber);\n oldFiber = oldFiber.sibling;\n position++;\n }\n while (index < elements.length) {\n const element = elements[index];\n if (!element) {\n index++;\n continue;\n }\n const key = element.key ?? `__index_${index}__`;\n const matchedFiber = oldFiberMap.get(key);\n let newFiber;\n const sameType = matchedFiber && element.type === matchedFiber.type;\n if (sameType && matchedFiber) {\n const matchedType = matchedFiber.type;\n const isErrorBoundary = typeof matchedFiber.type === 'function' &&\n matchedType?.ryunix_type === 'RYUNIX_ERROR_BOUNDARY';\n const preserveBoundaryError = isErrorBoundary &&\n matchedFiber.stateError != null &&\n matchedFiber.child == null;\n newFiber = {\n type: matchedFiber.type,\n props: element.props,\n dom: matchedFiber.dom,\n parent: wipFiber,\n alternate: matchedFiber,\n effectTag: EFFECT_TAGS.UPDATE,\n hooks: matchedFiber.hooks,\n stateError: preserveBoundaryError ? matchedFiber.stateError : undefined,\n key: element.key,\n index,\n };\n oldFiberMap.delete(key);\n }\n else {\n newFiber = {\n type: element.type,\n props: element.props,\n dom: null,\n parent: wipFiber,\n alternate: null,\n effectTag: state.isHydrating\n ? EFFECT_TAGS.HYDRATE\n : EFFECT_TAGS.PLACEMENT,\n key: element.key,\n index,\n };\n if (matchedFiber) {\n matchedFiber.effectTag = EFFECT_TAGS.DELETION;\n state.deletions.push(matchedFiber);\n oldFiberMap.delete(key);\n }\n }\n if (isFirstChild) {\n wipFiber.child = newFiber;\n isFirstChild = false;\n }\n else if (prevSibling) {\n prevSibling.sibling = newFiber;\n }\n prevSibling = newFiber;\n index++;\n }\n oldFiberMap.forEach((fiber) => {\n fiber.effectTag = EFFECT_TAGS.DELETION;\n state.deletions.push(fiber);\n });\n};\nexport { reconcileChildren };\n","import { getState } from '../../utils/index.js';\nexport const getHydrationPolicy = () => {\n const env = (globalThis.process && globalThis.process.env) || {};\n const recoverRaw = env.RYUNIX_HYDRATION_RECOVER || 'boundary';\n const boundariesRaw = env.RYUNIX_HYDRATION_BOUNDARIES || 'route';\n const strict = env.RYUNIX_HYDRATION_STRICT === 'true';\n const recover = recoverRaw === 'none' || recoverRaw === 'root' ? recoverRaw : 'boundary';\n const boundaries = boundariesRaw === 'server-only' || boundariesRaw === 'all-layouts'\n ? boundariesRaw\n : 'route';\n return {\n recover,\n boundaries,\n strict,\n };\n};\nexport const findNearestHydrationBoundary = (fiber) => {\n let current = fiber || null;\n while (current) {\n const props = current.props;\n if (props &&\n Object.prototype.hasOwnProperty.call(props, 'data-ryunix-hydrate-boundary')) {\n return current;\n }\n const type = current.type;\n const maybeTyped = type;\n if (type &&\n typeof type === 'function' &&\n maybeTyped?.ryunix_type === 'RYUNIX_HYDRATION_BOUNDARY') {\n return current;\n }\n current = current.parent || null;\n }\n return null;\n};\nexport const findBoundaryDomFromNode = (node) => {\n let current = node ?? null;\n while (current) {\n if (current.nodeType === 1 &&\n current.hasAttribute('data-ryunix-hydrate-boundary')) {\n return current;\n }\n current = current.parentNode;\n }\n return null;\n};\nexport const getBoundaryDom = (fiber) => {\n if (!fiber)\n return null;\n if (fiber.dom && fiber.dom.nodeType === 1) {\n const el = fiber.dom;\n if (el.hasAttribute('data-ryunix-hydrate-boundary'))\n return el;\n }\n let child = fiber.child || null;\n while (child) {\n if (child.dom && child.dom.nodeType === 1) {\n const el = child.dom;\n if (el.hasAttribute('data-ryunix-hydrate-boundary'))\n return el;\n }\n child = child.child || child.sibling || null;\n }\n return null;\n};\nexport const skipHydrationSubtree = (cursor, boundaryRoot) => {\n if (!cursor || !boundaryRoot)\n return cursor;\n if (cursor === boundaryRoot)\n return boundaryRoot.nextSibling;\n if (boundaryRoot.contains(cursor))\n return boundaryRoot.nextSibling;\n return cursor;\n};\nexport const enqueueScopedRecovery = (boundaryFiber, boundaryDom, resumeCursor) => {\n if (!boundaryFiber || !boundaryDom)\n return;\n const state = getState();\n const queue = state.scopedRecoveryQueue || [];\n queue.push({\n boundaryFiber,\n boundaryDom,\n resumeCursor,\n element: (Array.isArray(boundaryFiber.props?.children)\n ? boundaryFiber.props.children[0]\n : boundaryFiber.props?.children),\n });\n state.scopedRecoveryQueue = queue;\n};\n","import { createDom } from './dom.js';\nimport { reconcileChildren } from './reconciler.js';\nimport { getState, RYUNIX_TYPES, EFFECT_TAGS, nextValidSibling, } from '../../utils/index.js';\nimport { logHydrationBoundaryMismatch, logHydrationFatal, logHydrationMismatch, logHydrationRecoverable, } from '../hydration/log.js';\nimport { enqueueScopedRecovery, findNearestHydrationBoundary, findBoundaryDomFromNode, getBoundaryDom, getHydrationPolicy, skipHydrationSubtree, } from '../hydration/policy.js';\nconst updateFunctionComponent = (fiber) => {\n const state = getState();\n state.wipFiber = fiber;\n state.hookIndex = 0;\n fiber.hooks = [];\n const componentType = fiber.type;\n if (state.hydrationRecover &&\n componentType.ryunix_type === 'RYUNIX_ERROR_BOUNDARY') {\n fiber.stateError = undefined;\n }\n if (state.isHydrating) {\n fiber.effectTag = EFFECT_TAGS.HYDRATE;\n }\n if (componentType._isMemo && fiber.alternate) {\n const { children: _pc, ...prevRest } = fiber.alternate.props || {};\n const { children: _nc, ...nextRest } = fiber.props || {};\n if (componentType._arePropsEqual?.(prevRest, nextRest)) {\n fiber.hooks = fiber.alternate.hooks;\n const oldChild = fiber.alternate.child;\n if (oldChild) {\n oldChild.parent = fiber;\n fiber.child = oldChild;\n }\n return;\n }\n }\n const children = [\n componentType(fiber.props),\n ];\n if (componentType._contextId && fiber.props?.value !== undefined) {\n fiber._contextId = componentType._contextId;\n fiber._contextValue = fiber.props.value;\n }\n reconcileChildren(fiber, children);\n};\nconst isUnderClientOnlyBoundary = (fiber) => {\n let current = fiber?.parent || null;\n while (current) {\n if (current._hydrateClientOnly)\n return true;\n current = current.parent || null;\n }\n return false;\n};\nconst isUnderServerPreserveBoundary = (fiber) => {\n let current = fiber?.parent || null;\n while (current) {\n if (current._hydratePreserveServer)\n return true;\n current = current.parent || null;\n }\n return false;\n};\nconst normalizeChildNodes = (children) => {\n if (children == null)\n return [];\n return Array.isArray(children) ? children : [children];\n};\nconst updateHostComponent = (fiber) => {\n const state = getState();\n if (fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n fiber._contextId = fiber.props?._contextId;\n fiber._contextValue = fiber.props?.value;\n }\n const isPassthrough = fiber.type === RYUNIX_TYPES.RYUNIX_FRAGMENT ||\n fiber.type === RYUNIX_TYPES.RYUNIX_CONTEXT ||\n fiber.type === Symbol.for('ryunix.portal');\n if (state.isHydrating && isPassthrough) {\n fiber.effectTag = EFFECT_TAGS.HYDRATE;\n }\n else if (state.isHydrating && isUnderServerPreserveBoundary(fiber)) {\n return;\n }\n else if (state.isHydrating && isUnderClientOnlyBoundary(fiber)) {\n if (!fiber.dom) {\n fiber.dom = createDom(fiber);\n fiber.effectTag = EFFECT_TAGS.PLACEMENT;\n }\n }\n else if (!fiber.dom) {\n if (state.isHydrating && state.hydrateCursor) {\n const domNode = state.hydrateCursor;\n const isText = fiber.type === RYUNIX_TYPES.TEXT_ELEMENT && domNode.nodeType === 3;\n const isElement = typeof fiber.type === 'string' &&\n domNode.nodeType === 1 &&\n domNode.tagName.toLowerCase() === fiber.type.toLowerCase();\n if (isText || isElement) {\n fiber.dom = domNode;\n fiber.effectTag = EFFECT_TAGS.HYDRATE;\n if (isText &&\n fiber.props?.nodeValue != null &&\n domNode.nodeValue !== String(fiber.props.nodeValue)) {\n domNode.nodeValue = String(fiber.props.nodeValue);\n logHydrationRecoverable('text');\n }\n if (isElement &&\n domNode.hasAttribute('data-ryunix-server')) {\n fiber._hydratePreserveServer = true;\n state.hydrateCursor = nextValidSibling(domNode);\n reconcileChildren(fiber, []);\n return;\n }\n if (isElement &&\n domNode.hasAttribute('data-ryunix-hydrate-boundary')) {\n fiber._hydrateClientOnly = true;\n }\n state.hydrateCursor = nextValidSibling(domNode.firstChild);\n }\n else {\n const policy = getHydrationPolicy();\n const detail = `Mismatch at ${getTypeLabel(fiber.type ?? 'unknown')}. Expected ${domNode.nodeType === 1 ? domNode.tagName : 'text'} but got ${String(fiber.type)}.`;\n const boundaryFiber = findNearestHydrationBoundary(fiber);\n const boundaryDom = (boundaryFiber ? getBoundaryDom(boundaryFiber) : null) ??\n findBoundaryDomFromNode(state.hydrateCursor);\n if (policy.recover === 'boundary' && boundaryFiber && boundaryDom) {\n logHydrationBoundaryMismatch(detail);\n enqueueScopedRecovery(boundaryFiber, boundaryDom, state.hydrateCursor ?? null);\n state.hydrateCursor = skipHydrationSubtree(state.hydrateCursor ?? null, boundaryDom);\n fiber.dom = createDom(fiber);\n fiber.effectTag = EFFECT_TAGS.PLACEMENT;\n }\n else if (policy.recover === 'none') {\n logHydrationFatal(detail);\n state.isHydrating = false;\n state.hydrateCursor = null;\n fiber.dom = createDom(fiber);\n fiber.effectTag = EFFECT_TAGS.PLACEMENT;\n }\n else {\n logHydrationMismatch(detail);\n state.isHydrating = false;\n state.hydrationFailed = true;\n state.hydrateCursor = null;\n fiber.dom = createDom(fiber);\n fiber.effectTag = EFFECT_TAGS.PLACEMENT;\n }\n }\n }\n else {\n fiber.dom = createDom(fiber);\n }\n }\n if (fiber._hydratePreserveServer) {\n return;\n }\n const children = normalizeChildNodes(fiber.props?.children);\n reconcileChildren(fiber, children);\n};\nconst getTypeLabel = (type) => {\n if (typeof type === 'symbol')\n return type.description || type.toString();\n if (typeof type === 'function')\n return type.name || 'anonymous';\n return String(type);\n};\nexport { updateFunctionComponent, updateHostComponent };\n","let scheduleWorkFn = null;\nexport const setScheduleWork = (fn) => {\n scheduleWorkFn = fn;\n};\nexport const scheduleWork = (root, priority) => {\n if (scheduleWorkFn) {\n return scheduleWorkFn(root, priority);\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Ryunix] scheduleWork called before being initialized.');\n }\n};\n","import { clearContainer } from '../reconciler/dom.js';\nimport { getState } from '../../utils/index.js';\nimport { scheduleWork } from '../reconciler/bridge.js';\nimport { logHydrationBoundaryRecovery, logHydrationFailure, logHydrationRecovery, } from './log.js';\nimport { getHydrationPolicy } from './policy.js';\nconst getRootChild = (children) => {\n if (children == null)\n return undefined;\n return Array.isArray(children) ? children[0] : children;\n};\nexport const renderSubtree = (element, container) => {\n clearContainer(container);\n const root = {\n dom: container,\n props: { children: [element] },\n isHydrating: false,\n hydrateCursor: null,\n };\n scheduleWork(root, undefined);\n};\nexport const recoverScopedHydrationFailures = () => {\n const state = getState();\n const queue = state.scopedRecoveryQueue;\n if (!queue?.length)\n return;\n state.scopedRecoveryQueue = [];\n for (const item of queue) {\n logHydrationBoundaryRecovery();\n renderSubtree(item.element, item.boundaryDom);\n }\n};\nexport const recoverHydrationFailureIfNeeded = () => {\n const state = getState();\n if (!state.hydrationFailed || state.hydrationRecover)\n return;\n const policy = getHydrationPolicy();\n if (policy.recover === 'none')\n return;\n const container = state.containerRoot || state.currentRoot?.dom;\n const element = getRootChild(state.currentRoot?.props?.children);\n if (!container || element == null)\n return;\n state.hydrationRecover = true;\n state.hydrationFailed = false;\n logHydrationFailure('');\n logHydrationRecovery();\n renderSubtree(element, container);\n};\nexport const runHydrationRecovery = () => {\n const state = getState();\n recoverScopedHydrationFailures();\n recoverHydrationFailureIfNeeded();\n state.hydrationRecover = false;\n};\n","import { commitRoot } from './commits.js';\nimport { updateFunctionComponent, updateHostComponent } from './fiber-update.js';\nimport { runHydrationRecovery } from '../hydration/recover.js';\nimport { getState, rIC, nextValidSibling } from '../../utils/index.js';\nimport { getCurrentPriority, Priority } from './priority.js';\nimport { setScheduleWork } from './bridge.js';\nlet workQueue = [];\nlet isWorkLoopScheduled = false;\nfunction performUnitOfWork(fiber) {\n const state = getState();\n const isFunctionComponent = fiber.type instanceof Function || typeof fiber.type === 'function';\n try {\n if (isFunctionComponent) {\n updateFunctionComponent(fiber);\n }\n else {\n updateHostComponent(fiber);\n }\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('[Ryunix ErrorBoundary] Caught error during render:', error);\n try {\n const fiberProps = fiber.props;\n const src = fiberProps?.__source;\n if (src && error && typeof error === 'object') {\n ;\n error.__ryunix_source = src;\n }\n let targetFiber = fiber;\n while (!error.__ryunix_source && targetFiber) {\n const targetProps = targetFiber.props;\n if (targetProps?.__source) {\n ;\n error.__ryunix_source = targetProps.__source;\n }\n targetFiber = targetFiber.parent;\n }\n }\n catch (_e) { }\n }\n let boundaryFiber = fiber.parent;\n let foundBoundary = false;\n while (boundaryFiber) {\n if (boundaryFiber.type &&\n boundaryFiber.type.ryunix_type ===\n 'RYUNIX_ERROR_BOUNDARY') {\n foundBoundary = true;\n break;\n }\n boundaryFiber = boundaryFiber.parent;\n }\n if (foundBoundary && boundaryFiber) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Ryunix ErrorBoundary] Recovering tree at nearest boundary.');\n }\n boundaryFiber.stateError = error;\n fiber.child = null;\n return boundaryFiber;\n }\n else {\n console.error('[Ryunix] Fatal Uncaught Error. No ErrorBoundary was found in the tree to handle this exception:\\n', error);\n state.nextUnitOfWork = null;\n return null;\n }\n }\n if (fiber.child) {\n return fiber.child;\n }\n let nextFiber = fiber;\n while (nextFiber) {\n if (state.isHydrating && nextFiber.dom) {\n state.hydrateCursor = nextValidSibling(nextFiber.dom.nextSibling);\n }\n if (nextFiber.sibling) {\n return nextFiber.sibling;\n }\n nextFiber = nextFiber.parent;\n }\n return null;\n}\nconst workLoop = (deadline) => {\n const state = getState();\n let shouldYield = false;\n while ((state.nextUnitOfWork || workQueue.length > 0) && !shouldYield) {\n if (!state.nextUnitOfWork && workQueue.length > 0) {\n const nextRoot = workQueue.shift();\n if (!nextRoot)\n continue;\n state.wipRoot = nextRoot;\n state.nextUnitOfWork = nextRoot;\n state.deletions = [];\n if (nextRoot.isHydrating !== undefined) {\n state.isHydrating = nextRoot.isHydrating;\n state.hydrateCursor = nextRoot.hydrateCursor;\n }\n }\n if (state.nextUnitOfWork) {\n state.nextUnitOfWork = performUnitOfWork(state.nextUnitOfWork);\n }\n shouldYield = deadline.timeRemaining() < 1;\n }\n if (!state.nextUnitOfWork && state.wipRoot) {\n commitRoot();\n runHydrationRecovery();\n }\n if (state.nextUnitOfWork || workQueue.length > 0) {\n rIC(workLoop);\n }\n else {\n isWorkLoopScheduled = false;\n }\n};\nconst scheduleWork = (root, priority = getCurrentPriority()) => {\n const state = getState();\n if (state.wipRoot) {\n workQueue.push(root);\n }\n else {\n state.nextUnitOfWork = root;\n state.wipRoot = root;\n state.deletions = [];\n if (root.isHydrating !== undefined) {\n state.isHydrating = root.isHydrating;\n state.hydrateCursor = root.hydrateCursor;\n }\n }\n state.hookIndex = 0;\n state.effects = [];\n if (!isWorkLoopScheduled) {\n isWorkLoopScheduled = true;\n if (priority <= Priority.USER_BLOCKING) {\n Promise.resolve().then(() => {\n workLoop({ timeRemaining: () => 10, didTimeout: true });\n });\n }\n else {\n rIC(workLoop);\n }\n }\n};\nsetScheduleWork(scheduleWork);\nexport { performUnitOfWork, workLoop, scheduleWork };\n","import { clearContainer } from '../reconciler/dom.js';\nimport { getState } from '../../utils/index.js';\nimport { scheduleWork } from '../reconciler/workers.js';\nimport { resetHydrationLogFlags } from '../hydration/log.js';\nimport { getHydrationPolicy } from '../hydration/policy.js';\nconst render = (element, container) => {\n const state = getState();\n clearContainer(container);\n const root = {\n dom: container,\n props: {\n children: [element],\n },\n alternate: state.currentRoot,\n isHydrating: false,\n hydrateCursor: null,\n };\n scheduleWork(root);\n return root;\n};\nconst SSR_ROOT_ATTR = 'data-ryunix-ssr-root';\nconst nextValidSibling = (node) => {\n let next = node;\n while (next &&\n ((next.nodeType === 3 && !next.nodeValue?.trim()) ||\n next.nodeType === 8 ||\n (next.nodeType === 1 &&\n next.hasAttribute('data-ryunix-ssr')))) {\n next = next.nextSibling;\n }\n return next;\n};\nconst hydrate = (element, container) => {\n const state = getState();\n state.containerRoot = container;\n const root = {\n dom: container,\n props: {\n children: [element],\n },\n alternate: state.currentRoot,\n isHydrating: true,\n hydrateCursor: nextValidSibling(container.firstChild),\n };\n scheduleWork(root);\n return root;\n};\nconst init = (MainElement, root = '__ryunix', _components = {}) => {\n const state = getState();\n const container = document.getElementById(root);\n state.containerRoot = container;\n if (!container) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Ryunix] init: container #${root} not found.`);\n }\n return undefined;\n }\n resetHydrationLogFlags();\n state.hydrationPolicy = getHydrationPolicy();\n state.scopedRecoveryQueue = [];\n state.hydrationRecover = false;\n state.isHydrating = false;\n state.hydrationFailed = false;\n if (state.currentRoot) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(`[Ryunix Debug] init: existing root detected. Client render on #${root}`);\n }\n return render(MainElement, container);\n }\n const ssrEnabled = process.env.RYUNIX_SSR !== 'false';\n const isSsrPayload = ssrEnabled &&\n container.hasAttribute(SSR_ROOT_ATTR) &&\n container.hasChildNodes();\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(`[Ryunix Debug] init: isSsrPayload=${isSsrPayload}, hasChildNodes=${container.hasChildNodes()}`);\n }\n if (isSsrPayload) {\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(`[Ryunix Debug] init: hydrating SSR markup on #${root}`);\n }\n container.removeAttribute(SSR_ROOT_ATTR);\n return hydrate(MainElement, container);\n }\n if (process.env.NODE_ENV !== 'production' && process.env.RYUNIX_DEBUG) {\n console.log(`[Ryunix Debug] init: client render on #${root}`);\n }\n return render(MainElement, container);\n};\nconst safeRender = (component, props, onError) => {\n try {\n return component(props);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Component error:', error);\n }\n if (onError)\n onError(error);\n return null;\n }\n};\nexport { init, render, safeRender, hydrate, clearContainer };\nexport { renderSubtree, recoverScopedHydrationFailures, recoverHydrationFailureIfNeeded, runHydrationRecovery, } from '../hydration/recover.js';\n","let isBatching = false;\nlet pendingUpdates = [];\nexport function batchUpdates(callback) {\n const wasBatching = isBatching;\n isBatching = true;\n try {\n callback();\n }\n finally {\n isBatching = wasBatching;\n if (!isBatching && pendingUpdates.length > 0) {\n flushUpdates();\n }\n }\n}\nexport function queueUpdate(update) {\n pendingUpdates.push(update);\n if (!isBatching) {\n flushUpdates();\n }\n}\nexport function flushUpdates() {\n if (pendingUpdates.length === 0)\n return;\n const updates = pendingUpdates;\n pendingUpdates = [];\n updates.forEach((update) => update());\n}\n","import { getState } from '../../utils/index.js';\nconst isDevelopment = process.env.NODE_ENV !== 'production';\nconst warning = (condition, message) => {\n if (!isDevelopment)\n return;\n if (condition)\n return;\n console.warn(`[Ryunix Warning] ${message}`);\n};\nconst error = (message) => {\n if (!isDevelopment)\n return;\n console.error(`[Ryunix Error] ${message}`);\n};\nconst getComponentName = (component) => {\n if (!component)\n return 'Unknown';\n return component.displayName || component.name || 'Anonymous';\n};\nconst validateHookContext = (hookName = 'A hook') => {\n const state = getState();\n if (!state.wipFiber) {\n throw new Error(`${hookName} can only be called inside function components. ` +\n 'Make sure you are calling hooks at the top level of your component.');\n }\n const wipFiber = state.wipFiber;\n if (!Array.isArray(wipFiber.hooks)) {\n wipFiber.hooks = [];\n }\n};\nconst perfTracker = {\n marks: new Map(),\n mark(name) {\n if (!isDevelopment)\n return;\n this.marks.set(name, Date.now());\n },\n measure(name, startMark) {\n if (!isDevelopment)\n return;\n const start = this.marks.get(startMark);\n if (!start)\n return;\n const duration = Date.now() - start;\n console.log(`[Ryunix Performance] ${name}: ${duration}ms`);\n },\n clear() {\n this.marks.clear();\n },\n};\nconst deprecated = (oldAPI, newAPI, version) => {\n if (!isDevelopment)\n return;\n console.warn(`[Ryunix Deprecated] ${oldAPI} is deprecated and will be removed in version ${version}. ` +\n `Use ${newAPI} instead.`);\n};\nexport { warning, error, getComponentName, validateHookContext, perfTracker, deprecated, };\n","import { is } from '../../utils/index.js';\nconst INTERNAL_META_KEYS = new Set([\n 'title',\n 'pageTitle',\n 'canonical',\n 'titleTemplate',\n 'titleDefault',\n 'lastmod',\n 'changefreq',\n 'priority',\n 'custom',\n 'icon',\n 'appleTouchIcon',\n]);\nconst isTitleConfig = (value) => is.object(value) &&\n value !== null &&\n ('default' in value || 'template' in value);\nconst pickString = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;\nexport function resolvePageMetadata(meta = {}, options = {}) {\n const template = pickString(options.title?.template) ||\n pickString(meta.titleTemplate) ||\n (isTitleConfig(meta.title) ? pickString(meta.title.template) : undefined);\n const defaultTitle = pickString(options.title?.prefix) ||\n pickString(meta.titleDefault) ||\n (isTitleConfig(meta.title) ? pickString(meta.title.default) : undefined) ||\n 'Ryunix App';\n const pageTitle = pickString(meta.pageTitle) ||\n (typeof meta.title === 'string' ? pickString(meta.title) : undefined);\n let title = defaultTitle;\n if (pageTitle) {\n title =\n template && template.includes('%s')\n ? template.replace('%s', pageTitle)\n : pageTitle;\n }\n const tags = {};\n for (const [key, value] of Object.entries(meta)) {\n if (INTERNAL_META_KEYS.has(key))\n continue;\n if (key === 'title' && isTitleConfig(value))\n continue;\n if (Array.isArray(value)) {\n const items = value\n .map((item) => (typeof item === 'string' ? item.trim() : ''))\n .filter(Boolean);\n if (items.length > 0)\n tags[key] = items;\n continue;\n }\n if (typeof value === 'string' && value.trim()) {\n tags[key] = value.trim();\n }\n }\n if (pickString(meta.canonical)) {\n tags.canonical = meta.canonical;\n }\n if (pickString(meta.icon)) {\n tags.icon = meta.icon;\n }\n if (pickString(meta.appleTouchIcon)) {\n tags.appleTouchIcon = meta.appleTouchIcon;\n }\n return { title, tags };\n}\nexport function mergeRouteMetadata(base = {}, next = {}) {\n const merged = { ...base, ...next };\n if (typeof next.title === 'string' && isTitleConfig(base.title)) {\n if (!pickString(merged.titleTemplate) && pickString(base.title.template)) {\n merged.titleTemplate = base.title.template;\n }\n if (!pickString(merged.titleDefault) && pickString(base.title.default)) {\n merged.titleDefault = base.title.default;\n }\n }\n return merged;\n}\nexport { INTERNAL_META_KEYS };\n","import { RYUNIX_TYPES, getState, is, flattenArray } from '../../utils/index.js';\nimport { createElement, Fragment } from '../reconciler/createElement.js';\nimport { scheduleWork } from '../reconciler/bridge.js';\nimport { Priority, scheduleUpdate, runWithPriority, getCurrentPriority, } from '../reconciler/priority.js';\nimport { queueUpdate } from '../reconciler/batching.js';\nimport { validateHookContext as validateHookCall } from '../devtools/runtime.js';\nimport { mergeRouteMetadata } from './metadata.js';\nconst haveDepsChanged = (oldDeps, newDeps) => {\n if (!oldDeps || !newDeps)\n return true;\n if (oldDeps.length !== newDeps.length)\n return true;\n return oldDeps.some((dep, i) => !Object.is(dep, newDeps[i]));\n};\nconst useStore = (initialState, priority = getCurrentPriority()) => {\n if (typeof window === 'undefined') {\n return [\n is.function(initialState)\n ? initialState()\n : initialState,\n () => { },\n ];\n }\n const state = getState();\n if (state.isServerRendering) {\n return [\n is.function(initialState)\n ? initialState()\n : initialState,\n () => { },\n ];\n }\n const reducer = (state, action) => is.function(action) ? action(state) : action;\n return useReducer(reducer, initialState, undefined, priority);\n};\nconst useReducer = (reducer, initialState, init, defaultPriority = getCurrentPriority()) => {\n if (typeof window === 'undefined') {\n return [init ? init(initialState) : initialState, () => { }];\n }\n const state = getState();\n if (state.isServerRendering) {\n return [init ? init(initialState) : initialState, () => { }];\n }\n validateHookCall();\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_STORE,\n state: oldHook ? oldHook.state : init ? init(initialState) : initialState,\n queue: [],\n };\n if (oldHook?.queue) {\n oldHook.queue.forEach((action) => {\n try {\n hook.state = reducer(hook.state, action);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in reducer:', error);\n }\n }\n });\n }\n const dispatch = (action, priority = defaultPriority) => {\n if (action === undefined) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('dispatch called with undefined action');\n }\n return;\n }\n hook.queue.push(action);\n const currentState = getState();\n const activeRoot = currentState.currentRoot ||\n currentState.wipRoot;\n if (!activeRoot)\n return;\n const newRoot = {\n dom: activeRoot.dom,\n props: activeRoot.props,\n alternate: currentState.currentRoot || null,\n };\n queueUpdate(() => scheduleWork(newRoot, priority));\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n return [hook.state, dispatch];\n};\nconst useEffect = (callback, deps) => {\n if (typeof window === 'undefined') {\n return;\n }\n const state = getState();\n if (state.isServerRendering) {\n return;\n }\n validateHookCall();\n if (!is.function(callback)) {\n throw new Error('useEffect callback must be a function');\n }\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error('useEffect dependencies must be an array or undefined');\n }\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n const hasChanged = haveDepsChanged(oldHook?.deps, deps);\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_EFFECT,\n deps,\n effect: hasChanged ? callback : null,\n cancel: oldHook?.cancel,\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n};\nconst useRef = (initialValue) => {\n if (typeof window === 'undefined') {\n return { current: initialValue };\n }\n const state = getState();\n if (state.isServerRendering) {\n return { current: initialValue };\n }\n validateHookCall();\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_REF,\n value: oldHook\n ? oldHook.value\n : { current: initialValue },\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n return hook.value;\n};\nconst useMemo = (compute, deps) => {\n if (typeof window === 'undefined') {\n return compute();\n }\n const state = getState();\n if (state.isServerRendering) {\n return compute();\n }\n validateHookCall();\n if (!is.function(compute)) {\n throw new Error('useMemo callback must be a function');\n }\n if (!Array.isArray(deps)) {\n throw new Error('useMemo requires a dependencies array');\n }\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n let value;\n if (oldHook && !haveDepsChanged(oldHook.deps, deps)) {\n value = oldHook.value;\n }\n else {\n try {\n value = compute();\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Error in useMemo computation:', error);\n }\n throw error;\n }\n }\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_MEMO,\n value,\n deps,\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n return value;\n};\nconst useCallback = (callback, deps) => {\n if (!is.function(callback)) {\n throw new Error('useCallback requires a function as first argument');\n }\n return useMemo(() => callback, deps);\n};\nconst createContext = (contextId = RYUNIX_TYPES.RYUNIX_CONTEXT, defaultValue = {}) => {\n const Provider = ({ value, children, }) => {\n return createElement(RYUNIX_TYPES.RYUNIX_CONTEXT, { value, children, _contextId: contextId }, ...flattenArray([children]));\n };\n Provider._contextId = contextId;\n const useContext = (ctxID = contextId) => {\n const state = getState();\n if (state.isServerRendering) {\n const ssrContexts = state.ssrContexts;\n return ssrContexts && ssrContexts[ctxID] !== undefined\n ? ssrContexts[ctxID]\n : defaultValue;\n }\n validateHookCall();\n let fiber = state.wipFiber;\n while (fiber) {\n if (fiber._contextId === ctxID && fiber._contextValue !== undefined) {\n return fiber._contextValue;\n }\n const fiberType = fiber.type;\n if (fiberType?._contextId === ctxID && fiber.props?.value !== undefined) {\n return fiber.props.value;\n }\n fiber = fiber.parent;\n }\n return defaultValue;\n };\n return {\n Provider: Provider,\n useContext,\n };\n};\nconst useQuery = () => {\n if (typeof window === 'undefined')\n return {};\n const searchParams = new URLSearchParams(window.location.search);\n const query = {};\n for (const [key, value] of searchParams.entries()) {\n query[key] = value;\n }\n return query;\n};\nconst useHash = () => {\n if (typeof window === 'undefined')\n return '';\n const [hash, setHash] = useStore(window.location.hash);\n useEffect(() => {\n const onHashChange = () => setHash(window.location.hash);\n window.addEventListener('hashchange', onHashChange);\n return () => window.removeEventListener('hashchange', onHashChange);\n }, []);\n return hash;\n};\nconst useMetadata = (tags = {}, options = {}) => {\n const state = getState();\n if (state.isServerRendering) {\n state.ssrMetadata = mergeRouteMetadata((state.ssrMetadata || {}), tags);\n return;\n }\n useEffect(() => {\n if (typeof document === 'undefined')\n return;\n let finalTitle = 'Ryunix App';\n const template = options.title?.template;\n const defaultTitle = options.title?.prefix || 'Ryunix App';\n const pageTitle = tags.pageTitle || tags.title;\n if (is.string(pageTitle) && pageTitle.trim()) {\n finalTitle = template?.includes('%s')\n ? template.replace('%s', pageTitle)\n : pageTitle;\n }\n else {\n finalTitle = defaultTitle;\n }\n document.title = finalTitle;\n if (tags.canonical) {\n let link = document.querySelector('link[rel=\"canonical\"]');\n if (!link) {\n link = document.createElement('link');\n link.setAttribute('rel', 'canonical');\n document.head.appendChild(link);\n }\n link.setAttribute('href', tags.canonical);\n }\n Object.entries(tags).forEach(([key, value]) => {\n if (['title', 'pageTitle', 'canonical'].includes(key))\n return;\n if (value == null)\n return;\n const isProperty = key.startsWith('og:') || key.startsWith('twitter:');\n const selector = `meta[${isProperty ? 'property' : 'name'}='${key}']`;\n let meta = document.head.querySelector(selector);\n if (!meta) {\n meta = document.createElement('meta');\n meta.setAttribute(isProperty ? 'property' : 'name', key);\n document.head.appendChild(meta);\n }\n meta.setAttribute('content', value);\n });\n }, [JSON.stringify(tags), JSON.stringify(options)]);\n};\nconst RouterContext = createContext('ryunix.navigation', {\n location: '/',\n params: {},\n query: {},\n navigate: (_path) => { },\n route: null,\n});\nconst findRoute = (routes, path) => {\n const pathname = path.split('?')[0].split('#')[0];\n const notFoundRoute = routes.find((route) => route.NotFound);\n const notFound = notFoundRoute\n ? { route: { component: notFoundRoute.NotFound ?? null }, params: {} }\n : { route: { component: null }, params: {} };\n for (const route of routes) {\n if (route.subRoutes) {\n const childRoute = findRoute(route.subRoutes, path);\n if (childRoute)\n return childRoute;\n }\n if (route.path === '*')\n return notFound;\n if (!route.path || typeof route.path !== 'string')\n continue;\n const keys = [];\n const pattern = new RegExp(`^${route.path.replace(/:(\\.\\.\\.)?(\\w+)/g, (match, isCatchAll, key) => {\n keys.push({ key, isCatchAll: !!isCatchAll });\n return isCatchAll ? '(.+)' : '([^/]+)';\n })}$`);\n const matchPath = pathname.match(pattern);\n if (matchPath) {\n const params = keys.reduce((acc, keyObj, index) => {\n const val = matchPath[index + 1];\n acc[keyObj.key] = keyObj.isCatchAll && val ? val.split('/') : val;\n return acc;\n }, {});\n return { route, params };\n }\n }\n return notFound;\n};\nconst getSsrPathname = () => {\n const pathname = globalThis?.window?.location?.pathname;\n if (typeof pathname === 'string' && pathname) {\n return pathname.split('?')[0].split('#')[0];\n }\n return '/';\n};\nconst RouterProvider = ({ routes, children, }) => {\n if (typeof window === 'undefined') {\n const location = getSsrPathname();\n const currentRouteData = findRoute(routes, location);\n const contextValue = {\n location,\n params: currentRouteData.params || {},\n query: {},\n navigate: () => { },\n route: currentRouteData.route,\n };\n return createElement(RouterContext.Provider, { value: contextValue }, Fragment({ children }));\n }\n const [location, setLocation] = useStore(window.location.pathname);\n useEffect(() => {\n const update = () => setLocation(window.location.pathname);\n window.addEventListener('popstate', update);\n window.addEventListener('hashchange', update);\n return () => {\n window.removeEventListener('popstate', update);\n window.removeEventListener('hashchange', update);\n };\n }, []);\n const navigate = (path) => {\n if (typeof window !== 'undefined' && window.__RYUNIX_MPA__) {\n window.location.assign(path);\n return;\n }\n window.history.pushState({}, '', path);\n setLocation(path);\n };\n const currentRouteData = findRoute(routes, location);\n const query = useQuery();\n const contextValue = {\n location: location,\n params: currentRouteData.params || {},\n query,\n navigate,\n route: currentRouteData.route,\n };\n return createElement(RouterContext.Provider, { value: contextValue }, Fragment({ children }));\n};\nconst useRouter = () => {\n return RouterContext.useContext('ryunix.navigation');\n};\nconst Children = () => {\n const { route, params, query, location } = useRouter();\n if (!route || !route.component)\n return null;\n const hash = useHash();\n useEffect(() => {\n if (hash) {\n const id = hash.slice(1);\n const el = document.getElementById(id);\n if (el)\n el.scrollIntoView({ block: 'start', behavior: 'smooth' });\n return;\n }\n if (typeof window !== 'undefined') {\n window.scrollTo(0, 0);\n }\n }, [location, hash]);\n return createElement(route.component, {\n params,\n query,\n hash,\n location,\n });\n};\nconst usePathname = () => {\n const { location } = useRouter();\n return location.split('?')[0].split('#')[0];\n};\nconst useSearchParams = () => {\n const { query } = useRouter();\n return new URLSearchParams(query);\n};\nconst Link = ({ to, prefetch = true, ...props }) => {\n const { navigate } = useRouter();\n const handleClick = (e) => {\n if (e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n e.preventDefault();\n navigate(to);\n };\n const handleMouseEnter = () => {\n if (prefetch && typeof window !== 'undefined') {\n }\n };\n const { className: _omitClassName, ...cleanedProps } = props;\n return createElement('a', {\n href: to,\n onClick: handleClick,\n onMouseEnter: handleMouseEnter,\n className: (props.className || props['ryunix-class']),\n ...cleanedProps,\n }, props.children);\n};\nconst NavLink = ({ to, exact = false, ...props }) => {\n const { location, navigate } = useRouter();\n const isActive = exact ? location === to : location.startsWith(to);\n const resolveClass = (cls) => (typeof cls === 'function' ? cls({ isActive }) : cls || '');\n const handleClick = (e) => {\n if (e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) {\n return;\n }\n e.preventDefault();\n navigate(to);\n };\n const classAttrName = props['ryunix-class'] ? 'ryunix-class' : 'className';\n const classAttrValue = resolveClass((props['ryunix-class'] || props.className));\n const { ['ryunix-class']: _omitRyunix, className: _omitClassName, ...cleanedProps } = props;\n return createElement('a', {\n href: to,\n onClick: handleClick,\n [classAttrName]: classAttrValue,\n ...cleanedProps,\n }, props.children);\n};\nconst useStorePriority = (initialState) => {\n const reducer = (state, action) => typeof action === 'function'\n ? action.value(state)\n : action.value;\n const [state, baseDispatch] = useReducer(reducer, initialState, undefined);\n const dispatch = (action, priority = Priority.NORMAL) => {\n const wrappedAction = {\n value: action,\n priority,\n };\n scheduleUpdate(() => baseDispatch(wrappedAction, priority), priority);\n };\n return [state, dispatch];\n};\nconst useTransition = () => {\n const [isPending, setIsPending] = useStorePriority(false);\n const startTransition = (callback) => {\n setIsPending(true, Priority.IMMEDIATE);\n setTimeout(() => {\n runWithPriority(Priority.LOW, () => {\n callback();\n setIsPending(false, Priority.LOW);\n });\n }, 0);\n };\n return [isPending, startTransition];\n};\nconst useDeferredValue = (value) => {\n const [deferredValue, setDeferredValue] = useStorePriority(value);\n useEffect(() => {\n const timeout = setTimeout(() => {\n setDeferredValue(value, Priority.LOW);\n }, 100);\n return () => clearTimeout(timeout);\n }, [value]);\n return deferredValue;\n};\nconst usePersistentStore = (key, initialState = '') => {\n const [state, dispatch] = useStore(() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialState;\n }\n catch (_error) {\n return initialState;\n }\n });\n const setValue = (value) => {\n try {\n dispatch(value);\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n catch (error) {\n console.error(error);\n }\n };\n return [state, setValue];\n};\nconst useSwitch = (initialState = false) => {\n const [state, dispatch] = useStore(initialState);\n const toggle = () => {\n dispatch((prev) => !prev);\n };\n return [state, toggle];\n};\nconst useLayoutEffect = (callback, deps) => {\n if (typeof window === 'undefined') {\n return;\n }\n const state = getState();\n if (state.isServerRendering) {\n return;\n }\n validateHookCall();\n if (!is.function(callback)) {\n throw new Error('useLayoutEffect callback must be a function');\n }\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error('useLayoutEffect dependencies must be an array or undefined');\n }\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n const hasChanged = haveDepsChanged(oldHook?.deps, deps);\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_EFFECT,\n deps,\n effect: hasChanged ? callback : null,\n cancel: oldHook?.cancel,\n isLayout: true,\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n};\nlet idCounter = 0;\nconst resetIdCounter = () => {\n idCounter = 0;\n};\nconst useId = () => {\n const state = getState();\n if (state.isServerRendering) {\n return `:r${idCounter++}:`;\n }\n validateHookCall();\n const { hookIndex } = state;\n const wipFiber = state.wipFiber;\n if (!wipFiber.hooks)\n wipFiber.hooks = [];\n const oldHook = wipFiber.alternate?.hooks?.[hookIndex];\n const hook = {\n hookID: hookIndex,\n type: RYUNIX_TYPES.RYUNIX_REF,\n value: oldHook ? oldHook.value : `:r${idCounter++}:`,\n };\n wipFiber.hooks[hookIndex] = hook;\n state.hookIndex++;\n return hook.value;\n};\nconst useDebounce = (value, delay = 300) => {\n const [debouncedValue, setDebouncedValue] = useStore(value);\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n return debouncedValue;\n};\nconst useThrottle = (value, interval = 300) => {\n const [throttledValue, setThrottledValue] = useStore(value);\n const lastUpdated = useRef(Date.now());\n useEffect(() => {\n const now = Date.now();\n const elapsed = now - lastUpdated.current;\n if (elapsed >= interval) {\n lastUpdated.current = now;\n setThrottledValue(value);\n }\n else {\n const timer = setTimeout(() => {\n lastUpdated.current = Date.now();\n setThrottledValue(value);\n }, interval - elapsed);\n return () => clearTimeout(timer);\n }\n }, [value, interval]);\n return throttledValue;\n};\nexport { useStore, useReducer, useEffect, useLayoutEffect, useRef, useMemo, useCallback, createContext, useQuery, useHash, useMetadata, useId, resetIdCounter, useDebounce, useThrottle, useStorePriority, useTransition, useDeferredValue, usePersistentStore, usePersistentStore as usePersitentStore, useSwitch, RouterProvider, useRouter, Children, NavLink, Link, usePathname, useSearchParams, };\n","import { RYUNIX_TYPES, STRINGS, OLD_STRINGS, is, getState, } from '../../utils/index.js';\nimport { camelToKebab, validateUri } from '../reconciler/dom.js';\nimport { toSvgAttrName } from '../../utils/svgAttributes.js';\nimport { resetIdCounter } from '../hooks/hooks.js';\nconst ASYNC_RENDER_ERROR = 'Async components require renderToStringAsync or renderToReadableStream, not renderToString';\nexport const escapeHtml = (unsafe) => {\n if (typeof unsafe !== 'string')\n return String(unsafe);\n return unsafe\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n};\nconst renderStyle = (styleObj) => {\n if (!is.object(styleObj) || is.null(styleObj))\n return '';\n return Object.entries(styleObj)\n .filter(([_, value]) => value != null)\n .map(([key, value]) => `${camelToKebab(key)}:${value}`)\n .join(';');\n};\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\nconst normalizeChildren = (children) => {\n if (children == null)\n return [];\n return Array.isArray(children) ? children : [children];\n};\nconst assertSyncRenderResult = (rendered) => {\n if (rendered != null &&\n typeof rendered === 'object' &&\n 'then' in rendered &&\n typeof rendered.then === 'function') {\n throw new Error(ASYNC_RENDER_ERROR);\n }\n return rendered;\n};\nconst buildHostProps = (props, renderChild) => {\n let attributes = '';\n let htmlChildren = '';\n let innerHTML = null;\n Object.entries(props).forEach(([key, value]) => {\n if (key === 'children') {\n if (Array.isArray(value)) {\n htmlChildren = value\n .map((child) => renderChild(child))\n .join('');\n }\n else {\n htmlChildren = renderChild(value);\n }\n }\n else if (key === 'dangerouslySetInnerHTML') {\n const inner = value;\n if (inner?.__html) {\n innerHTML = inner.__html;\n }\n }\n else if (key === STRINGS.STYLE || key === OLD_STRINGS.STYLE) {\n const styleString = renderStyle(value);\n if (styleString) {\n attributes += ` style=\"${escapeHtml(styleString)}\"`;\n }\n }\n else if (key === STRINGS.CLASS_NAME || key === OLD_STRINGS.CLASS_NAME) {\n if (value) {\n attributes += ` class=\"${escapeHtml(value)}\"`;\n }\n }\n else if (!key.startsWith('on') &&\n key !== 'key' &&\n key !== 'ref' &&\n key !== '__source' &&\n key !== '__self') {\n if (typeof value === 'boolean') {\n if (value)\n attributes += ` ${key}=\"\"`;\n }\n else if (value != null) {\n const attrName = toSvgAttrName(key);\n const validatedValue = validateUri(attrName, value);\n attributes += ` ${attrName}=\"${escapeHtml(validatedValue)}\"`;\n }\n }\n });\n return { attributes, innerHTML, htmlChildren };\n};\nconst formatHostOpenTag = (hostTag, attributes) => {\n if (VOID_ELEMENTS.has(hostTag)) {\n return `<${hostTag}${attributes} />`;\n }\n return `<${hostTag}${attributes}>`;\n};\nconst beginSsrRender = () => {\n const state = getState();\n state.isServerRendering = true;\n state.ssrMetadata = {};\n state.ssrContexts = {};\n resetIdCounter();\n};\nconst renderToStringImpl = (element) => {\n if (element == null || typeof element === 'boolean') {\n return '';\n }\n if (typeof element === 'string' || typeof element === 'number') {\n return escapeHtml(element);\n }\n if (Array.isArray(element)) {\n return element.map((child) => renderToStringImpl(child)).join('');\n }\n const vnode = element;\n if (vnode.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n return escapeHtml(vnode.props.nodeValue);\n }\n if (vnode.type === RYUNIX_TYPES.RYUNIX_FRAGMENT) {\n const children = normalizeChildren(vnode.props?.children);\n return children.map((child) => renderToStringImpl(child)).join('');\n }\n if (vnode.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n const state = getState();\n state.ssrContexts = state.ssrContexts || {};\n const ctxProps = (vnode.props || {});\n const ctxId = ctxProps._contextId;\n const prevCtx = ctxId ? state.ssrContexts[ctxId] : undefined;\n if (ctxId) {\n state.ssrContexts[ctxId] = ctxProps.value;\n }\n const children = ctxProps.children || [];\n let result = '';\n if (Array.isArray(children)) {\n result = children.map((child) => renderToStringImpl(child)).join('');\n }\n else {\n result = renderToStringImpl(children);\n }\n if (ctxId) {\n state.ssrContexts[ctxId] = prevCtx;\n }\n return result;\n }\n if (typeof vnode.type === 'function') {\n const type = vnode.type;\n const props = vnode.props || {};\n const renderedElement = assertSyncRenderResult(type(props));\n return renderToStringImpl(renderedElement);\n }\n const type = String(vnode.type);\n const props = vnode.props || {};\n const { attributes, innerHTML, htmlChildren } = buildHostProps(props, renderToStringImpl);\n if (VOID_ELEMENTS.has(type)) {\n return formatHostOpenTag(type, attributes);\n }\n const finalContent = innerHTML !== null ? innerHTML : htmlChildren;\n return `${formatHostOpenTag(type, attributes)}${finalContent}</${type}>`;\n};\nconst RC_SCRIPT = `\nfunction $RC(id, templateId) {\n var b = document.getElementById(id);\n var t = document.getElementById(templateId);\n if (b && t) {\n b.innerHTML = t.innerHTML;\n t.remove();\n }\n}\n`\n .replace(/\\s+/g, ' ')\n .trim();\nconst renderToStreamImpl = async (element, push, suspenseTasks = []) => {\n if (element instanceof Promise) {\n element = await element;\n }\n if (element == null || typeof element === 'boolean') {\n return;\n }\n if (typeof element === 'string' || typeof element === 'number') {\n push(escapeHtml(element));\n return;\n }\n if (Array.isArray(element)) {\n for (const child of element) {\n await renderToStreamImpl(child, push, suspenseTasks);\n }\n return;\n }\n const vnode = element;\n if (vnode.type === RYUNIX_TYPES.TEXT_ELEMENT) {\n push(escapeHtml(vnode.props.nodeValue));\n return;\n }\n if (vnode.type === RYUNIX_TYPES.RYUNIX_FRAGMENT) {\n const children = normalizeChildren(vnode.props?.children);\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks);\n }\n return;\n }\n if (vnode.type === RYUNIX_TYPES.RYUNIX_CONTEXT) {\n const state = getState();\n state.ssrContexts = state.ssrContexts || {};\n const ctxProps = (vnode.props || {});\n const ctxId = ctxProps._contextId;\n const prevCtx = ctxId ? state.ssrContexts[ctxId] : undefined;\n if (ctxId) {\n state.ssrContexts[ctxId] = ctxProps.value;\n }\n const children = ctxProps.children || [];\n if (Array.isArray(children)) {\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks);\n }\n }\n else {\n await renderToStreamImpl(children, push, suspenseTasks);\n }\n if (ctxId) {\n state.ssrContexts[ctxId] = prevCtx;\n }\n return;\n }\n const suspenseType = vnode.type;\n const isSuspenseBoundary = vnode.type === RYUNIX_TYPES.RYUNIX_SUSPENSE ||\n (typeof suspenseType === 'object' &&\n suspenseType != null &&\n suspenseType.type === RYUNIX_TYPES.RYUNIX_SUSPENSE);\n if (isSuspenseBoundary) {\n const suspenseProps = (vnode.props || {});\n const { fallback, children } = suspenseProps;\n const id = `s-${Math.random().toString(36).slice(2, 9)}`;\n push(`<!--$?--><template id=\"B:${id}\"></template><div id=\"S:${id}\">`);\n const task = (async () => {\n const state = getState();\n const wasBackground = state.isSuspenseBackground;\n state.isSuspenseBackground = true;\n let content = '';\n const subPush = (chunk) => {\n content += chunk;\n };\n try {\n await renderToStreamImpl(children, subPush, suspenseTasks);\n return { id, content, success: true };\n }\n catch (e) {\n return { id, content: '', success: false, error: e };\n }\n finally {\n state.isSuspenseBackground = wasBackground;\n }\n });\n suspenseTasks.push(task);\n await renderToStreamImpl(fallback, push, suspenseTasks);\n push(`</div><!--$/-->`);\n return;\n }\n const type = vnode.type;\n const props = vnode.props || {};\n if (typeof type === 'function') {\n if (process.env.RYUNIX_DEBUG) {\n console.log('[SSR Debug] Rendering function:', type.name || 'anonymous');\n }\n const renderedElement = await type(props);\n await renderToStreamImpl(renderedElement, push, suspenseTasks);\n return;\n }\n const hostTag = String(type);\n const children = props.children || [];\n const { attributes, innerHTML } = buildHostProps(props, () => '');\n push(formatHostOpenTag(hostTag, attributes));\n if (innerHTML !== null) {\n push(innerHTML);\n }\n else if (!VOID_ELEMENTS.has(hostTag)) {\n if (Array.isArray(children)) {\n for (const child of children) {\n await renderToStreamImpl(child, push, suspenseTasks);\n }\n }\n else {\n await renderToStreamImpl(children, push, suspenseTasks);\n }\n push(`</${hostTag}>`);\n }\n};\nconst handleSuspenseTaskResult = (res, push, nonceAttr) => {\n if (res.success) {\n push(`<template id=\"P:${res.id}\" data-ryunix-ssr>${res.content}</template>`);\n push(`<script${nonceAttr} data-ryunix-ssr>$RC(\"S:${res.id}\", \"P:${res.id}\")</script>`);\n return;\n }\n const message = res.error instanceof Error\n ? res.error.message\n : String(res.error ?? 'Unknown error');\n if (process.env.NODE_ENV !== 'production') {\n console.error('[Ryunix SSR] Suspense boundary failed:', res.error);\n }\n push(`<!-- Ryunix Suspense error: ${escapeHtml(message)} -->`);\n};\nexport const renderToReadableStream = (element, options = {}) => {\n const state = getState();\n const encoder = new TextEncoder();\n return new ReadableStream({\n async start(controller) {\n const wasServerRendering = state.isServerRendering;\n beginSsrRender();\n const push = (text) => controller.enqueue(encoder.encode(text));\n const suspenseTasks = [];\n try {\n const nonceAttr = options.nonce ? ` nonce=\"${options.nonce}\"` : '';\n push(`<script${nonceAttr} data-ryunix-ssr>${RC_SCRIPT}</script>`);\n await renderToStreamImpl(element, push, suspenseTasks);\n while (suspenseTasks.length > 0) {\n const task = suspenseTasks.shift();\n if (!task)\n continue;\n const res = await task();\n handleSuspenseTaskResult(res, push, nonceAttr);\n }\n controller.close();\n }\n catch (e) {\n controller.error(e);\n }\n finally {\n state.isServerRendering = wasServerRendering;\n }\n },\n });\n};\nexport const renderToString = (element, _options = {}) => {\n const state = getState();\n const wasServerRendering = state.isServerRendering;\n beginSsrRender();\n try {\n return renderToStringImpl(element);\n }\n finally {\n state.isServerRendering = wasServerRendering;\n }\n};\nexport const renderToStringAsync = async (element, options = {}) => {\n const stream = renderToReadableStream(element, options);\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let result = '';\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n result += decoder.decode(value, { stream: true });\n }\n result += decoder.decode();\n return result;\n};\n","export function memo(Component, arePropsEqual = shallowEqual) {\n const MemoizedComponent = ((props) => {\n return Component(props);\n });\n MemoizedComponent._isMemo = true;\n MemoizedComponent._wrappedComponent = Component;\n MemoizedComponent._arePropsEqual = arePropsEqual;\n MemoizedComponent.displayName = `Memo(${Component.displayName || Component.name || 'Component'})`;\n return MemoizedComponent;\n}\nexport function shallowEqual(prevProps, nextProps) {\n const prevKeys = Object.keys(prevProps);\n const nextKeys = Object.keys(nextProps);\n if (prevKeys.length !== nextKeys.length)\n return false;\n return prevKeys.every((key) => Object.is(prevProps[key], nextProps[key]));\n}\nexport function deepEqual(a, b) {\n if (a === b)\n return true;\n if (a == null || b == null)\n return false;\n if (typeof a !== 'object' || typeof b !== 'object')\n return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length)\n return false;\n return keysA.every((key) => deepEqual(a[key], b[key]));\n}\n","export function forwardRef(render) {\n if (typeof render !== 'function') {\n throw new Error('forwardRef requires a render function');\n }\n const ForwardRefComponent = ((props) => {\n const { ref, ...restProps } = props || {};\n return render(restProps, ref ?? null);\n });\n const named = render;\n ForwardRefComponent.displayName = `ForwardRef(${named.displayName || named.name || 'Component'})`;\n ForwardRefComponent._isForwardRef = true;\n ForwardRefComponent._render = render;\n return ForwardRefComponent;\n}\n","import { RYUNIX_TYPES, getState } from '../../utils/index.js';\nimport { createElement, Fragment } from '../reconciler/createElement.js';\nimport { useStore, useEffect } from './hooks.js';\nexport const SUSPENSE_STATUS = {\n PENDING: 'pending',\n RESOLVED: 'resolved',\n REJECTED: 'rejected',\n};\nfunction isLazyElement(child) {\n return (child != null &&\n typeof child === 'object' &&\n 'type' in child &&\n typeof child.type === 'function' &&\n Boolean(child.type._isLazy));\n}\nexport function lazy(importFn) {\n let status = SUSPENSE_STATUS.PENDING;\n let Component = null;\n let error = null;\n let promise = null;\n const LazyComponent = ((props) => {\n if (status === SUSPENSE_STATUS.RESOLVED && Component) {\n return createElement(Component, props);\n }\n if (status === SUSPENSE_STATUS.REJECTED && error) {\n throw error;\n }\n if (!promise) {\n promise = importFn()\n .then((module) => {\n const resolved = module;\n Component =\n 'default' in resolved && resolved.default\n ? resolved.default\n : resolved;\n status = SUSPENSE_STATUS.RESOLVED;\n })\n .catch((err) => {\n error = err;\n status = SUSPENSE_STATUS.REJECTED;\n });\n }\n const [, forceUpdate] = useStore(0);\n useEffect(() => {\n if (status === SUSPENSE_STATUS.PENDING && promise) {\n let active = true;\n promise\n .then(() => {\n if (active) {\n forceUpdate((x) => x + 1);\n }\n })\n .catch(() => {\n if (active) {\n forceUpdate((x) => x + 1);\n }\n });\n return () => {\n active = false;\n };\n }\n }, []);\n return null;\n });\n LazyComponent._isLazy = true;\n LazyComponent._getStatus = () => status;\n return LazyComponent;\n}\nexport const Suspense = ({ fallback, children, }) => {\n const [isLoaded, setIsLoaded] = useStore(false);\n const childArray = Array.isArray(children) ? children : [children];\n let anyPending = false;\n for (const child of childArray) {\n if (isLazyElement(child)) {\n const lazyStatus = child.type._getStatus?.();\n if (lazyStatus === SUSPENSE_STATUS.PENDING) {\n anyPending = true;\n }\n }\n }\n useEffect(() => {\n if (!anyPending && !isLoaded) {\n setIsLoaded(true);\n }\n }, [anyPending]);\n if (anyPending && !getState().isSuspenseBackground) {\n return fallback || null;\n }\n return createElement(Fragment, {\n children: children,\n });\n};\nSuspense.type = RYUNIX_TYPES.RYUNIX_SUSPENSE;\nexport function preload(importFn) {\n return importFn();\n}\n","const perfNow = () => typeof performance !== 'undefined' ? performance.now() : Date.now();\nclass Profiler {\n enabled;\n measures;\n renderTimes;\n maxSamples;\n constructor() {\n this.enabled = process.env.NODE_ENV !== 'production';\n this.measures = new Map();\n this.renderTimes = [];\n this.maxSamples = 100;\n }\n startMeasure(name) {\n if (!this.enabled)\n return;\n this.measures.set(name, perfNow());\n }\n endMeasure(name) {\n if (!this.enabled)\n return;\n const start = this.measures.get(name);\n if (!start)\n return;\n const duration = perfNow() - start;\n this.measures.delete(name);\n return duration;\n }\n recordRender(componentName, duration) {\n if (!this.enabled)\n return;\n this.renderTimes.push({\n component: componentName,\n duration,\n timestamp: Date.now(),\n });\n if (this.renderTimes.length > this.maxSamples) {\n this.renderTimes.shift();\n }\n }\n getStats() {\n if (!this.enabled)\n return null;\n const total = this.renderTimes.reduce((sum, r) => sum + r.duration, 0);\n const avg = total / this.renderTimes.length;\n const max = Math.max(...this.renderTimes.map((r) => r.duration));\n const min = Math.min(...this.renderTimes.map((r) => r.duration));\n return { total, avg, max, min, count: this.renderTimes.length };\n }\n getSlowestComponents(limit = 10) {\n if (!this.enabled)\n return [];\n const byComponent = new Map();\n this.renderTimes.forEach(({ component, duration }) => {\n if (!byComponent.has(component)) {\n byComponent.set(component, { total: 0, count: 0, max: 0 });\n }\n const stats = byComponent.get(component);\n stats.total += duration;\n stats.count++;\n stats.max = Math.max(stats.max, duration);\n });\n return Array.from(byComponent.entries())\n .map(([name, stats]) => ({\n name,\n avg: stats.total / stats.count,\n max: stats.max,\n count: stats.count,\n }))\n .sort((a, b) => b.avg - a.avg)\n .slice(0, limit);\n }\n logStats() {\n if (!this.enabled)\n return;\n const stats = this.getStats();\n if (!stats)\n return;\n console.group('🔍 Ryunix Performance Stats');\n console.log(`Total renders: ${stats.count}`);\n console.log(`Avg render time: ${stats.avg.toFixed(2)}ms`);\n console.log(`Min: ${stats.min.toFixed(2)}ms | Max: ${stats.max.toFixed(2)}ms`);\n const slowest = this.getSlowestComponents(5);\n if (slowest.length > 0) {\n console.log('\\n⚠️ Slowest components:');\n slowest.forEach((comp, i) => {\n console.log(`${i + 1}. ${comp.name}: ${comp.avg.toFixed(2)}ms avg (${comp.count} renders)`);\n });\n }\n console.groupEnd();\n }\n clear() {\n this.renderTimes = [];\n this.measures.clear();\n }\n enable() {\n this.enabled = true;\n }\n disable() {\n this.enabled = false;\n }\n}\nconst profiler = new Profiler();\nexport function useProfiler(componentName) {\n const startTime = perfNow();\n return () => {\n const duration = perfNow() - startTime;\n profiler.recordRender(componentName, duration);\n };\n}\nexport function withProfiler(Component, name) {\n const Profiled = (props) => {\n profiler.startMeasure(name);\n const result = Component(props);\n const duration = profiler.endMeasure(name);\n if (duration)\n profiler.recordRender(name, duration);\n return result;\n };\n return Profiled;\n}\nexport { profiler };\n","import { createElement } from '../reconciler/createElement.js';\nexport function ServerBoundary({ children, id, }) {\n return createElement('div', { 'data-ryunix-server': id, style: { display: 'contents' } }, children);\n}\nServerBoundary.ryunix_type = 'RYUNIX_SERVER_BOUNDARY';\nexport function HydrationBoundary({ children, id, }) {\n return createElement('div', {\n 'data-ryunix-hydrate-boundary': id ?? '',\n suppressHydrationWarning: true,\n style: { display: 'contents' },\n }, children);\n}\nHydrationBoundary.ryunix_type = 'RYUNIX_HYDRATION_BOUNDARY';\n","import { createElement } from '../reconciler/createElement.js';\nimport { getState } from '../../utils/index.js';\nexport function ErrorBoundary({ children, fallback, }) {\n const state = getState();\n const wipFiber = state.wipFiber;\n if (wipFiber?.stateError) {\n const error = wipFiber.stateError;\n if (typeof fallback === 'function') {\n return fallback(error);\n }\n return fallback ?? null;\n }\n return createElement('ryunix-error-boundary-wrapper', { style: { display: 'contents' } }, children);\n}\n;\nErrorBoundary.ryunix_type =\n 'RYUNIX_ERROR_BOUNDARY';\n","export function createActionProxy(actionId) {\n return async function (...args) {\n const response = await fetch('/_ryunix/action', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Ryunix-Action': 'true',\n },\n body: JSON.stringify({ actionId, args }),\n });\n if (!response.ok) {\n const errorData = (await response.json().catch(() => ({})));\n throw new Error(errorData.error || 'Server Action failed');\n }\n return response.json();\n };\n}\n","import { createElement } from '../reconciler/createElement.js';\nimport { useStore, useEffect } from '../hooks/hooks.js';\nexport function RyunixDevOverlay(propsOrError) {\n const propsInput = propsOrError;\n const rawError = propsInput &&\n typeof propsInput === 'object' &&\n !(propsInput instanceof Error) &&\n propsInput.nativeEvent\n ? propsInput.error\n : propsInput;\n let error = null;\n if (rawError instanceof Error) {\n error = rawError;\n }\n else if (rawError && typeof rawError === 'object') {\n if ('message' in rawError) {\n error = rawError;\n }\n else if ('error' in rawError) {\n const nested = rawError.error;\n error =\n nested && typeof nested === 'object' ? nested : null;\n }\n else {\n error = rawError;\n }\n }\n const debugObjectStr = JSON.stringify(propsInput, Object.getOwnPropertyNames(propsInput || {}));\n const [snippetState, setSnippet] = useStore(null);\n const [startLineState, setStartLine] = useStore(1);\n const [errorFileState, setErrorFile] = useStore('');\n const [errorLineState, setErrorLine] = useStore(0);\n const snippet = snippetState;\n const startLine = startLineState;\n const errorFile = errorFileState;\n const errorLine = errorLineState;\n let stackLines = [];\n if (error && error.stack) {\n stackLines =\n typeof error.stack === 'string'\n ? error.stack.split('\\n').filter((line) => {\n const trimmed = line.trim();\n if (!trimmed)\n return false;\n if (trimmed.includes('node_modules'))\n return false;\n const isInternal = [\n 'fiber-update.js',\n 'workers.js',\n 'reconciler.js',\n 'commits.js',\n 'hooks/hooks.js',\n 'hooks.js',\n 'error-boundary.js',\n 'errorBoundary.js',\n 'boundaries.js',\n 'serverBoundary.js',\n 'app-router.js',\n 'app-router-server.js',\n 'render/render.js',\n 'render.js',\n 'createElement.js',\n 'index.js',\n ].some((file) => trimmed.includes(file));\n return !isInternal;\n })\n : Array.isArray(error.stack)\n ? error.stack\n : [];\n }\n const errorName = error && typeof error.name === 'string' ? error.name : 'Unknown Error Type';\n const errorMessage = error && typeof error.message === 'string'\n ? error.message\n : `Raw unhandled error. Debug: ${debugObjectStr}`;\n useEffect(() => {\n let targetPath = null;\n let targetLine = null;\n const ryunixSource = error?.__ryunix_source;\n if (ryunixSource?.fileName) {\n targetPath = ryunixSource.fileName;\n targetLine = ryunixSource.lineNumber ?? null;\n }\n if (!targetPath || !targetLine) {\n for (let i = 0; i < stackLines.length; i++) {\n const line = stackLines[i];\n if (!line.includes(':'))\n continue;\n let matchedPath = null;\n let matchedLine = null;\n const parenOpen = line.indexOf('(');\n const parenClose = line.lastIndexOf(')');\n if (parenOpen !== -1 && parenClose > parenOpen) {\n const inner = line.slice(parenOpen + 1, parenClose);\n const c2 = inner.lastIndexOf(':');\n const c1 = c2 > 0 ? inner.lastIndexOf(':', c2 - 1) : -1;\n if (c1 > 0) {\n const col = inner.slice(c2 + 1);\n const ln = inner.slice(c1 + 1, c2);\n if (/^\\d+$/.test(ln) && /^\\d+$/.test(col)) {\n matchedPath = inner.slice(0, c1);\n matchedLine = parseInt(ln, 10);\n }\n }\n }\n if (!matchedPath) {\n const trimmed = line.trim();\n if (trimmed.startsWith('at ')) {\n const rest = trimmed.slice(3).trim();\n const c2 = rest.lastIndexOf(':');\n const c1 = c2 > 0 ? rest.lastIndexOf(':', c2 - 1) : -1;\n if (c1 > 0) {\n const col = rest.slice(c2 + 1);\n const ln = rest.slice(c1 + 1, c2);\n if (/^\\d+$/.test(ln) && /^\\d+$/.test(col)) {\n matchedPath = rest.slice(0, c1);\n matchedLine = parseInt(ln, 10);\n }\n }\n }\n }\n if (!matchedPath) {\n const exts = ['.ryx', '.jsx', '.js', '.ts', '.tsx'];\n const c1 = line.lastIndexOf(':');\n if (c1 > 0) {\n const ln = line.slice(c1 + 1).trim();\n const filePart = line.slice(0, c1).trim();\n if (/^\\d+$/.test(ln) &&\n exts.some((ext) => filePart.endsWith(ext))) {\n matchedPath = filePart;\n matchedLine = parseInt(ln, 10);\n }\n }\n }\n if (matchedPath && matchedLine) {\n targetPath = matchedPath;\n targetLine = matchedLine;\n break;\n }\n }\n }\n if (targetPath && targetLine) {\n setErrorFile(targetPath);\n setErrorLine(targetLine);\n fetch(`/_ryunix/source?file=${encodeURIComponent(targetPath)}&line=${targetLine}`)\n .then((res) => res.json())\n .then((data) => {\n if (data.snippet) {\n setSnippet(data.snippet);\n setStartLine(data.startLine);\n }\n })\n .catch((err) => console.error('Failed to fetch source snippet', err));\n }\n }, [error]);\n const overlayStyle = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 2147483647,\n backgroundColor: 'rgba(0, 0, 0, 0.85)',\n backdropFilter: 'blur(8px)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '20px',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n };\n const modalStyle = {\n backgroundColor: '#0c0c0c',\n width: '100%',\n maxWidth: '1000px',\n maxHeight: '90vh',\n borderRadius: '12px',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.8)',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n border: '1px solid #333',\n };\n const headerStyle = {\n backgroundColor: '#161616',\n padding: '16px 24px',\n borderBottom: '1px solid #333',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n };\n const badgeStyle = {\n backgroundColor: 'rgba(239, 68, 68, 0.2)',\n color: '#ef4444',\n padding: '4px 8px',\n borderRadius: '4px',\n fontSize: '13px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n };\n const contentStyle = {\n padding: '32px',\n overflowY: 'auto',\n flex: 1,\n color: '#fff',\n };\n const titleStyle = {\n fontSize: '24px',\n fontWeight: 'bold',\n marginBottom: '24px',\n fontFamily: 'ui-monospace, monospace',\n wordBreak: 'break-word',\n lineHeight: 1.4,\n };\n const snippetContainerStyle = {\n backgroundColor: '#000',\n borderRadius: '8px',\n border: '1px solid #333',\n padding: '16px',\n fontFamily: 'ui-monospace, monospace',\n fontSize: '14px',\n overflowX: 'auto',\n color: '#d1d5db',\n marginBottom: '32px',\n whiteSpace: 'pre-wrap',\n maxHeight: '150px',\n height: 'auto',\n };\n const lineStyle = (isErrorLine) => ({\n display: 'flex',\n backgroundColor: isErrorLine ? 'rgba(239, 68, 68, 0.15)' : 'transparent',\n padding: '2px 8px',\n borderRadius: '4px',\n borderLeft: isErrorLine ? '3px solid #ef4444' : '3px solid transparent',\n });\n const snippetLines = snippet ? snippet.split('\\n') : [];\n let badgeText = 'UNHANDLED RUNTIME ERROR';\n if (errorName &&\n errorName !== 'Error' &&\n errorName !== 'Unknown Error Type') {\n badgeText = errorName.replace(/([a-z])([A-Z])/g, '$1 $2').toUpperCase();\n }\n return createElement('div', { style: overlayStyle }, createElement('div', { style: modalStyle }, createElement('div', { style: headerStyle }, createElement('div', { style: { display: 'flex', alignItems: 'center', gap: '12px' } }, createElement('span', { style: badgeStyle }, badgeText), createElement('span', { style: { color: '#9ca3af', fontSize: '14px' } }, 'Ryunix Development')), createElement('button', {\n onClick: () => window.location.reload(),\n style: {\n background: 'none',\n border: 'none',\n color: '#9ca3af',\n cursor: 'pointer',\n outline: 'none',\n },\n title: 'Reload page',\n }, createElement('svg', {\n width: '20',\n height: '20',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }, createElement('path', {\n d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8',\n }), createElement('path', { d: 'M3 3v5h5' })))), createElement('div', { style: contentStyle }, createElement('h1', { style: titleStyle }, createElement('span', { style: { color: '#f87171' } }, errorName), ': ', errorMessage), errorFile &&\n createElement('div', {\n style: {\n marginBottom: '16px',\n color: '#9ca3af',\n fontSize: '14px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n }, createElement('svg', {\n width: '16',\n height: '16',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }, createElement('path', {\n d: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\n }), createElement('polyline', { points: '13 2 13 9 20 9' })), errorFile, ':', errorLine), snippet &&\n createElement('div', { style: snippetContainerStyle }, createElement('div', { style: { display: 'flex', flexDirection: 'column' } }, ...snippetLines.map((lineText, index) => {\n const currentLineNumber = startLine + index;\n const isErrorLine = currentLineNumber === errorLine;\n return createElement('div', { key: index, style: lineStyle(isErrorLine) }, createElement('span', {\n style: {\n color: '#6b7280',\n width: '40px',\n userSelect: 'none',\n textAlign: 'right',\n marginRight: '16px',\n display: 'inline-block',\n },\n }, currentLineNumber), createElement('span', {\n style: {\n color: isErrorLine ? '#f87171' : '#e5e7eb',\n whiteSpace: 'pre',\n },\n }, lineText || ' '));\n }))), createElement('div', { style: { marginBottom: '16px' } }, createElement('p', {\n style: {\n color: '#9ca3af',\n fontSize: '14px',\n marginBottom: '8px',\n fontWeight: 600,\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n },\n }, 'Call Stack'), createElement('div', { style: snippetContainerStyle }, stackLines.length > 0\n ? createElement('ul', {\n style: {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n },\n }, ...stackLines.map((line, i) => {\n if (i === 0 &&\n (line.startsWith('Error:') ||\n line.startsWith('TypeError:')))\n return null;\n const trimmed = line.trim();\n let fnName = '<anonymous>';\n let filePath = line;\n if (trimmed.startsWith('at ')) {\n const rest = trimmed.slice(3);\n const parenOpen = rest.indexOf('(');\n const parenClose = rest.lastIndexOf(')');\n if (parenOpen !== -1 && parenClose > parenOpen) {\n fnName =\n rest.slice(0, parenOpen).trim() || '<anonymous>';\n filePath = rest.slice(parenOpen + 1, parenClose);\n }\n else {\n if (rest.includes(':')) {\n fnName = '<anonymous>';\n }\n else {\n fnName = rest;\n }\n filePath = rest;\n }\n }\n else if (trimmed.includes('@')) {\n const atIdx = trimmed.indexOf('@');\n fnName = trimmed.slice(0, atIdx) || '<anonymous>';\n filePath = trimmed.slice(atIdx + 1);\n }\n else {\n const exts = ['.ryx', '.jsx', '.js', '.ts', '.tsx'];\n const parts = trimmed.split(/\\s+/);\n if (parts.length >= 2) {\n const lastPart = parts[parts.length - 1];\n const colonIdx = lastPart.indexOf(':');\n const fileCandidate = colonIdx > 0 ? lastPart.slice(0, colonIdx) : lastPart;\n if (exts.some((ext) => fileCandidate.endsWith(ext))) {\n fnName = parts.slice(0, -1).join(' ');\n filePath = lastPart;\n }\n else {\n fnName = parts[0];\n filePath = parts.slice(1).join(' ');\n }\n }\n }\n return createElement('li', { key: i }, createElement('span', { style: { color: '#60a5fa', fontWeight: 600 } }, fnName), createElement('div', {\n style: {\n color: '#6b7280',\n marginTop: '4px',\n paddingLeft: '16px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n }, createElement('svg', {\n width: '12',\n height: '12',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: '2',\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }, createElement('path', {\n d: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\n }), createElement('polyline', {\n points: '13 2 13 9 20 9',\n })), filePath));\n }))\n : createElement('div', { style: { color: '#6b7280', fontStyle: 'italic' } }, 'No stack trace available.'))))));\n}\n","export const DEFAULT_THEME_COOKIE_NAME = 'ryunix_theme';\nexport const THEME_PREFERENCES = ['light', 'system', 'dark'];\nexport function createThemeController(options = {}) {\n const cookieName = options.cookieName ?? DEFAULT_THEME_COOKIE_NAME;\n const defaultTheme = options.defaultTheme ?? 'dark';\n const darkClass = options.darkClass ?? 'dark';\n const maxAgeSeconds = options.maxAgeSeconds ?? 365 * 24 * 60 * 60;\n const isThemePreference = (theme) => THEME_PREFERENCES.includes(theme);\n const getThemeCookie = () => {\n if (typeof document === 'undefined')\n return null;\n const match = document.cookie.match(new RegExp(`(?:^|;\\\\s*)${cookieName}=(light|system|dark)(?:;|$)`));\n return match ? match[1] : null;\n };\n const setThemeCookie = (theme) => {\n if (typeof document === 'undefined' || !isThemePreference(theme))\n return;\n document.cookie = `${cookieName}=${theme}; path=/; max-age=${maxAgeSeconds}; SameSite=Lax`;\n };\n const resolveThemeFromCookie = () => getThemeCookie() || defaultTheme;\n const getSystemColorScheme = () => {\n if (typeof window === 'undefined')\n return 'dark';\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n };\n const resolveEffectiveTheme = (theme) => {\n const choice = isThemePreference(theme) ? theme : defaultTheme;\n if (choice === 'system')\n return getSystemColorScheme();\n return choice;\n };\n const applyTheme = (theme) => {\n if (typeof document === 'undefined')\n return;\n const preference = isThemePreference(theme) ? theme : defaultTheme;\n const effective = resolveEffectiveTheme(preference);\n const root = document.documentElement;\n root.classList.toggle(darkClass, effective === 'dark');\n root.dataset.theme = preference;\n root.dataset.themeEffective = effective;\n root.style.colorScheme = effective === 'dark' ? 'dark' : 'light';\n };\n const getInitScript = () => `(function(){try{var m=document.cookie.match(/(?:^|;\\\\s*)${cookieName}=(light|system|dark)(?:;|$)/);var t=m?m[1]:'${defaultTheme}';var dark=t==='dark'||(t==='system'&&window.matchMedia('(prefers-color-scheme: dark)').matches);var r=document.documentElement;r.classList.toggle('${darkClass}',dark);r.dataset.theme=t;r.dataset.themeEffective=dark?'dark':'light';r.style.colorScheme=dark?'dark':'light';}catch(e){document.documentElement.classList.add('${darkClass}');}})();`;\n const watchSystemTheme = (onChange) => {\n if (typeof window === 'undefined')\n return () => { };\n const media = window.matchMedia('(prefers-color-scheme: dark)');\n const handler = () => onChange(getSystemColorScheme());\n media.addEventListener('change', handler);\n return () => media.removeEventListener('change', handler);\n };\n return {\n cookieName,\n defaultTheme,\n themes: THEME_PREFERENCES,\n getThemeCookie,\n setThemeCookie,\n resolveThemeFromCookie,\n getSystemColorScheme,\n resolveEffectiveTheme,\n applyTheme,\n getInitScript,\n watchSystemTheme,\n };\n}\nexport const themeController = createThemeController();\nexport const { cookieName: THEME_COOKIE_NAME, defaultTheme, themes, getThemeCookie, setThemeCookie, resolveThemeFromCookie, getSystemColorScheme, resolveEffectiveTheme, applyTheme, watchSystemTheme, } = themeController;\nexport const themeInitScript = themeController.getInitScript();\n","import { createElement } from '../reconciler/createElement.js';\nimport { useEffect, useStore } from '../hooks/hooks.js';\nimport { themeController, } from './theme.js';\nconst SunIcon = ({ className = '' }) => createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.75,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n className,\n 'aria-hidden': true,\n}, createElement('circle', { cx: 12, cy: 12, r: 4 }), createElement('path', {\n d: 'M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41',\n}));\nconst MonitorIcon = ({ className = '' }) => createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.75,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n className,\n 'aria-hidden': true,\n}, createElement('rect', { x: 2, y: 3, width: 20, height: 14, rx: 2 }), createElement('path', { d: 'M8 21h8M12 17v4' }));\nconst MoonIcon = ({ className = '' }) => createElement('svg', {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.75,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n className,\n 'aria-hidden': true,\n}, createElement('path', {\n d: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z',\n}));\nconst ICONS = {\n light: SunIcon,\n system: MonitorIcon,\n dark: MoonIcon,\n};\nexport function ThemeToggle({ labels, className = '', controller = themeController, }) {\n const [theme, setTheme] = useStore(controller.defaultTheme);\n useEffect(() => {\n const saved = controller.resolveThemeFromCookie();\n setTheme(saved);\n controller.applyTheme(saved);\n }, []);\n useEffect(() => {\n if (theme !== 'system')\n return undefined;\n return controller.watchSystemTheme(() => controller.applyTheme('system'));\n }, [theme]);\n const selectTheme = (next) => {\n if (next === theme)\n return;\n setTheme(next);\n controller.setThemeCookie(next);\n controller.applyTheme(next);\n };\n return createElement('div', {\n className: `ryx-theme-segment ${className}`.trim(),\n role: 'radiogroup',\n 'aria-label': labels.title,\n }, ...controller.themes.map((id) => {\n const active = theme === id;\n const Icon = ICONS[id];\n return createElement('button', {\n key: id,\n type: 'button',\n role: 'radio',\n 'aria-checked': active ? 'true' : 'false',\n title: labels[id],\n className: `ryx-theme-segment-btn${active ? ' ryx-theme-segment-btn--active' : ''}`,\n onClick: () => selectTheme(id),\n }, Icon({ className: 'ryx-theme-segment-icon' }), createElement('span', { className: 'ryx-theme-segment-sr-only' }, labels[id]));\n }));\n}\nexport function ThemeInitScript({ controller = themeController, } = {}) {\n return createElement('script', {\n dangerouslySetInnerHTML: { __html: controller.getInitScript() },\n });\n}\n","import { createElement } from '../reconciler/createElement.js';\nimport { flattenArray } from '../../utils/index.js';\nconst renderBrand = ({ image, title, href = '/', imageAlt, blockClass, linkClass, imageClass, titleClass, }) => {\n if (!image && !title)\n return null;\n const content = [\n image\n ? createElement('img', {\n src: image,\n alt: imageAlt ?? title ?? '',\n className: imageClass,\n })\n : null,\n title ? createElement('span', { className: titleClass }, title) : null,\n ].filter(Boolean);\n return createElement('div', { className: blockClass }, createElement('a', { href, className: linkClass }, ...content));\n};\nconst renderChildren = (children) => {\n if (children == null || children === false)\n return [];\n return flattenArray(Array.isArray(children) ? children : [children]).filter((child) => child != null && child !== false);\n};\nconst renderSlot = (className, children) => {\n const items = renderChildren(children);\n if (items.length === 0)\n return null;\n return createElement('div', { className }, ...items);\n};\nexport function Main({ maxWidth, className = '', innerClassName = '', children, }) {\n const innerStyle = maxWidth != null && maxWidth !== ''\n ? { maxWidth, marginInline: 'auto', width: '100%' }\n : undefined;\n return createElement('main', {\n className: `ryx-main ${className}`.trim(),\n }, createElement('div', {\n className: `ryx-main-inner ${innerClassName}`.trim(),\n style: innerStyle,\n }, ...renderChildren(children)));\n}\nexport function Header({ image, title, href = '/', imageAlt, sticky = true, className = '', children, }) {\n const headerClass = [\n 'ryx-header',\n sticky !== false ? 'ryx-header--sticky' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n return createElement('header', {\n className: headerClass,\n }, createElement('div', { className: 'ryx-header-inner' }, createElement('div', { className: 'ryx-header-start' }, renderBrand({\n image,\n title,\n href,\n imageAlt,\n blockClass: 'ryx-header-brand',\n linkClass: 'ryx-header-brand-link',\n imageClass: 'ryx-header-brand-image',\n titleClass: 'ryx-header-brand-title',\n })), renderSlot('ryx-header-end', children)));\n}\nexport function Footer({ image, title, description, href = '/', imageAlt, className = '', children, bottomStart, bottomEnd, }) {\n const brand = renderBrand({\n image,\n title,\n href,\n imageAlt,\n blockClass: 'ryx-footer-brand',\n linkClass: 'ryx-footer-brand-link',\n imageClass: 'ryx-footer-brand-image',\n titleClass: 'ryx-footer-brand-title',\n });\n const brandColumn = brand || description\n ? createElement('div', { className: 'ryx-footer-brand-column' }, brand, description\n ? createElement('p', { className: 'ryx-footer-description' }, description)\n : null)\n : null;\n const columns = renderChildren(children).map((child, index) => createElement('div', { key: index, className: 'ryx-footer-column' }, child));\n const bottomStartSlot = renderSlot('ryx-footer-bottom-start', bottomStart);\n const bottomEndSlot = renderSlot('ryx-footer-bottom-end', bottomEnd);\n const bottomBar = bottomStartSlot || bottomEndSlot\n ? createElement('div', { className: 'ryx-footer-bottom' }, bottomStartSlot, bottomEndSlot)\n : null;\n return createElement('footer', {\n className: `ryx-footer ${className}`.trim(),\n }, createElement('div', {\n className: 'ryx-footer-accent',\n 'aria-hidden': 'true',\n }), createElement('div', {\n className: 'ryx-footer-glow',\n 'aria-hidden': 'true',\n }), createElement('div', { className: 'ryx-footer-inner' }, brandColumn || columns.length > 0\n ? createElement('div', { className: 'ryx-footer-grid' }, brandColumn, ...columns)\n : null, bottomBar));\n}\n","export function getRyunixI18nConfig() {\n try {\n const value = ryunix.config.i18n;\n if (value && Array.isArray(value.locales) && value.locales.length > 0) {\n return value;\n }\n }\n catch {\n }\n return null;\n}\n","export function defineMessages(messages) {\n return messages;\n}\nexport function resolveMessageKey(tree, key) {\n if (!tree)\n return undefined;\n const parts = key.split('.');\n let node = tree;\n for (const part of parts) {\n if (node == null || typeof node === 'string')\n return undefined;\n node = node[part];\n }\n return typeof node === 'string' ? node : undefined;\n}\nexport function formatMessage(template, params) {\n if (!params)\n return template;\n return Object.entries(params).reduce((value, [name, replacement]) => value.replace(new RegExp(`\\\\{${escapeRegExp(name)}\\\\}`, 'g'), String(replacement)), template);\n}\nfunction escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","export function normalizeI18nConfig(config) {\n const locales = [...new Set(config.locales.filter(Boolean))];\n if (locales.length === 0) {\n throw new Error('[Ryunix i18n] At least one locale is required.');\n }\n const defaultLocale = locales.includes(config.defaultLocale)\n ? config.defaultLocale\n : locales[0];\n return { ...config, locales, defaultLocale };\n}\nexport function pickLocale(record, locale, fallback) {\n return record?.[locale] ?? record?.[fallback];\n}\nexport function getLocaleFromPath(pathname, locales) {\n if (typeof pathname !== 'string' || locales.length === 0)\n return null;\n const pattern = new RegExp(`^/(${locales.map(escapeRegExp).join('|')})(/|$)`);\n const match = pathname.match(pattern);\n return match ? match[1] : null;\n}\nexport function localePath(locale, path = '', locales) {\n const normalized = path.startsWith('/') ? path : path ? `/${path}` : '';\n if (!locales.includes(locale))\n return normalized || '/';\n if (!normalized || normalized === '/')\n return `/${locale}`;\n return `/${locale}${normalized}`;\n}\nexport function swapLocalePath(pathname, targetLocale, options) {\n const { locales } = options;\n if (!locales.includes(targetLocale))\n return pathname;\n const current = getLocaleFromPath(pathname, locales);\n if (current) {\n const rest = pathname.slice(current.length + 1) || '';\n return localePath(targetLocale, rest, locales);\n }\n if (pathname.startsWith('/')) {\n return localePath(targetLocale, pathname, locales);\n }\n return localePath(targetLocale, '', locales);\n}\nfunction escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import { createElement } from '../reconciler/createElement.js';\nimport { createContext, useRouter } from '../hooks/hooks.js';\nimport { getRyunixI18nConfig } from './config.js';\nimport { defineMessages, formatMessage, resolveMessageKey, } from './messages.js';\nimport { getLocaleFromPath, localePath, normalizeI18nConfig, pickLocale, swapLocalePath, } from './paths.js';\nexport const DEFAULT_LOCALE_COOKIE_NAME = 'ryunix_locale';\nfunction resolveCookieOptions(cookie, cookieName, maxAgeSeconds) {\n const enabled = cookie !== false;\n const cookieConfig = typeof cookie === 'object' ? cookie : {};\n return {\n enabled,\n cookieName: cookieName ?? cookieConfig.name ?? DEFAULT_LOCALE_COOKIE_NAME,\n maxAgeSeconds: maxAgeSeconds ?? cookieConfig.maxAgeSeconds ?? 365 * 24 * 60 * 60,\n };\n}\nfunction normalizeOptions(options) {\n const base = normalizeI18nConfig({\n locales: options.locales,\n defaultLocale: options.defaultLocale,\n });\n const cookie = resolveCookieOptions(options.cookie, options.cookieName, options.maxAgeSeconds);\n const localeLabels = { ...options.localeLabels };\n for (const locale of base.locales) {\n if (!localeLabels[locale])\n localeLabels[locale] = locale.toUpperCase();\n }\n return {\n locales: base.locales,\n defaultLocale: base.defaultLocale,\n localeLabels,\n cookieName: cookie.cookieName,\n maxAgeSeconds: cookie.maxAgeSeconds,\n cookieEnabled: cookie.enabled,\n messages: options.messages ?? {},\n };\n}\nfunction createTranslate(messages, locale, defaultLocale) {\n return (key, params) => {\n const value = resolveMessageKey(messages[locale], key) ??\n resolveMessageKey(messages[defaultLocale], key) ??\n key;\n return formatMessage(value, params);\n };\n}\nexport function createI18n(options) {\n const config = normalizeOptions(options);\n const { Provider: I18nContextProvider, useContext } = createContext('ryunix.i18n', {\n locale: config.defaultLocale,\n defaultLocale: config.defaultLocale,\n locales: config.locales,\n localeLabels: config.localeLabels,\n t: (key) => key,\n });\n const isLocale = (value) => typeof value === 'string' && config.locales.includes(value);\n const getLocaleCookie = () => {\n if (!config.cookieEnabled || typeof document === 'undefined')\n return null;\n const pattern = new RegExp(`(?:^|;\\\\s*)${config.cookieName}=(${config.locales.map(escapeRegExp).join('|')})(?:;|$)`);\n const match = document.cookie.match(pattern);\n return match ? match[1] : null;\n };\n const setLocaleCookie = (locale) => {\n if (!config.cookieEnabled ||\n typeof document === 'undefined' ||\n !isLocale(locale))\n return;\n document.cookie = `${config.cookieName}=${locale}; path=/; max-age=${config.maxAgeSeconds}; SameSite=Lax`;\n };\n const resolveLocaleFromCookie = () => getLocaleCookie() || config.defaultLocale;\n const getLocaleRedirectScript = () => {\n if (!config.cookieEnabled)\n return '';\n const localesPattern = config.locales.map(escapeRegExp).join('|');\n return `(function(){try{var m=document.cookie.match(/(?:^|;\\\\s*)${config.cookieName}=(${localesPattern})(?:;|$)/);var l=m?m[1]:'${config.defaultLocale}';var p=location.pathname;var r=new RegExp('^/(${localesPattern})(/|$)');if(!r.test(p)){location.replace('/'+l+(p==='/'?'':p));}}catch(e){}})();`;\n };\n const Provider = ({ locale, children, }) => {\n const resolved = isLocale(locale) ? locale : config.defaultLocale;\n const value = {\n locale: resolved,\n defaultLocale: config.defaultLocale,\n locales: config.locales,\n localeLabels: config.localeLabels,\n t: createTranslate(config.messages, resolved, config.defaultLocale),\n };\n return createElement(I18nContextProvider, { value, children });\n };\n const useI18n = () => useContext();\n const useLocale = () => useI18n().locale;\n const useTranslations = () => useI18n().t;\n const generateStaticParams = () => config.locales.map((locale) => ({ locale }));\n const LocaleSwitcher = ({ className = '' }) => {\n const { location, navigate } = useRouter();\n const { locale: current, localeLabels, locales } = useI18n();\n const onSelect = (locale) => {\n if (locale === current)\n return;\n setLocaleCookie(locale);\n const next = swapLocalePath(location, locale, {\n locales,\n defaultLocale: config.defaultLocale,\n });\n navigate(next.startsWith(`/${locale}`) ? next : `/${locale}`);\n };\n return createElement('div', {\n className: `ryunix-locale-switcher ${className}`.trim(),\n role: 'group',\n 'aria-label': 'Language',\n children: locales.map((locale) => createElement('button', {\n key: locale,\n type: 'button',\n onClick: () => onSelect(locale),\n className: locale === current\n ? 'ryunix-locale-switcher__btn is-active'\n : 'ryunix-locale-switcher__btn',\n 'aria-current': locale === current ? 'true' : undefined,\n }, localeLabels[locale] ?? locale)),\n });\n };\n return {\n config,\n Provider,\n useI18n,\n useLocale,\n useTranslations,\n LocaleSwitcher,\n generateStaticParams,\n getLocaleFromPath: (pathname) => getLocaleFromPath(pathname, config.locales),\n localePath: (locale, path = '') => localePath(locale, path, config.locales),\n swapLocalePath: (pathname, targetLocale) => swapLocalePath(pathname, targetLocale, {\n locales: config.locales,\n defaultLocale: config.defaultLocale,\n }),\n pickLocale: (record, locale) => pickLocale(record, locale, config.defaultLocale),\n getLocaleCookie,\n setLocaleCookie,\n resolveLocaleFromCookie,\n getLocaleRedirectScript,\n };\n}\nexport function createAppI18n(messages, fallback) {\n const fromConfig = getRyunixI18nConfig() ?? fallback;\n if (!fromConfig) {\n throw new Error('[Ryunix i18n] Missing ryunix.config.i18n. Add i18n: { locales, defaultLocale } to ryunix.config.js, pass a fallback to createAppI18n(), or call createI18n() directly.');\n }\n return createI18n({ ...fromConfig, messages });\n}\nexport function createI18nFromConfig(config, messages) {\n if (!config?.locales?.length) {\n throw new Error('[Ryunix i18n] Invalid i18n config: locales array is required.');\n }\n return createI18n({ ...config, messages });\n}\nfunction escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport { defineMessages, getRyunixI18nConfig };\nexport { getLocaleFromPath, localePath, pickLocale, swapLocalePath, normalizeI18nConfig, } from './paths.js';\n","import { createElement } from '../reconciler/createElement.js';\nimport { createContext } from '../hooks/hooks.js';\nconst { Provider: MDXProvider, useContext: useMDXComponents } = createContext('ryunix.mdx', {});\nconst getMDXComponents = (components) => {\n const contextComponents = useMDXComponents();\n return {\n ...contextComponents,\n ...components,\n };\n};\nconst RYUNIX_STYLE_ENABLED = globalThis.process && String(globalThis.process.env?.RYUNIX_STYLE) === 'true';\nconst ryxProps = (props) => {\n const { unstyled, ...rest } = props;\n if (unstyled || rest['data-ryx-unstyled']) {\n return { ...rest, 'data-ryx-unstyled': true };\n }\n return rest;\n};\nconst mergeClassName = (existing, base) => {\n if (!existing)\n return base;\n if (Array.isArray(existing))\n return [...existing, base].join(' ');\n return `${existing} ${base}`;\n};\nconst styledMdxHost = (tag, ryxClass, props) => {\n const next = ryxProps(props);\n if (!RYUNIX_STYLE_ENABLED || !ryxClass || next['data-ryx-unstyled']) {\n return createElement(tag, next);\n }\n return createElement(tag, {\n ...next,\n className: mergeClassName(next.className, ryxClass),\n });\n};\nconst defaultComponents = {\n h1: (props) => styledMdxHost('h1', 'ryx-h1', props),\n h2: (props) => styledMdxHost('h2', 'ryx-h2', props),\n h3: (props) => styledMdxHost('h3', 'ryx-h3', props),\n h4: (props) => styledMdxHost('h4', 'ryx-h4', props),\n h5: (props) => styledMdxHost('h5', 'ryx-h5', props),\n h6: (props) => styledMdxHost('h6', 'ryx-h6', props),\n p: (props) => styledMdxHost('p', 'ryx-p', props),\n a: (props) => styledMdxHost('a', 'ryx-a', props),\n strong: (props) => styledMdxHost('strong', 'ryx-strong', props),\n em: (props) => styledMdxHost('em', 'ryx-em', props),\n code: (props) => styledMdxHost('code', 'ryx-code', props),\n ul: (props) => styledMdxHost('ul', 'ryx-ul', props),\n ol: (props) => styledMdxHost('ol', 'ryx-ol', props),\n li: (props) => styledMdxHost('li', 'ryx-li', props),\n blockquote: (props) => styledMdxHost('blockquote', 'ryx-blockquote', props),\n pre: (props) => styledMdxHost('pre', 'ryx-pre', props),\n hr: (props) => styledMdxHost('hr', 'ryx-hr', props),\n table: (props) => styledMdxHost('table', 'ryx-table', props),\n thead: (props) => styledMdxHost('thead', 'ryx-thead', props),\n tbody: (props) => styledMdxHost('tbody', 'ryx-tbody', props),\n tr: (props) => styledMdxHost('tr', 'ryx-tr', props),\n th: (props) => styledMdxHost('th', 'ryx-th', props),\n td: (props) => styledMdxHost('td', 'ryx-td', props),\n img: (props) => styledMdxHost('img', 'ryx-img', props),\n};\nconst Image = ({ src, ...props }) => {\n return createElement('img', { ...props, src });\n};\nconst MDXContent = ({ children, components = {}, }) => {\n const mergedComponents = getMDXComponents(components);\n return createElement(MDXProvider, { value: mergedComponents }, createElement('div', null, children));\n};\nexport { MDXContent, MDXProvider, useMDXComponents, getMDXComponents, defaultComponents, ryxProps, Image, };\n","import * as Ryunix from './lib/index.js';\nexport * from './lib/index.js';\nexport { Image, MDXContent, MDXProvider, useMDXComponents, getMDXComponents, defaultComponents, ryxProps, } from './lib/ui/mdx.js';\nif (typeof window !== 'undefined')\n window.Ryunix = Ryunix;\nexport default Ryunix;\n"],"names":["nextValidSibling","pendingUpdates","scheduleWork","validateHookCall","escapeRegExp"],"mappings":";;;;;;IAAA,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,OAAO,mBAAmB,KAAK,WAAW,GAAG,mBAAmB,GAAG,WAAW;IAC1F,MAAM,iBAAiB,GAAG,OAAO;IACjC,IAAI,aAAa,EAAE,IAAI;IACvB,IAAI,cAAc,EAAE,IAAI;IACxB,IAAI,WAAW,EAAE,IAAI;IACrB,IAAI,OAAO,EAAE,IAAI;IACjB,IAAI,SAAS,EAAE,EAAE;IACjB,IAAI,QAAQ,EAAE,IAAI;IAClB,IAAI,SAAS,EAAE,CAAC;IAChB,IAAI,OAAO,EAAE,EAAE;IACf,CAAC,CAAC;IACF,IAAI,WAAW,GAAG,iBAAiB,EAAE;AACzB,UAAC,QAAQ,GAAG,MAAM;IAC9B,MAAM,oBAAoB,GAAG,QAAQ;IAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,IAAI,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACnD,IAAI,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChD,IAAI,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACnD,IAAI,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IACxC,IAAI,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;IAC5C,IAAI,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,IAAI,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAClD,IAAI,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChD,IAAI,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAClD,CAAC,CAAC;IACK,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,IAAI,MAAM,EAAE,QAAQ;IACpB,IAAI,QAAQ,EAAE,UAAU;IACxB,IAAI,KAAK,EAAE,cAAc;IACzB,IAAI,UAAU,EAAE,cAAc;IAC9B,IAAI,QAAQ,EAAE,UAAU;IACxB,IAAI,OAAO,EAAE,SAAS;IACtB,IAAI,MAAM,EAAE,QAAQ;IACpB,IAAI,SAAS,EAAE,WAAW;IAC1B,CAAC,CAAC;IACK,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,UAAU,EAAE,WAAW;IAC3B,CAAC,CAAC;IACK,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,IAAI,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC;IAC/D,IAAI,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC;IACzD,IAAI,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC;IAC7D,IAAI,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC;IAC/D,IAAI,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC3D,CAAC,CAAC;IACK,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE;IAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IAC3B,QAAQ,OAAO,CAAC,GAAG,CAAC;IACpB,IAAI,IAAI,KAAK,GAAG,CAAC;IACjB,QAAQ,OAAO,GAAG,CAAC,KAAK,EAAE;IAC1B,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;IACpC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;IAC7C,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACrD,QAAQ;IACR,aAAa;IACb,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB,QAAQ;IACR,QAAQ,OAAO,GAAG;IAClB,IAAI,CAAC,EAAE,EAAE,CAAC;IACV;IACO,MAAM,EAAE,GAAG;IAClB,IAAI,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,OAAO,CAAC,MAAM;IAClE,IAAI,QAAQ,EAAE,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,OAAO,CAAC,QAAQ;IACtD,IAAI,MAAM,EAAE,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,OAAO,CAAC,MAAM;IAClD,IAAI,SAAS,EAAE,CAAC,GAAG,KAAK,OAAO,GAAG,KAAK,OAAO,CAAC,SAAS;IACxD,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI;IAC/B,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,GAAG,YAAY,OAAO;IAC5C,CAAC;IAQM,SAASA,kBAAgB,CAAC,IAAI,EAAE;IACvC,IAAI,IAAI,IAAI,GAAG,IAAI;IACnB,IAAI,OAAO,IAAI;IACf,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;IACxD,YAAY,IAAI,CAAC,QAAQ,KAAK,CAAC;IAC/B,aAAa,IAAI,CAAC,QAAQ,KAAK,CAAC;IAChC,gBAAgB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;IACxD,QAAQ,IAAI,GAAG,IAAI,CAAC,WAAW;IAC/B,IAAI;IACJ,IAAI,OAAO,IAAI;IACf;;ICzFA,MAAM,iBAAiB,GAAG,CAAC,IAAI,KAAK;IACpC,IAAI,OAAO;IACX,QAAQ,IAAI,EAAE,YAAY,CAAC,YAAY;IACvC,QAAQ,KAAK,EAAE;IACf,YAAY,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC;IACnC,YAAY,QAAQ,EAAE,EAAE;IACxB,SAAS;IACT,KAAK;IACL,CAAC;AACI,UAAC,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,KAAK;IACpD,IAAI,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IACjC,IAAI,IAAI,WAAW,GAAG,QAAQ;IAC9B,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;IACnE,QAAQ,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ;IACtD,cAAc,SAAS,CAAC;IACxB,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC;IAClC,IAAI;IACJ,IAAI,WAAW,GAAG;IAClB,SAAS,IAAI;IACb,SAAS,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;IAC9E,IAAI,MAAM,kBAAkB,GAAG,EAAE;IACjC,IAAI,IAAI,WAAW,GAAG,EAAE;IACxB,IAAI,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;IACrC,QAAQ,IAAI,OAAO,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE;IAC7C,YAAY,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC;IACxC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,WAAW,KAAK,EAAE,EAAE;IACpC,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACvE,gBAAgB,WAAW,GAAG,EAAE;IAChC,YAAY;IACZ,YAAY,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,WAAW,KAAK,EAAE,EAAE;IAC5B,QAAQ,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI;IACJ,IAAI,OAAO;IACX,QAAQ,IAAI;IACZ,QAAQ,KAAK,EAAE;IACf,YAAY,GAAG,SAAS;IACxB,YAAY,QAAQ,EAAE,kBAAkB;IACxC,SAAS;IACT,KAAK;IACL;AACK,UAAC,QAAQ,GAAG,CAAC,KAAK,KAAK;IAC5B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ;IACjD,UAAU,KAAK,CAAC;IAChB,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1B,IAAI,OAAO,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;IACvE;AACK,UAAC,YAAY,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,QAAQ,KAAK;IAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAChE,IAAI;IACJ,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvF,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACrI;AACK,UAAC,cAAc,GAAG,CAAC,MAAM,KAAK;IACnC,IAAI,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7B,QAAQ,MAAM,CAAC,IAAI,KAAK,SAAS;IACjC,QAAQ,MAAM,CAAC,KAAK,KAAK,SAAS;IAClC;;IC9DA,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAC7C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK;IACvC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;IAChD,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;IACjC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;IAC7B,QAAQ;IACR,IAAI,KAAK,CAAC;IACV,SAAS,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9F,SAAS,OAAO,CAAC,CAAC,IAAI,KAAK;IAC3B,QAAQ,IAAI;IACZ,YAAY,IAAI,IAAI,CAAC,MAAM;IAC3B,gBAAgB,IAAI,CAAC,MAAM,EAAE;IAC7B,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI;IAC9B,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;IAChE,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;IACrC,IAAI,IAAI,CAAC,KAAK;IACd,QAAQ;IACR,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE;IAC7B,QAAQ,KAAK,CAAC;IACd,aAAa,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAClG,aAAa,OAAO,CAAC,CAAC,IAAI,KAAK;IAC/B,YAAY,IAAI;IAChB,gBAAgB,IAAI,IAAI,CAAC,MAAM;IAC/B,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB,IAAI,CAAC,MAAM,GAAG,IAAI;IAClC,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC3D,oBAAoB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;IACzE,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,KAAK;IACnB,QAAQ,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;IACtC,IAAI,IAAI,KAAK,CAAC,OAAO;IACrB,QAAQ,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC;IACxC,CAAC;;ICjDD,MAAM,YAAY,GAAG;IACrB,IAAI,WAAW,EAAE,cAAc;IAC/B,IAAI,aAAa,EAAE,gBAAgB;IACnC,IAAI,cAAc,EAAE,iBAAiB;IACrC,IAAI,eAAe,EAAE,kBAAkB;IACvC,IAAI,gBAAgB,EAAE,mBAAmB;IACzC,IAAI,gBAAgB,EAAE,mBAAmB;IACzC,IAAI,aAAa,EAAE,gBAAgB;IACnC,IAAI,QAAQ,EAAE,WAAW;IACzB,IAAI,WAAW,EAAE,cAAc;IAC/B,IAAI,QAAQ,EAAE,WAAW;IACzB,IAAI,QAAQ,EAAE,WAAW;IACzB,IAAI,UAAU,EAAE,aAAa;IAC7B,IAAI,QAAQ,EAAE,WAAW;IACzB,IAAI,UAAU,EAAE,aAAa;IAC7B,IAAI,UAAU,EAAE,aAAa;IAC7B,IAAI,cAAc,EAAE,iBAAiB;IACrC,IAAI,gBAAgB,EAAE,mBAAmB;IACzC,IAAI,iBAAiB,EAAE,oBAAoB;IAC3C,IAAI,aAAa,EAAE,gBAAgB;IACnC,IAAI,SAAS,EAAE,YAAY;IAC3B,IAAI,WAAW,EAAE,cAAc;IAC/B,IAAI,UAAU,EAAE,aAAa;IAC7B,IAAI,YAAY,EAAE,eAAe;IACjC,IAAI,aAAa,EAAE,gBAAgB;IACnC,IAAI,kBAAkB,EAAE,qBAAqB;IAC7C,IAAI,yBAAyB,EAAE,6BAA6B;IAC5D,IAAI,aAAa,EAAE,gBAAgB;IACnC,IAAI,cAAc,EAAE,iBAAiB;IACrC,IAAI,cAAc,EAAE,iBAAiB;IACrC,IAAI,WAAW,EAAE,cAAc;IAC/B,IAAI,SAAS,EAAE,YAAY;IAC3B,IAAI,SAAS,EAAE,YAAY;IAC3B,CAAC;IACM,SAAS,aAAa,CAAC,IAAI,EAAE;IACpC,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI;IACrC;;ACnCY,UAAC,QAAQ,GAAG;IACxB,IAAI,SAAS,EAAE,CAAC;IAChB,IAAI,aAAa,EAAE,CAAC;IACpB,IAAI,MAAM,EAAE,CAAC;IACb,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,IAAI,EAAE,CAAC;IACX;IACA,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM;IACrC,IAAIC,gBAAc,GAAG,EAAE;IACvB,IAAI,YAAY,GAAG,KAAK;IACjB,SAAS,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE;IACrE,IAAIA,gBAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACtE,IAAI,IAAI,CAAC,YAAY,EAAE;IACvB,QAAQ,YAAY,GAAG,IAAI;IAC3B,QAAQ,GAAG,CAAC,qBAAqB,CAAC;IAClC,IAAI;IACJ;IACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE;IACzC,IAAIA,gBAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC1D,IAAI,OAAOA,gBAAc,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;IACtE,QAAQ,MAAM,MAAM,GAAGA,gBAAc,CAAC,KAAK,EAAE;IAC7C,QAAQ,IAAI,CAAC,MAAM;IACnB,YAAY;IACZ,QAAQ,eAAe,GAAG,MAAM,CAAC,QAAQ;IACzC,QAAQ,MAAM,CAAC,QAAQ,EAAE;IACzB,IAAI;IACJ,IAAI,IAAIA,gBAAc,CAAC,MAAM,GAAG,CAAC,EAAE;IACnC,QAAQ,GAAG,CAAC,qBAAqB,CAAC;IAClC,IAAI;IACJ,SAAS;IACT,QAAQ,YAAY,GAAG,KAAK;IAC5B,QAAQ,eAAe,GAAG,QAAQ,CAAC,MAAM;IACzC,IAAI;IACJ;IACO,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE;IACpD,IAAI,MAAM,gBAAgB,GAAG,eAAe;IAC5C,IAAI,eAAe,GAAG,QAAQ;IAC9B,IAAI,IAAI;IACR,QAAQ,OAAO,QAAQ,EAAE;IACzB,IAAI;IACJ,YAAY;IACZ,QAAQ,eAAe,GAAG,gBAAgB;IAC1C,IAAI;IACJ;IACO,SAAS,kBAAkB,GAAG;IACrC,IAAI,OAAO,eAAe;IAC1B;;IC3CA,MAAM,YAAY,GAAG,CAAC,SAAS,KAAK;IACpC,IAAI,OAAO,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,QAAQ,KAAK;IACvC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;IACnD,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;IAC9B,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI;IACR,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ;IAC/C,aAAa,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI;IACjD,aAAa,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;IACnC,YAAY,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC;IAC9C,YAAY,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1C,QAAQ,CAAC;IACT,aAAa,IAAI,CAAC,IAAI,CAAC;IACvB,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;IACnC,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;IAC1D,QAAQ;IACR,IAAI;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,WAAW,KAAK;IACxD,IAAI,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACnD,QAAQ,IAAI,WAAW,EAAE;IACzB,YAAY,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACvE,YAAY,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;IAC/C,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,WAAW,EAAE;IACrB,QAAQ,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACnE,QAAQ,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;IAC3C,IAAI;IACJ,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/D,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/B,QAAQ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IACxC,IAAI;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,KAAK,KAAK;IAC7B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe;IACnD,QAAQ,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc;IAClD,QAAQ,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;IACpD,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,IAAI,GAAG;IACX,IAAI,IAAI;IACR,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,EAAE;IACtD,YAAY,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7C,QAAQ;IACR,aAAa,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IACxC,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI;IACvC,YAAY,MAAM,KAAK,GAAG;IAC1B,gBAAgB,KAAK;IACrB,gBAAgB,MAAM;IACtB,gBAAgB,GAAG;IACnB,gBAAgB,QAAQ;IACxB,gBAAgB,SAAS;IACzB,gBAAgB,MAAM;IACtB,gBAAgB,MAAM;IACtB,gBAAgB,UAAU;IAC1B,gBAAgB,SAAS;IACzB,gBAAgB,MAAM;IACtB,gBAAgB,OAAO;IACvB,gBAAgB,MAAM;IACtB,gBAAgB,KAAK;IACrB,gBAAgB,QAAQ;IACxB,gBAAgB,MAAM;IACtB,gBAAgB,UAAU;IAC1B,gBAAgB,gBAAgB;IAChC,gBAAgB,gBAAgB;IAChC,gBAAgB,MAAM;IACtB,gBAAgB,QAAQ;IACxB,gBAAgB,gBAAgB;IAChC,gBAAgB,UAAU;IAC1B,gBAAgB,SAAS;IACzB,gBAAgB,aAAa;IAC7B,gBAAgB,SAAS;IACzB,gBAAgB,eAAe;IAC/B,gBAAgB,aAAa;IAC7B,gBAAgB,eAAe;IAC/B,gBAAgB,OAAO;IACvB,gBAAgB,QAAQ;IACxB,gBAAgB,SAAS;IACzB,gBAAgB,UAAU;IAC1B,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChC,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,QAAQ,CAAC;IACtF,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;IACtD,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,IAAI,CAAC;IAC3F,YAAY;IACZ,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,QAAQ,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;IACvC,QAAQ,OAAO,GAAG;IAClB,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,EAAE,KAAK,CAAC;IACtE,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAK;IAC/C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;IACjC,QAAQ,OAAO,KAAK;IACpB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE;IACvC,IAAI,IAAI,IAAI,KAAK,MAAM;IACvB,QAAQ,IAAI,KAAK,KAAK;IACtB,QAAQ,IAAI,KAAK,QAAQ;IACzB,QAAQ,IAAI,KAAK,YAAY,EAAE;IAC/B,QAAQ,OAAO,KAAK;IACpB,IAAI;IACJ,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;IAC9D,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;IAC5C,QAAQ,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;IAC1C,QAAQ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IACxC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzF,QAAQ;IACR,QAAQ,OAAO,oBAAoB;IACnC,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB,CAAC;IACM,MAAM,WAAW,GAAG,iBAAiB;IAC5C,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,KAAK;IAC3D,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC5B,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE;IACzD,YAAY,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;IAC7D,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,EAAE,GAAG,GAAG;IAClB,IAAI,MAAM,KAAK,GAAG,EAAE;IACpB,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe;IAC5C,IAAI,MAAM,QAAQ,GAAG,EAAE;IACvB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;IACzB,SAAS,MAAM,CAAC,OAAO;IACvB,SAAS,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC;IACnF,SAAS,OAAO,CAAC,CAAC,OAAO,KAAK;IAC9B,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,IAAI;IACZ,YAAY,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;IACtD,YAAY,MAAM,cAAc,GAAG,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,eAAe;IACtF,YAAY,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC;IAC7D,YAAY,IAAI,UAAU,EAAE;IAC5B,gBAAgB,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC;IAClD,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC;IACrE,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;IACzB,SAAS,MAAM,CAAC,UAAU;IAC1B,SAAS,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IACjC,SAAS,OAAO,CAAC,CAAC,OAAO,KAAK;IAC9B,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,KAAK;IACrC,YAAY,OAAO,KAAK,WAAW,CAAC,KAAK;IACzC,YAAY,OAAO,KAAK,OAAO,CAAC,UAAU;IAC1C,YAAY,OAAO,KAAK,WAAW,CAAC,UAAU,EAAE;IAChD,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,EAAE,YAAY,UAAU,EAAE;IACtC,YAAY,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;IACnD,YAAY,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;IACxC,QAAQ;IACR,aAAa;IACb,YAAY,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;IAClC,YAAY,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;IACvC,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;IACzB,SAAS,MAAM,CAAC,UAAU;IAC1B,SAAS,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAC3C,SAAS,OAAO,CAAC,CAAC,OAAO,KAAK;IAC9B,QAAQ,IAAI;IACZ,YAAY,IAAI,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,WAAW,CAAC,KAAK,EAAE;IAC5E,gBAAgB,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;IACrD,gBAAgB,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC;IAC3C,YAAY;IACZ,iBAAiB,IAAI,OAAO,KAAK,OAAO,CAAC,UAAU,EAAE;IACrD,gBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9F,YAAY;IACZ,iBAAiB,IAAI,OAAO,KAAK,WAAW,CAAC,UAAU,EAAE;IACzD,gBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtG,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE;IAClE,oBAAoB,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE;IAClE,wBAAwB,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC;IAC9D,oBAAoB;IACpB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,MAAM,SAAS,GAAG,EAAE,YAAY,UAAU;IAC9D,oBAAoB,IAAI,SAAS,EAAE;IACnC,wBAAwB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;IAC/D,wBAAwB,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5F,wBAAwB,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACvE,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAC1D,wBAAwB,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7E,wBAAwB,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS;IACrD,wBAAwB,IAAI,OAAO,OAAO,KAAK,QAAQ;IACvD,4BAA4B,OAAO,OAAO,KAAK,UAAU,EAAE;IAC3D,4BAA4B,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACvE,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACzE,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS;IACzB,SAAS,MAAM,CAAC,OAAO;IACvB,SAAS,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAC3C,SAAS,OAAO,CAAC,CAAC,OAAO,KAAK;IAC9B,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,QAAQ,IAAI;IACZ,YAAY,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;IACnC,gBAAgB,eAAe,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,YAAY,CAAC;IACb,YAAY,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;IACxC,gBAAgB,KAAK,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;IACjD,YAAY;IACZ,YAAY,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClE,YAAY,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC;IACnD,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC;IACnE,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,SAAS,KAAK;IACtC,IAAI,IAAI,CAAC,SAAS;IAClB,QAAQ;IACR,IAAI,OAAO,SAAS,CAAC,UAAU,EAAE;IACjC,QAAQ,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;IACnD,IAAI;IACJ,CAAC;;ICpQM,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACjD,SAAS,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE;IAClD,IAAI,IAAI,CAAC,SAAS,EAAE;IACpB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC;IACjF,QAAQ;IACR,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ,IAAI,OAAO;IACX,QAAQ,IAAI,EAAE,aAAa;IAC3B,QAAQ,KAAK,EAAE;IACf,YAAY,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACrE,SAAS;IACT,QAAQ,aAAa,EAAE,SAAS;IAChC,QAAQ,SAAS,EAAE,IAAI;IACvB,KAAK;IACL;;ICfA,MAAM,MAAM,GAAG,oBAAoB;IACnC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;IACjC,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE;IAC3B,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,IAAI;IACJ,SAAS;IACT,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM;AACtC,UAAC,gBAAgB,GAAG,CAAC,OAAO,KAAK;IAC7C,IAAI,IAAI,CAAC,kBAAkB,EAAE;IAC7B,QAAQ;IACR,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;IACO,MAAM,oBAAoB,GAAG,CAAC,MAAM,KAAK;IAChD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,yBAAyB;IACvC,QAAQ;IACR,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI;IAC1C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM;IAC1E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,iFAAiF,CAAC,CAAC;IAC7G,CAAC;AACW,UAAC,4BAA4B,GAAG,CAAC,MAAM,KAAK;IACxD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iCAAiC;IAC/C,QAAQ;IACR,IAAI,KAAK,CAAC,iCAAiC,GAAG,IAAI;IAClD,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM;IAC1E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,uEAAuE,CAAC,CAAC;IACnG;AACY,UAAC,uBAAuB,GAAG,CAAC,MAAM,KAAK;IACnD,IAAI,IAAI,CAAC,kBAAkB,EAAE;IAC7B,QAAQ;IACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,gCAAgC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACrF;IACO,MAAM,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK;IACpD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,wBAAwB;IACtC,QAAQ;IACR,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI;IACzC,IAAI,MAAM,MAAM,GAAG;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACrB,UAAU,KAAK,CAAC;IAChB,cAAc;IACd,cAAc,iDAAiD;IAC/D,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM;IAC1E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,gDAAgD,CAAC,CAAC;IAC5E,CAAC;IACM,MAAM,0BAA0B,GAAG,CAAC,KAAK,KAAK;IACrD,IAAI,IAAI,CAAC,KAAK;IACd,QAAQ;IACR,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,0BAA0B;IACxC,QAAQ;IACR,IAAI,KAAK,CAAC,0BAA0B,GAAG,IAAI;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,oHAAoH,CAAC,CAAC;IACxJ,CAAC;IACM,MAAM,oBAAoB,GAAG,MAAM;IAC1C,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,yBAAyB;IACvC,QAAQ;IACR,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI;IAC1C,IAAI,IAAI,CAAC,MAAM,EAAE,mEAAmE,CAAC;IACrF,CAAC;AACW,UAAC,4BAA4B,GAAG,MAAM;IAClD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iCAAiC;IAC/C,QAAQ;IACR,IAAI,KAAK,CAAC,iCAAiC,GAAG,IAAI;IAClD,IAAI,IAAI,CAAC,MAAM,EAAE,uDAAuD,CAAC;IACzE;AACY,UAAC,iBAAiB,GAAG,CAAC,MAAM,KAAK;IAC7C,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;IACO,MAAM,sBAAsB,GAAG,MAAM;IAC5C,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK;IAC3C,IAAI,KAAK,CAAC,iCAAiC,GAAG,KAAK;IACnD,IAAI,KAAK,CAAC,wBAAwB,GAAG,KAAK;IAC1C,IAAI,KAAK,CAAC,0BAA0B,GAAG,KAAK;IAC5C,IAAI,KAAK,CAAC,yBAAyB,GAAG,KAAK;IAC3C,IAAI,KAAK,CAAC,iCAAiC,GAAG,KAAK;IACnD,CAAC;;ICjFD,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;IACpC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;IAC7B,QAAQ;IACR,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjD,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa;IACpD,YAAY,IAAI,CAAC,QAAQ;IACzB,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACtC,YAAY,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC1C,gBAAgB,IAAI;IACpB,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC/D,wBAAwB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;IAC/E,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI;IAChB,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;IAC7C,gBAAgB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;IACnE,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC3D,oBAAoB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;IACnE,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,MAAM,GAAG,IAAI;IAClC,YAAY;IACZ,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI;IAC9B,QAAQ;IACR,IAAI;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;IACpC,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;IAC7B,QAAQ;IACR,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjD,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa;IACpD,YAAY,CAAC,IAAI,CAAC,QAAQ;IAC1B,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IACtC,YAAY,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;IAC1C,gBAAgB,IAAI;IACpB,oBAAoB,IAAI,CAAC,MAAM,EAAE;IACjC,gBAAgB;IAChB,gBAAgB,OAAO,KAAK,EAAE;IAC9B,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC/D,wBAAwB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC;IACxE,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,IAAI;IAChB,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;IAC7C,gBAAgB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;IACnE,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC3D,oBAAoB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;IAC5D,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,MAAM,GAAG,IAAI;IAClC,YAAY;IACZ,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI;IAC9B,QAAQ;IACR,IAAI;IACJ,CAAC;IACD,SAAS,UAAU,GAAG;IACtB,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;IACvC,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO;IACtC,IAAI,IAAI,CAAC,YAAY;IACrB,QAAQ;IACR,IAAI,KAAK,CAAC,WAAW,GAAG,YAAY;IACpC,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,eAAe,EAAE;IACpD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC/E,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IACnI,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE;IAEnC,aAAa;IACb,YAAY,IAAI,MAAM,GAAG,KAAK,CAAC,aAAa;IAC5C,YAAY,IAAI,OAAO,GAAG,CAAC;IAC3B,YAAY,IAAI,MAAM;IACtB,gBAAgB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IACrD,gBAAgB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC1C,gBAAgB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;IAC/E,YAAY;IACZ,YAAY,OAAO,MAAM,EAAE;IAC3B,gBAAgB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW;IAC/C,gBAAgB,IAAI,MAAM,CAAC,UAAU,EAAE;IACvC,oBAAoB,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;IACzD,oBAAoB,OAAO,EAAE;IAC7B,gBAAgB;IAChB,gBAAgB,MAAM,GAAG,IAAI;IAC7B,YAAY;IACZ,YAAY,0BAA0B,CAAC,OAAO,CAAC;IAC/C,QAAQ;IACR,QAAQ,KAAK,CAAC,WAAW,GAAG,KAAK;IACjC,QAAQ,KAAK,CAAC,eAAe,GAAG,KAAK;IACrC,QAAQ,KAAK,CAAC,aAAa,GAAG,IAAI;IAClC,IAAI;IACJ,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;IAClC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;IACxC,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI;IAC5B,IAAI;IACJ;IACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;IAChB,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,SAAS,EAAE;IACzD,QAAQ,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa;IACnD,QAAQ,IAAI,eAAe,EAAE;IAC7B,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK;IAC3C,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;IAC9D,YAAY;IACZ,QAAQ;IACR,QAAQ,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC,MAAM;IACrC,IAAI,OAAO,cAAc,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;IAClD,QAAQ,cAAc,GAAG,cAAc,CAAC,MAAM;IAC9C,IAAI;IACJ,IAAI,IAAI,CAAC,cAAc,EAAE;IACzB,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG;IACxC,IAAI,IAAI,CAAC,SAAS;IAClB,QAAQ;IACR,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EAAE;IACnD,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IACnF,gBAAgB,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,IAAI,CAAC;IAC9E,YAAY;IACZ,YAAY,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5C,QAAQ;IACR,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,MAAM,EAAE;IACrD,QAAQ,aAAa,CAAC,KAAK,CAAC;IAC5B,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACrE,QAAQ;IACR,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,OAAO,EAAE;IACtD,QAAQ,MAAM,KAAK,GAAG,QAAQ,EAAE;IAChC,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE;IACnC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IACnF,gBAAgB,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,KAAK,CAAC,IAAI,CAAC;IACvF,YAAY;IACZ,YAAY,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IACnC,gBAAgB,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAChD,YAAY;IACZ,YAAY,gBAAgB,CAAC,KAAK,CAAC;IACnC,YAAY,gBAAgB,CAAC,KAAK,CAAC;IACnC,QAAQ;IACR,aAAa;IACb,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IACnF,gBAAgB,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,IAAI,CAAC;IACzE,YAAY;IACZ,YAAY,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IACnC,gBAAgB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;IACrD,YAAY;IACZ,YAAY,gBAAgB,CAAC,KAAK,CAAC;IACnC,YAAY,gBAAgB,CAAC,KAAK,CAAC;IACnC,QAAQ;IACR,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,QAAQ,EAAE;IACvD,QAAQ,iBAAiB,CAAC,KAAK,CAAC;IAChC,QAAQ,cAAc,CAAC,KAAgB,CAAC;IACxC,QAAQ;IACR,IAAI;IACJ,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IAC7B;IACA,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK;IACrD,IAAI,IAAI,CAAC,KAAK;IACd,QAAQ;IACR,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,SAAS,EAAE;IACnD,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAClD,QAAQ;IACR,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,MAAM,EAAE;IACrD,QAAQ,aAAa,CAAC,KAAK,CAAC;IAC5B,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/B,YAAY,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACrE,QAAQ;IACR,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,QAAQ,gBAAgB,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,QAAQ,EAAE;IACvD,QAAQ,iBAAiB,CAAC,KAAK,CAAC;IAChC,QAAQ,cAAc,CAAC,KAAsB,CAAC;IAC9C,QAAQ;IACR,IAAI;IACJ,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC;IAClD,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC;IACpD,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK;IAC7C,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE;IACnB,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;IAClC,YAAY,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IACvD,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;IAC/B,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,cAAc,CAAC,KAAgB,CAAC;IAC5C,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO;IACjC,QAAQ;IACR,IAAI;IACJ,CAAC;;IC7ND,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;IAClD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,GAAG,CAAC;IACjB,IAAI,IAAI,WAAW;IACnB,IAAI,IAAI,YAAY,GAAG,IAAI;IAC3B,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;IACjC,IAAI,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK;IAC5C,IAAI,IAAI,QAAQ,GAAG,CAAC;IACpB,IAAI,OAAO,QAAQ,EAAE;IACrB,QAAQ,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;IAC7E,QAAQ,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;IACtC,QAAQ,QAAQ,GAAG,QAAQ,CAAC,OAAO;IACnC,QAAQ,QAAQ,EAAE;IAClB,IAAI;IACJ,IAAI,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;IACpC,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;IACvC,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,YAAY,KAAK,EAAE;IACnB,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IACvD,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IACjD,QAAQ,IAAI,QAAQ;IACpB,QAAQ,MAAM,QAAQ,GAAG,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;IAC3E,QAAQ,IAAI,QAAQ,IAAI,YAAY,EAAE;IACtC,YAAY,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI;IACjD,YAAY,MAAM,eAAe,GAAG,OAAO,YAAY,CAAC,IAAI,KAAK,UAAU;IAC3E,gBAAgB,WAAW,EAAE,WAAW,KAAK,uBAAuB;IACpE,YAAY,MAAM,qBAAqB,GAAG,eAAe;IACzD,gBAAgB,YAAY,CAAC,UAAU,IAAI,IAAI;IAC/C,gBAAgB,YAAY,CAAC,KAAK,IAAI,IAAI;IAC1C,YAAY,QAAQ,GAAG;IACvB,gBAAgB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvC,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpC,gBAAgB,GAAG,EAAE,YAAY,CAAC,GAAG;IACrC,gBAAgB,MAAM,EAAE,QAAQ;IAChC,gBAAgB,SAAS,EAAE,YAAY;IACvC,gBAAgB,SAAS,EAAE,WAAW,CAAC,MAAM;IAC7C,gBAAgB,KAAK,EAAE,YAAY,CAAC,KAAK;IACzC,gBAAgB,UAAU,EAAE,qBAAqB,GAAG,YAAY,CAAC,UAAU,GAAG,SAAS;IACvF,gBAAgB,GAAG,EAAE,OAAO,CAAC,GAAG;IAChC,gBAAgB,KAAK;IACrB,aAAa;IACb,YAAY,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IACnC,QAAQ;IACR,aAAa;IACb,YAAY,QAAQ,GAAG;IACvB,gBAAgB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClC,gBAAgB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpC,gBAAgB,GAAG,EAAE,IAAI;IACzB,gBAAgB,MAAM,EAAE,QAAQ;IAChC,gBAAgB,SAAS,EAAE,IAAI;IAC/B,gBAAgB,SAAS,EAAE,KAAK,CAAC;IACjC,sBAAsB,WAAW,CAAC;IAClC,sBAAsB,WAAW,CAAC,SAAS;IAC3C,gBAAgB,GAAG,EAAE,OAAO,CAAC,GAAG;IAChC,gBAAgB,KAAK;IACrB,aAAa;IACb,YAAY,IAAI,YAAY,EAAE;IAC9B,gBAAgB,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ;IAC7D,gBAAgB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;IAClD,gBAAgB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;IACvC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,YAAY,EAAE;IAC1B,YAAY,QAAQ,CAAC,KAAK,GAAG,QAAQ;IACrC,YAAY,YAAY,GAAG,KAAK;IAChC,QAAQ;IACR,aAAa,IAAI,WAAW,EAAE;IAC9B,YAAY,WAAW,CAAC,OAAO,GAAG,QAAQ;IAC1C,QAAQ;IACR,QAAQ,WAAW,GAAG,QAAQ;IAC9B,QAAQ,KAAK,EAAE;IACf,IAAI;IACJ,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;IACnC,QAAQ,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ;IAC9C,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,IAAI,CAAC,CAAC;IACN,CAAC;;IC9EM,MAAM,kBAAkB,GAAG,MAAM;IACxC,IAAI,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,EAAE;IACpE,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,wBAAwB,IAAI,UAAU;IACjE,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,2BAA2B,IAAI,OAAO;IACpE,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,uBAAuB,KAAK,MAAM;IACzD,IAAI,MAAM,OAAO,GAAG,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,GAAG,UAAU,GAAG,UAAU;IAC5F,IAAI,MAAM,UAAU,GAAG,aAAa,KAAK,aAAa,IAAI,aAAa,KAAK;IAC5E,UAAU;IACV,UAAU,OAAO;IACjB,IAAI,OAAO;IACX,QAAQ,OAAO;IACf,QAAQ,UAAU;IAClB,QAAQ,MAAM;IACd,KAAK;IACL,CAAC;IACM,MAAM,4BAA4B,GAAG,CAAC,KAAK,KAAK;IACvD,IAAI,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI;IAC/B,IAAI,OAAO,OAAO,EAAE;IACpB,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IACnC,QAAQ,IAAI,KAAK;IACjB,YAAY,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,EAAE;IACzF,YAAY,OAAO,OAAO;IAC1B,QAAQ;IACR,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;IACjC,QAAQ,MAAM,UAAU,GAAG,IAAI;IAC/B,QAAQ,IAAI,IAAI;IAChB,YAAY,OAAO,IAAI,KAAK,UAAU;IACtC,YAAY,UAAU,EAAE,WAAW,KAAK,2BAA2B,EAAE;IACrE,YAAY,OAAO,OAAO;IAC1B,QAAQ;IACR,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;IACxC,IAAI;IACJ,IAAI,OAAO,IAAI;IACf,CAAC;IACM,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK;IACjD,IAAI,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI;IAC9B,IAAI,OAAO,OAAO,EAAE;IACpB,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC;IAClC,YAAY,OAAO,CAAC,YAAY,CAAC,8BAA8B,CAAC,EAAE;IAClE,YAAY,OAAO,OAAO;IAC1B,QAAQ;IACR,QAAQ,OAAO,GAAG,OAAO,CAAC,UAAU;IACpC,IAAI;IACJ,IAAI,OAAO,IAAI;IACf,CAAC;IACM,MAAM,cAAc,GAAG,CAAC,KAAK,KAAK;IACzC,IAAI,IAAI,CAAC,KAAK;IACd,QAAQ,OAAO,IAAI;IACnB,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IAC/C,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG;IAC5B,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,8BAA8B,CAAC;IAC3D,YAAY,OAAO,EAAE;IACrB,IAAI;IACJ,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI;IACnC,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;IACnD,YAAY,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG;IAChC,YAAY,IAAI,EAAE,CAAC,YAAY,CAAC,8BAA8B,CAAC;IAC/D,gBAAgB,OAAO,EAAE;IACzB,QAAQ;IACR,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI;IACpD,IAAI;IACJ,IAAI,OAAO,IAAI;IACf,CAAC;IACM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK;IAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY;IAChC,QAAQ,OAAO,MAAM;IACrB,IAAI,IAAI,MAAM,KAAK,YAAY;IAC/B,QAAQ,OAAO,YAAY,CAAC,WAAW;IACvC,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;IACrC,QAAQ,OAAO,YAAY,CAAC,WAAW;IACvC,IAAI,OAAO,MAAM;IACjB,CAAC;IACM,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,KAAK;IACnF,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW;IACtC,QAAQ;IACR,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB,IAAI,EAAE;IACjD,IAAI,KAAK,CAAC,IAAI,CAAC;IACf,QAAQ,aAAa;IACrB,QAAQ,WAAW;IACnB,QAAQ,YAAY;IACpB,QAAQ,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ;IAC7D,cAAc,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,cAAc,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5C,KAAK,CAAC;IACN,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK;IACrC,CAAC;;ICnFD,MAAM,uBAAuB,GAAG,CAAC,KAAK,KAAK;IAC3C,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK;IAC1B,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC;IACvB,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE;IACpB,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI;IACpC,IAAI,IAAI,KAAK,CAAC,gBAAgB;IAC9B,QAAQ,aAAa,CAAC,WAAW,KAAK,uBAAuB,EAAE;IAC/D,QAAQ,KAAK,CAAC,UAAU,GAAG,SAAS;IACpC,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;IAC3B,QAAQ,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO;IAC7C,IAAI;IACJ,IAAI,IAAI,aAAa,CAAC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;IAClD,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;IAC1E,QAAQ,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;IAChE,QAAQ,IAAI,aAAa,CAAC,cAAc,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE;IAChE,YAAY,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;IAC/C,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;IAClD,YAAY,IAAI,QAAQ,EAAE;IAC1B,gBAAgB,QAAQ,CAAC,MAAM,GAAG,KAAK;IACvC,gBAAgB,KAAK,CAAC,KAAK,GAAG,QAAQ;IACtC,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,QAAQ,GAAG;IACrB,QAAQ,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;IAClC,KAAK;IACL,IAAI,IAAI,aAAa,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,EAAE;IACtE,QAAQ,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU;IACnD,QAAQ,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK;IAC/C,IAAI;IACJ,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtC,CAAC;IACD,MAAM,yBAAyB,GAAG,CAAC,KAAK,KAAK;IAC7C,IAAI,IAAI,OAAO,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI;IACvC,IAAI,OAAO,OAAO,EAAE;IACpB,QAAQ,IAAI,OAAO,CAAC,kBAAkB;IACtC,YAAY,OAAO,IAAI;IACvB,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;IACxC,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB,CAAC;IACD,MAAM,6BAA6B,GAAG,CAAC,KAAK,KAAK;IACjD,IAAI,IAAI,OAAO,GAAG,KAAK,EAAE,MAAM,IAAI,IAAI;IACvC,IAAI,OAAO,OAAO,EAAE;IACpB,QAAQ,IAAI,OAAO,CAAC,sBAAsB;IAC1C,YAAY,OAAO,IAAI;IACvB,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI;IACxC,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB,CAAC;IACD,MAAM,mBAAmB,GAAG,CAAC,QAAQ,KAAK;IAC1C,IAAI,IAAI,QAAQ,IAAI,IAAI;IACxB,QAAQ,OAAO,EAAE;IACjB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAC1D,CAAC;IACD,MAAM,mBAAmB,GAAG,CAAC,KAAK,KAAK;IACvC,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE;IACpD,QAAQ,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU;IAClD,QAAQ,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK;IAChD,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe;IACrE,QAAQ,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc;IAClD,QAAQ,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,EAAE;IAC5C,QAAQ,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO;IAC7C,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,WAAW,IAAI,6BAA6B,CAAC,KAAK,CAAC,EAAE;IACxE,QAAQ;IACR,IAAI;IACJ,SAAS,IAAI,KAAK,CAAC,WAAW,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE;IACpE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;IACxB,YAAY,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;IACxC,YAAY,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;IACnD,QAAQ;IACR,IAAI;IACJ,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;IACzB,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,EAAE;IACtD,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa;IAC/C,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC;IAC7F,YAAY,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;IAC5D,gBAAgB,OAAO,CAAC,QAAQ,KAAK,CAAC;IACtC,gBAAgB,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;IAC1E,YAAY,IAAI,MAAM,IAAI,SAAS,EAAE;IACrC,gBAAgB,KAAK,CAAC,GAAG,GAAG,OAAO;IACnC,gBAAgB,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO;IACrD,gBAAgB,IAAI,MAAM;IAC1B,oBAAoB,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI;IAClD,oBAAoB,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;IACzE,oBAAoB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACrE,oBAAoB,uBAAuB,CAAC,MAAM,CAAC;IACnD,gBAAgB;IAChB,gBAAgB,IAAI,SAAS;IAC7B,oBAAoB,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE;IAChE,oBAAoB,KAAK,CAAC,sBAAsB,GAAG,IAAI;IACvD,oBAAoB,KAAK,CAAC,aAAa,GAAGD,kBAAgB,CAAC,OAAO,CAAC;IACnE,oBAAoB,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC;IAChD,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,SAAS;IAC7B,oBAAoB,OAAO,CAAC,YAAY,CAAC,8BAA8B,CAAC,EAAE;IAC1E,oBAAoB,KAAK,CAAC,kBAAkB,GAAG,IAAI;IACnD,gBAAgB;IAChB,gBAAgB,KAAK,CAAC,aAAa,GAAGA,kBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1E,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,MAAM,MAAM,GAAG,kBAAkB,EAAE;IACnD,gBAAgB,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnL,gBAAgB,MAAM,aAAa,GAAG,4BAA4B,CAAC,KAAK,CAAC;IACzE,gBAAgB,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI;IACzF,oBAAoB,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC;IAChE,gBAAgB,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,IAAI,aAAa,IAAI,WAAW,EAAE;IACnF,oBAAoB,4BAA4B,CAAC,MAAM,CAAC;IACxD,oBAAoB,qBAAqB,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;IAClG,oBAAoB,KAAK,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,WAAW,CAAC;IACxG,oBAAoB,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;IAChD,oBAAoB,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;IAC3D,gBAAgB;IAChB,qBAAqB,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE;IACpD,oBAAoB,iBAAiB,CAAC,MAAM,CAAC;IAC7C,oBAAoB,KAAK,CAAC,WAAW,GAAG,KAAK;IAC7C,oBAAoB,KAAK,CAAC,aAAa,GAAG,IAAI;IAC9C,oBAAoB,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;IAChD,oBAAoB,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;IAC3D,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,oBAAoB,CAAC,MAAM,CAAC;IAChD,oBAAoB,KAAK,CAAC,WAAW,GAAG,KAAK;IAC7C,oBAAoB,KAAK,CAAC,eAAe,GAAG,IAAI;IAChD,oBAAoB,KAAK,CAAC,aAAa,GAAG,IAAI;IAC9C,oBAAoB,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;IAChD,oBAAoB,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS;IAC3D,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;IACxC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,sBAAsB,EAAE;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC/D,IAAI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtC,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,IAAI,KAAK;IAC/B,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;IAChC,QAAQ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;IAClD,IAAI,IAAI,OAAO,IAAI,KAAK,UAAU;IAClC,QAAQ,OAAO,IAAI,CAAC,IAAI,IAAI,WAAW;IACvC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC;IACvB,CAAC;;IC/JD,IAAI,cAAc,GAAG,IAAI;IAClB,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK;IACvC,IAAI,cAAc,GAAG,EAAE;IACvB,CAAC;IACM,MAAME,cAAY,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK;IAChD,IAAI,IAAI,cAAc,EAAE;IACxB,QAAQ,OAAO,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC7C,IAAI;IACJ,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC/C,QAAQ,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC;IAC9E,IAAI;IACJ,CAAC;;ICND,MAAM,YAAY,GAAG,CAAC,QAAQ,KAAK;IACnC,IAAI,IAAI,QAAQ,IAAI,IAAI;IACxB,QAAQ,OAAO,SAAS;IACxB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ;IAC3D,CAAC;IACM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK;IACrD,IAAI,cAAc,CAAC,SAAS,CAAC;IAC7B,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,GAAG,EAAE,SAAS;IACtB,QAAQ,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;IACtC,QAAQ,WAAW,EAAE,KAAK;IAC1B,QAAQ,aAAa,EAAE,IAAI;IAC3B,KAAK;IACL,IAAIA,cAAY,CAAC,IAAI,EAAE,SAAS,CAAC;IACjC,CAAC;IACM,MAAM,8BAA8B,GAAG,MAAM;IACpD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB;IAC3C,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ;IACR,IAAI,KAAK,CAAC,mBAAmB,GAAG,EAAE;IAClC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IAC9B,QAAQ,4BAA4B,EAAE;IACtC,QAAQ,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IACrD,IAAI;IACJ,CAAC;IACM,MAAM,+BAA+B,GAAG,MAAM;IACrD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,gBAAgB;IACxD,QAAQ;IACR,IAAI,MAAM,MAAM,GAAG,kBAAkB,EAAE;IACvC,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;IACjC,QAAQ;IACR,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG;IACnE,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;IACpE,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,IAAI;IACrC,QAAQ;IACR,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI;IACjC,IAAI,KAAK,CAAC,eAAe,GAAG,KAAK;IACjC,IAAI,mBAAmB,CAAC,EAAE,CAAC;IAC3B,IAAI,oBAAoB,EAAE;IAC1B,IAAI,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;IACrC,CAAC;IACM,MAAM,oBAAoB,GAAG,MAAM;IAC1C,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,8BAA8B,EAAE;IACpC,IAAI,+BAA+B,EAAE;IACrC,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK;IAClC,CAAC;;IC/CD,IAAI,SAAS,GAAG,EAAE;IAClB,IAAI,mBAAmB,GAAG,KAAK;IAC/B,SAAS,iBAAiB,CAAC,KAAK,EAAE;IAClC,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,YAAY,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;IAClG,IAAI,IAAI;IACR,QAAQ,IAAI,mBAAmB,EAAE;IACjC,YAAY,uBAAuB,CAAC,KAAK,CAAC;IAC1C,QAAQ;IACR,aAAa;IACb,YAAY,mBAAmB,CAAC,KAAK,CAAC;IACtC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC;IACtF,YAAY,IAAI;IAChB,gBAAgB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;IAC9C,gBAAgB,MAAM,GAAG,GAAG,UAAU,EAAE,QAAQ;IAChD,gBAAgB,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC/D,oBAAoB;IACpB,oBAAoB,KAAK,CAAC,eAAe,GAAG,GAAG;IAC/C,gBAAgB;IAChB,gBAAgB,IAAI,WAAW,GAAG,KAAK;IACvC,gBAAgB,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,WAAW,EAAE;IAC9D,oBAAoB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK;IACzD,oBAAoB,IAAI,WAAW,EAAE,QAAQ,EAAE;IAC/C,wBAAwB;IACxB,wBAAwB,KAAK,CAAC,eAAe,GAAG,WAAW,CAAC,QAAQ;IACpE,oBAAoB;IACpB,oBAAoB,WAAW,GAAG,WAAW,CAAC,MAAM;IACpD,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,EAAE,EAAE,EAAE;IACzB,QAAQ;IACR,QAAQ,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM;IACxC,QAAQ,IAAI,aAAa,GAAG,KAAK;IACjC,QAAQ,OAAO,aAAa,EAAE;IAC9B,YAAY,IAAI,aAAa,CAAC,IAAI;IAClC,gBAAgB,aAAa,CAAC,IAAI,CAAC,WAAW;IAC9C,oBAAoB,uBAAuB,EAAE;IAC7C,gBAAgB,aAAa,GAAG,IAAI;IACpC,gBAAgB;IAChB,YAAY;IACZ,YAAY,aAAa,GAAG,aAAa,CAAC,MAAM;IAChD,QAAQ;IACR,QAAQ,IAAI,aAAa,IAAI,aAAa,EAAE;IAC5C,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC;IAC3F,YAAY;IACZ,YAAY,aAAa,CAAC,UAAU,GAAG,KAAK;IAC5C,YAAY,KAAK,CAAC,KAAK,GAAG,IAAI;IAC9B,YAAY,OAAO,aAAa;IAChC,QAAQ;IACR,aAAa;IACb,YAAY,OAAO,CAAC,KAAK,CAAC,mGAAmG,EAAE,KAAK,CAAC;IACrI,YAAY,KAAK,CAAC,cAAc,GAAG,IAAI;IACvC,YAAY,OAAO,IAAI;IACvB,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;IACrB,QAAQ,OAAO,KAAK,CAAC,KAAK;IAC1B,IAAI;IACJ,IAAI,IAAI,SAAS,GAAG,KAAK;IACzB,IAAI,OAAO,SAAS,EAAE;IACtB,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,GAAG,EAAE;IAChD,YAAY,KAAK,CAAC,aAAa,GAAGF,kBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;IAC7E,QAAQ;IACR,QAAQ,IAAI,SAAS,CAAC,OAAO,EAAE;IAC/B,YAAY,OAAO,SAAS,CAAC,OAAO;IACpC,QAAQ;IACR,QAAQ,SAAS,GAAG,SAAS,CAAC,MAAM;IACpC,IAAI;IACJ,IAAI,OAAO,IAAI;IACf;IACA,MAAM,QAAQ,GAAG,CAAC,QAAQ,KAAK;IAC/B,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,WAAW,GAAG,KAAK;IAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE;IAC3E,QAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3D,YAAY,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE;IAC9C,YAAY,IAAI,CAAC,QAAQ;IACzB,gBAAgB;IAChB,YAAY,KAAK,CAAC,OAAO,GAAG,QAAQ;IACpC,YAAY,KAAK,CAAC,cAAc,GAAG,QAAQ;IAC3C,YAAY,KAAK,CAAC,SAAS,GAAG,EAAE;IAChC,YAAY,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE;IACpD,gBAAgB,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW;IACxD,gBAAgB,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa;IAC5D,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE;IAClC,YAAY,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC;IAC1E,QAAQ;IACR,QAAQ,WAAW,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC;IAClD,IAAI;IACJ,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,EAAE;IAChD,QAAQ,UAAU,EAAE;IACpB,QAAQ,oBAAoB,EAAE;IAC9B,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACrB,IAAI;IACJ,SAAS;IACT,QAAQ,mBAAmB,GAAG,KAAK;IACnC,IAAI;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,EAAE,KAAK;IAChE,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;IACvB,QAAQ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,IAAI;IACJ,SAAS;IACT,QAAQ,KAAK,CAAC,cAAc,GAAG,IAAI;IACnC,QAAQ,KAAK,CAAC,OAAO,GAAG,IAAI;IAC5B,QAAQ,KAAK,CAAC,SAAS,GAAG,EAAE;IAC5B,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;IAC5C,YAAY,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;IAChD,YAAY,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;IACpD,QAAQ;IACR,IAAI;IACJ,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC;IACvB,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE;IACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE;IAC9B,QAAQ,mBAAmB,GAAG,IAAI;IAClC,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE;IAChD,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM;IACzC,gBAAgB,QAAQ,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvE,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,aAAa;IACb,YAAY,GAAG,CAAC,QAAQ,CAAC;IACzB,QAAQ;IACR,IAAI;IACJ,CAAC;IACD,eAAe,CAAC,YAAY,CAAC;;ACxIxB,UAAC,MAAM,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK;IACvC,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,cAAc,CAAC,SAAS,CAAC;IAC7B,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,GAAG,EAAE,SAAS;IACtB,QAAQ,KAAK,EAAE;IACf,YAAY,QAAQ,EAAE,CAAC,OAAO,CAAC;IAC/B,SAAS;IACT,QAAQ,SAAS,EAAE,KAAK,CAAC,WAAW;IACpC,QAAQ,WAAW,EAAE,KAAK;IAC1B,QAAQ,aAAa,EAAE,IAAI;IAC3B,KAAK;IACL,IAAI,YAAY,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI;IACf;IACA,MAAM,aAAa,GAAG,sBAAsB;IAC5C,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK;IACnC,IAAI,IAAI,IAAI,GAAG,IAAI;IACnB,IAAI,OAAO,IAAI;IACf,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;IACxD,YAAY,IAAI,CAAC,QAAQ,KAAK,CAAC;IAC/B,aAAa,IAAI,CAAC,QAAQ,KAAK,CAAC;IAChC,gBAAgB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;IACxD,QAAQ,IAAI,GAAG,IAAI,CAAC,WAAW;IAC/B,IAAI;IACJ,IAAI,OAAO,IAAI;IACf,CAAC;AACI,UAAC,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK;IACxC,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,KAAK,CAAC,aAAa,GAAG,SAAS;IACnC,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,GAAG,EAAE,SAAS;IACtB,QAAQ,KAAK,EAAE;IACf,YAAY,QAAQ,EAAE,CAAC,OAAO,CAAC;IAC/B,SAAS;IACT,QAAQ,SAAS,EAAE,KAAK,CAAC,WAAW;IACpC,QAAQ,WAAW,EAAE,IAAI;IACzB,QAAQ,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;IAC7D,KAAK;IACL,IAAI,YAAY,CAAC,IAAI,CAAC;IACtB,IAAI,OAAO,IAAI;IACf;AACK,UAAC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,UAAU,EAAE,WAAW,GAAG,EAAE,KAAK;IACnE,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC;IACnD,IAAI,KAAK,CAAC,aAAa,GAAG,SAAS;IACnC,IAAI,IAAI,CAAC,SAAS,EAAE;IACpB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxE,QAAQ;IACR,QAAQ,OAAO,SAAS;IACxB,IAAI;IACJ,IAAI,sBAAsB,EAAE;IAC5B,IAAI,KAAK,CAAC,eAAe,GAAG,kBAAkB,EAAE;IAChD,IAAI,KAAK,CAAC,mBAAmB,GAAG,EAAE;IAClC,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK;IAClC,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK;IAC7B,IAAI,KAAK,CAAC,eAAe,GAAG,KAAK;IACjC,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE;IAC3B,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC/E,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,+DAA+D,EAAE,IAAI,CAAC,CAAC,CAAC;IACjG,QAAQ;IACR,QAAQ,OAAO,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;IAC7C,IAAI;IACJ,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,OAAO;IACzD,IAAI,MAAM,YAAY,GAAG,UAAU;IACnC,QAAQ,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC;IAC7C,QAAQ,SAAS,CAAC,aAAa,EAAE;IACjC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC3E,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,kCAAkC,EAAE,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACpH,IAAI;IACJ,IAAI,IAAI,YAAY,EAAE;IACtB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC/E,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,8CAA8C,EAAE,IAAI,CAAC,CAAC,CAAC;IAChF,QAAQ;IACR,QAAQ,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC;IAChD,QAAQ,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;IAC9C,IAAI;IACJ,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IAC3E,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI;IACJ,IAAI,OAAO,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;IACzC;AACK,UAAC,UAAU,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK;IAClD,IAAI,IAAI;IACR,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC;IAC/B,IAAI;IACJ,IAAI,OAAO,KAAK,EAAE;IAClB,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACnD,YAAY,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;IACpD,QAAQ;IACR,QAAQ,IAAI,OAAO;IACnB,YAAY,OAAO,CAAC,KAAK,CAAC;IAC1B,QAAQ,OAAO,IAAI;IACnB,IAAI;IACJ;;ICpGA,IAAI,UAAU,GAAG,KAAK;IACtB,IAAI,cAAc,GAAG,EAAE;IAChB,SAAS,YAAY,CAAC,QAAQ,EAAE;IACvC,IAAI,MAAM,WAAW,GAAG,UAAU;IAClC,IAAI,UAAU,GAAG,IAAI;IACrB,IAAI,IAAI;IACR,QAAQ,QAAQ,EAAE;IAClB,IAAI;IACJ,YAAY;IACZ,QAAQ,UAAU,GAAG,WAAW;IAChC,QAAQ,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;IACtD,YAAY,YAAY,EAAE;IAC1B,QAAQ;IACR,IAAI;IACJ;IACO,SAAS,WAAW,CAAC,MAAM,EAAE;IACpC,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,QAAQ,YAAY,EAAE;IACtB,IAAI;IACJ;IACO,SAAS,YAAY,GAAG;IAC/B,IAAI,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;IACnC,QAAQ;IACR,IAAI,MAAM,OAAO,GAAG,cAAc;IAClC,IAAI,cAAc,GAAG,EAAE;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;IACzC;;IC1BsB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK;IAkB/C,MAAM,mBAAmB,GAAG,CAAC,QAAQ,GAAG,QAAQ,KAAK;IACrD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,gDAAgD,CAAC;IACrF,YAAY,qEAAqE,CAAC;IAClF,IAAI;IACJ,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACxC,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI;IACJ,CAAC;;AC5BI,UAAC,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACnC,IAAI,OAAO;IACX,IAAI,WAAW;IACf,IAAI,WAAW;IACf,IAAI,eAAe;IACnB,IAAI,cAAc;IAClB,IAAI,SAAS;IACb,IAAI,YAAY;IAChB,IAAI,UAAU;IACd,IAAI,QAAQ;IACZ,IAAI,MAAM;IACV,IAAI,gBAAgB;IACpB,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD,IAAI,KAAK,KAAK,IAAI;IAClB,KAAK,SAAS,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC;IAC/C,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS;IAC3F,SAAS,mBAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;IAC7D,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;IACxD,QAAQ,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;IACtC,SAAS,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACjF,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;IAC1D,QAAQ,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;IACrC,SAAS,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAChF,QAAQ,YAAY;IACpB,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IAChD,SAAS,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC7E,IAAI,IAAI,KAAK,GAAG,YAAY;IAC5B,IAAI,IAAI,SAAS,EAAE;IACnB,QAAQ,KAAK;IACb,YAAY,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI;IAC9C,kBAAkB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;IAClD,kBAAkB,SAAS;IAC3B,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG,EAAE;IACnB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACrD,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,YAAY;IACZ,QAAQ,IAAI,GAAG,KAAK,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC;IACnD,YAAY;IACZ,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,MAAM,KAAK,GAAG;IAC1B,iBAAiB,GAAG,CAAC,CAAC,IAAI,MAAM,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IAC5E,iBAAiB,MAAM,CAAC,OAAO,CAAC;IAChC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;IAChC,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;IACjC,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;IACvD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE;IACpC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;IACpC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;IACvC,IAAI;IACJ,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;IAC7B,IAAI;IACJ,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;IACzC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;IACjD,IAAI;IACJ,IAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IAC1B;IACO,SAAS,kBAAkB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;IACzD,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE;IACvC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;IACrE,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;IAClF,YAAY,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;IACtD,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;IAChF,YAAY,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;IACpD,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,MAAM;IACjB;;ICpEA,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;IAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;IAC5B,QAAQ,OAAO,IAAI;IACnB,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;IACzC,QAAQ,OAAO,IAAI;IACnB,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;AACI,UAAC,QAAQ,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,kBAAkB,EAAE,KAAK;IACpE,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO;IACf,YAAY,EAAE,CAAC,QAAQ,CAAC,YAAY;IACpC,kBAAkB,YAAY;IAC9B,kBAAkB,YAAY;IAC9B,YAAY,MAAM,EAAE,CAAC;IACrB,SAAS;IACT,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,OAAO;IACf,YAAY,EAAE,CAAC,QAAQ,CAAC,YAAY;IACpC,kBAAkB,YAAY;IAC9B,kBAAkB,YAAY;IAC9B,YAAY,MAAM,EAAE,CAAC;IACrB,SAAS;IACT,IAAI;IACJ,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;IACnF,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC;IACjE;AACK,UAAC,UAAU,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,GAAG,kBAAkB,EAAE,KAAK;IAC5F,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,IAAI;IACJ,IAAIG,mBAAgB,EAAE;IACtB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,YAAY;IACvC,QAAQ,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY;IACjF,QAAQ,KAAK,EAAE,EAAE;IACjB,KAAK;IACL,IAAI,IAAI,OAAO,EAAE,KAAK,EAAE;IACxB,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;IAC1C,YAAY,IAAI;IAChB,gBAAgB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;IACxD,YAAY;IACZ,YAAY,OAAO,KAAK,EAAE;IAC1B,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC3D,oBAAoB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC7D,gBAAgB;IAChB,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,IAAI;IACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,KAAK;IAC7D,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;IAClC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC;IACrE,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B,QAAQ,MAAM,YAAY,GAAG,QAAQ,EAAE;IACvC,QAAQ,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW;IACnD,YAAY,YAAY,CAAC,OAAO;IAChC,QAAQ,IAAI,CAAC,UAAU;IACvB,YAAY;IACZ,QAAQ,MAAM,OAAO,GAAG;IACxB,YAAY,GAAG,EAAE,UAAU,CAAC,GAAG;IAC/B,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;IACnC,YAAY,SAAS,EAAE,YAAY,CAAC,WAAW,IAAI,IAAI;IACvD,SAAS;IACT,QAAQ,WAAW,CAAC,MAAMD,cAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjC;AACK,UAAC,SAAS,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK;IACtC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ;IACR,IAAI;IACJ,IAAIC,mBAAgB,EAAE;IACtB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAChE,IAAI;IACJ,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;IAC/E,IAAI;IACJ,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3D,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,aAAa;IACxC,QAAQ,IAAI;IACZ,QAAQ,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI;IAC5C,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM;IAC/B,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB;AACK,UAAC,MAAM,GAAG,CAAC,YAAY,KAAK;IACjC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE;IACxC,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE;IACxC,IAAI;IACJ,IAAIA,mBAAgB,EAAE;IACtB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,UAAU;IACrC,QAAQ,KAAK,EAAE;IACf,cAAc,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE;IACvC,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,IAAI,OAAO,IAAI,CAAC,KAAK;IACrB;AACK,UAAC,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK;IACnC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,OAAO,OAAO,EAAE;IACxB,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,OAAO,OAAO,EAAE;IACxB,IAAI;IACJ,IAAIA,mBAAgB,EAAE;IACtB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;IAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;IAC9D,IAAI;IACJ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAChE,IAAI;IACJ,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,IAAI,KAAK;IACb,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;IACzD,QAAQ,KAAK,GAAG,OAAO,CAAC,KAAK;IAC7B,IAAI;IACJ,SAAS;IACT,QAAQ,IAAI;IACZ,YAAY,KAAK,GAAG,OAAO,EAAE;IAC7B,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACvD,gBAAgB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC;IACrE,YAAY;IACZ,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,WAAW;IACtC,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,IAAI,OAAO,KAAK;IAChB;AACK,UAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK;IACxC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;IAC5E,IAAI;IACJ,IAAI,OAAO,OAAO,CAAC,MAAM,QAAQ,EAAE,IAAI,CAAC;IACxC;AACK,UAAC,aAAa,GAAG,CAAC,SAAS,GAAG,YAAY,CAAC,cAAc,EAAE,YAAY,GAAG,EAAE,KAAK;IACtF,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK;IAC/C,QAAQ,OAAO,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClI,IAAI,CAAC;IACL,IAAI,QAAQ,CAAC,UAAU,GAAG,SAAS;IACnC,IAAI,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,SAAS,KAAK;IAC9C,QAAQ,MAAM,KAAK,GAAG,QAAQ,EAAE;IAChC,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACrC,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW;IACjD,YAAY,OAAO,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK;IACzD,kBAAkB,WAAW,CAAC,KAAK;IACnC,kBAAkB,YAAY;IAC9B,QAAQ;IACR,QAAQA,mBAAgB,EAAE;IAC1B,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ;IAClC,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;IACjF,gBAAgB,OAAO,KAAK,CAAC,aAAa;IAC1C,YAAY;IACZ,YAAY,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI;IACxC,YAAY,IAAI,SAAS,EAAE,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,EAAE;IACrF,gBAAgB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK;IACxC,YAAY;IACZ,YAAY,KAAK,GAAG,KAAK,CAAC,MAAM;IAChC,QAAQ;IACR,QAAQ,OAAO,YAAY;IAC3B,IAAI,CAAC;IACL,IAAI,OAAO;IACX,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,UAAU;IAClB,KAAK;IACL;AACK,UAAC,QAAQ,GAAG,MAAM;IACvB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;IACrC,QAAQ,OAAO,EAAE;IACjB,IAAI,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpE,IAAI,MAAM,KAAK,GAAG,EAAE;IACpB,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE;IACvD,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;IAC1B,IAAI;IACJ,IAAI,OAAO,KAAK;IAChB;AACK,UAAC,OAAO,GAAG,MAAM;IACtB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW;IACrC,QAAQ,OAAO,EAAE;IACjB,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IAChE,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,CAAC;IAC3D,QAAQ,OAAO,MAAM,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC;IAC3E,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,IAAI,OAAO,IAAI;IACf;AACK,UAAC,WAAW,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;IACjD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,KAAK,CAAC,WAAW,GAAG,kBAAkB,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/E,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;IAC3C,YAAY;IACZ,QAAQ,IAAI,UAAU,GAAG,YAAY;IACrC,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ;IAChD,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,YAAY;IAClE,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;IACtD,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE;IACtD,YAAY,UAAU,GAAG,QAAQ,EAAE,QAAQ,CAAC,IAAI;IAChD,kBAAkB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;IAClD,kBAAkB,SAAS;IAC3B,QAAQ;IACR,aAAa;IACb,YAAY,UAAU,GAAG,YAAY;IACrC,QAAQ;IACR,QAAQ,QAAQ,CAAC,KAAK,GAAG,UAAU;IACnC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;IAC5B,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC;IACtE,YAAY,IAAI,CAAC,IAAI,EAAE;IACvB,gBAAgB,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;IACrD,gBAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;IACrD,gBAAgB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/C,YAAY;IACZ,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;IACrD,QAAQ;IACR,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;IACvD,YAAY,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;IACjE,gBAAgB;IAChB,YAAY,IAAI,KAAK,IAAI,IAAI;IAC7B,gBAAgB;IAChB,YAAY,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;IAClF,YAAY,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;IACjF,YAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC5D,YAAY,IAAI,CAAC,IAAI,EAAE;IACvB,gBAAgB,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;IACrD,gBAAgB,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,UAAU,GAAG,MAAM,EAAE,GAAG,CAAC;IACxE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/C,YAAY;IACZ,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;IAC/C,QAAQ,CAAC,CAAC;IACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD;IACA,MAAM,aAAa,GAAG,aAAa,CAAC,mBAAmB,EAAE;IACzD,IAAI,QAAQ,EAAE,GAAG;IACjB,IAAI,MAAM,EAAE,EAAE;IACd,IAAI,KAAK,EAAE,EAAE;IACb,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,IAAI;IACf,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;IACpC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC;IAChE,IAAI,MAAM,QAAQ,GAAG;IACrB,UAAU,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE;IAC5E,UAAU,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACpD,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;IAChC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;IAC7B,YAAY,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;IAC/D,YAAY,IAAI,UAAU;IAC1B,gBAAgB,OAAO,UAAU;IACjC,QAAQ;IACR,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;IAC9B,YAAY,OAAO,QAAQ;IAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;IACzD,YAAY;IACZ,QAAQ,MAAM,IAAI,GAAG,EAAE;IACvB,QAAQ,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK;AAC1G,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AACxD,YAAY,OAAO,UAAU,GAAG,MAAM,GAAG,SAAS;AAClD,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACd,QAAQ,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACjD,QAAQ,IAAI,SAAS,EAAE;IACvB,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,KAAK;IAC/D,gBAAgB,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;IAChD,gBAAgB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG;IACjF,gBAAgB,OAAO,GAAG;IAC1B,YAAY,CAAC,EAAE,EAAE,CAAC;IAClB,YAAY,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;IACpC,QAAQ;IACR,IAAI;IACJ,IAAI,OAAO,QAAQ;IACnB,CAAC;IACD,MAAM,cAAc,GAAG,MAAM;IAC7B,IAAI,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAC3D,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,EAAE;IAClD,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,CAAC;AACI,UAAC,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK;IAClD,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ,MAAM,QAAQ,GAAG,cAAc,EAAE;IACzC,QAAQ,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5D,QAAQ,MAAM,YAAY,GAAG;IAC7B,YAAY,QAAQ;IACpB,YAAY,MAAM,EAAE,gBAAgB,CAAC,MAAM,IAAI,EAAE;IACjD,YAAY,KAAK,EAAE,EAAE;IACrB,YAAY,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC/B,YAAY,KAAK,EAAE,gBAAgB,CAAC,KAAK;IACzC,SAAS;IACT,QAAQ,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrG,IAAI;IACJ,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACtE,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAClE,QAAQ,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC;IACnD,QAAQ,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC;IACrD,QAAQ,OAAO,MAAM;IACrB,YAAY,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC;IAC1D,YAAY,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,CAAC;IAC5D,QAAQ,CAAC;IACT,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,IAAI,MAAM,QAAQ,GAAG,CAAC,IAAI,KAAK;IAC/B,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc,EAAE;IACpE,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,YAAY;IACZ,QAAQ;IACR,QAAQ,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;IAC9C,QAAQ,WAAW,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC;IACL,IAAI,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;IACxD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,MAAM,EAAE,gBAAgB,CAAC,MAAM,IAAI,EAAE;IAC7C,QAAQ,KAAK;IACb,QAAQ,QAAQ;IAChB,QAAQ,KAAK,EAAE,gBAAgB,CAAC,KAAK;IACrC,KAAK;IACL,IAAI,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjG;AACK,UAAC,SAAS,GAAG,MAAM;IACxB,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC;IACxD;AACK,UAAC,QAAQ,GAAG,MAAM;IACvB,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE;IAC1D,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;IAClC,QAAQ,OAAO,IAAI;IACnB,IAAI,MAAM,IAAI,GAAG,OAAO,EAAE;IAC1B,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,IAAI,IAAI,EAAE;IAClB,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpC,YAAY,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAClD,YAAY,IAAI,EAAE;IAClB,gBAAgB,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACzE,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IAC3C,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ;IACR,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxB,IAAI,OAAO,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE;IAC1C,QAAQ,MAAM;IACd,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,QAAQ,QAAQ;IAChB,KAAK,CAAC;IACN;AACK,UAAC,WAAW,GAAG,MAAM;IAC1B,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE;IACpC,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C;AACK,UAAC,eAAe,GAAG,MAAM;IAC9B,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE;IACjC,IAAI,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC;IACrC;AACK,UAAC,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,KAAK;IACpD,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE;IACpC,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK;IAC/B,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE;IAChF,YAAY;IACZ,QAAQ;IACR,QAAQ,CAAC,CAAC,cAAc,EAAE;IAC1B,QAAQ,QAAQ,CAAC,EAAE,CAAC;IACpB,IAAI,CAAC;IACL,IAAI,MAAM,gBAAgB,GAAG,MAAM;IAGnC,IAAI,CAAC;IACL,IAAI,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;IAChE,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,EAAE,EAAE;IAChB,QAAQ,OAAO,EAAE,WAAW;IAC5B,QAAQ,YAAY,EAAE,gBAAgB;IACtC,QAAQ,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7D,QAAQ,GAAG,YAAY;IACvB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IACtB;AACK,UAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,KAAK;IACrD,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE;IAC9C,IAAI,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;IACtE,IAAI,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;IAC7F,IAAI,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK;IAC/B,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE;IAChF,YAAY;IACZ,QAAQ;IACR,QAAQ,CAAC,CAAC,cAAc,EAAE;IAC1B,QAAQ,QAAQ,CAAC,EAAE,CAAC;IACpB,IAAI,CAAC;IACL,IAAI,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,WAAW;IAC9E,IAAI,MAAM,cAAc,GAAG,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE;IACnF,IAAI,MAAM,EAAE,CAAC,cAAc,GAAG,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;IAC/F,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE;IAC9B,QAAQ,IAAI,EAAE,EAAE;IAChB,QAAQ,OAAO,EAAE,WAAW;IAC5B,QAAQ,CAAC,aAAa,GAAG,cAAc;IACvC,QAAQ,GAAG,YAAY;IACvB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IACtB;AACK,UAAC,gBAAgB,GAAG,CAAC,YAAY,KAAK;IAC3C,IAAI,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,MAAM,KAAK;IACzD,UAAU,MAAM,CAAC,KAAK,CAAC,KAAK;IAC5B,UAAU,MAAM,CAAC,KAAK;IACtB,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC;IAC9E,IAAI,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK;IAC7D,QAAQ,MAAM,aAAa,GAAG;IAC9B,YAAY,KAAK,EAAE,MAAM;IACzB,YAAY,QAAQ;IACpB,SAAS;IACT,QAAQ,cAAc,CAAC,MAAM,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7E,IAAI,CAAC;IACL,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5B;AACK,UAAC,aAAa,GAAG,MAAM;IAC5B,IAAI,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAC7D,IAAI,MAAM,eAAe,GAAG,CAAC,QAAQ,KAAK;IAC1C,QAAQ,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC9C,QAAQ,UAAU,CAAC,MAAM;IACzB,YAAY,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAChD,gBAAgB,QAAQ,EAAE;IAC1B,gBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;IACjD,YAAY,CAAC,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,CAAC;IACL,IAAI,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC;IACvC;AACK,UAAC,gBAAgB,GAAG,CAAC,KAAK,KAAK;IACpC,IAAI,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;IACzC,YAAY,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;IACjD,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,QAAQ,OAAO,MAAM,YAAY,CAAC,OAAO,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,OAAO,aAAa;IACxB;AACK,UAAC,kBAAkB,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,EAAE,KAAK;IACvD,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM;IAC7C,QAAQ,IAAI;IACZ,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;IACzD,YAAY,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY;IACzD,QAAQ;IACR,QAAQ,OAAO,MAAM,EAAE;IACvB,YAAY,OAAO,YAAY;IAC/B,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;IAChC,QAAQ,IAAI;IACZ,YAAY,QAAQ,CAAC,KAAK,CAAC;IAC3B,YAAY,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnE,QAAQ;IACR,QAAQ,OAAO,KAAK,EAAE;IACtB,YAAY,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,QAAQ;IACR,IAAI,CAAC;IACL,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC5B;AACK,UAAC,SAAS,GAAG,CAAC,YAAY,GAAG,KAAK,KAAK;IAC5C,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC;IACpD,IAAI,MAAM,MAAM,GAAG,MAAM;IACzB,QAAQ,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;IACjC,IAAI,CAAC;IACL,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;IAC1B;AACK,UAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK;IAC5C,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACvC,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ;IACR,IAAI;IACJ,IAAIA,mBAAgB,EAAE;IACtB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;IAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;IACtE,IAAI;IACJ,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;IACrF,IAAI;IACJ,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3D,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,aAAa;IACxC,QAAQ,IAAI;IACZ,QAAQ,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI;IAC5C,QAAQ,MAAM,EAAE,OAAO,EAAE,MAAM;IAC/B,QAAQ,QAAQ,EAAE,IAAI;IACtB,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB;IACA,IAAI,SAAS,GAAG,CAAC;AACZ,UAAC,cAAc,GAAG,MAAM;IAC7B,IAAI,SAAS,GAAG,CAAC;IACjB;AACK,UAAC,KAAK,GAAG,MAAM;IACpB,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;IACjC,QAAQ,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAClC,IAAI;IACJ,IAAIA,mBAAgB,EAAE;IACtB,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK;IAC/B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB,QAAQ,QAAQ,CAAC,KAAK,GAAG,EAAE;IAC3B,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1D,IAAI,MAAM,IAAI,GAAG;IACjB,QAAQ,MAAM,EAAE,SAAS;IACzB,QAAQ,IAAI,EAAE,YAAY,CAAC,UAAU;IACrC,QAAQ,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC5D,KAAK;IACL,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,IAAI,OAAO,IAAI,CAAC,KAAK;IACrB;AACK,UAAC,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,KAAK;IAC5C,IAAI,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/D,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;IACvC,YAAY,iBAAiB,CAAC,KAAK,CAAC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,QAAQ,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,IAAI,OAAO,cAAc;IACzB;AACK,UAAC,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,KAAK;IAC/C,IAAI,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/D,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1C,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9B,QAAQ,MAAM,OAAO,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO;IACjD,QAAQ,IAAI,OAAO,IAAI,QAAQ,EAAE;IACjC,YAAY,WAAW,CAAC,OAAO,GAAG,GAAG;IACrC,YAAY,iBAAiB,CAAC,KAAK,CAAC;IACpC,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;IAC3C,gBAAgB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;IAChD,gBAAgB,iBAAiB,CAAC,KAAK,CAAC;IACxC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC,YAAY,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC;IAC5C,QAAQ;IACR,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzB,IAAI,OAAO,cAAc;IACzB;;ICpmBA,MAAM,kBAAkB,GAAG,4FAA4F;AAC3G,UAAC,UAAU,GAAG,CAAC,MAAM,KAAK;IACtC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;IAClC,QAAQ,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO;IACX,SAAS,OAAO,CAAC,IAAI,EAAE,OAAO;IAC9B,SAAS,OAAO,CAAC,IAAI,EAAE,MAAM;IAC7B,SAAS,OAAO,CAAC,IAAI,EAAE,MAAM;IAC7B,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ;IAC/B,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAChC;IACA,MAAM,WAAW,GAAG,CAAC,QAAQ,KAAK;IAClC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjD,QAAQ,OAAO,EAAE;IACjB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ;IAClC,SAAS,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI;IAC7C,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9D,SAAS,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC9B,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,IAAI;IACR,IAAI,KAAK;IACT,IAAI,OAAO;IACX,IAAI,IAAI;IACR,IAAI,KAAK;IACT,IAAI,OAAO;IACX,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,OAAO;IACX,IAAI,QAAQ;IACZ,IAAI,OAAO;IACX,IAAI,KAAK;IACT,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,KAAK;IACxC,IAAI,IAAI,QAAQ,IAAI,IAAI;IACxB,QAAQ,OAAO,EAAE;IACjB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAC1D,CAAC;IACD,MAAM,sBAAsB,GAAG,CAAC,QAAQ,KAAK;IAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI;IACxB,QAAQ,OAAO,QAAQ,KAAK,QAAQ;IACpC,QAAQ,MAAM,IAAI,QAAQ;IAC1B,QAAQ,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;IAC7C,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;IAC3C,IAAI;IACJ,IAAI,OAAO,QAAQ;IACnB,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK;IAC/C,IAAI,IAAI,UAAU,GAAG,EAAE;IACvB,IAAI,IAAI,YAAY,GAAG,EAAE;IACzB,IAAI,IAAI,SAAS,GAAG,IAAI;IACxB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;IACpD,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE;IAChC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACtC,gBAAgB,YAAY,GAAG;IAC/B,qBAAqB,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;IACtD,qBAAqB,IAAI,CAAC,EAAE,CAAC;IAC7B,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC;IACjD,YAAY;IACZ,QAAQ;IACR,aAAa,IAAI,GAAG,KAAK,yBAAyB,EAAE;IACpD,YAAY,MAAM,KAAK,GAAG,KAAK;IAC/B,YAAY,IAAI,KAAK,EAAE,MAAM,EAAE;IAC/B,gBAAgB,SAAS,GAAG,KAAK,CAAC,MAAM;IACxC,YAAY;IACZ,QAAQ;IACR,aAAa,IAAI,GAAG,KAAK,OAAO,CAAC,KAAK,IAAI,GAAG,KAAK,WAAW,CAAC,KAAK,EAAE;IACrE,YAAY,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;IAClD,YAAY,IAAI,WAAW,EAAE;IAC7B,gBAAgB,UAAU,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnE,YAAY;IACZ,QAAQ;IACR,aAAa,IAAI,GAAG,KAAK,OAAO,CAAC,UAAU,IAAI,GAAG,KAAK,WAAW,CAAC,UAAU,EAAE;IAC/E,YAAY,IAAI,KAAK,EAAE;IACvB,gBAAgB,UAAU,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7D,YAAY;IACZ,QAAQ;IACR,aAAa,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IACtC,YAAY,GAAG,KAAK,KAAK;IACzB,YAAY,GAAG,KAAK,KAAK;IACzB,YAAY,GAAG,KAAK,UAAU;IAC9B,YAAY,GAAG,KAAK,QAAQ,EAAE;IAC9B,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;IAC5C,gBAAgB,IAAI,KAAK;IACzB,oBAAoB,UAAU,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IAC9C,YAAY;IACZ,iBAAiB,IAAI,KAAK,IAAI,IAAI,EAAE;IACpC,gBAAgB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;IACnD,gBAAgB,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;IACnE,gBAAgB,UAAU,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5E,YAAY;IACZ,QAAQ;IACR,IAAI,CAAC,CAAC;IACN,IAAI,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE;IAClD,CAAC;IACD,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK;IACnD,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IACpC,QAAQ,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;IAC5C,IAAI;IACJ,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,cAAc,GAAG,MAAM;IAC7B,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,KAAK,CAAC,iBAAiB,GAAG,IAAI;IAClC,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE;IAC1B,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE;IAC1B,IAAI,cAAc,EAAE;IACpB,CAAC;IACD,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK;IACxC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;IACzD,QAAQ,OAAO,EAAE;IACjB,IAAI;IACJ,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;IACpE,QAAQ,OAAO,UAAU,CAAC,OAAO,CAAC;IAClC,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAChC,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACzE,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,OAAO;IACzB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,EAAE;IAClD,QAAQ,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IAChD,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,EAAE;IACrD,QAAQ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjE,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1E,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE;IACpD,QAAQ,MAAM,KAAK,GAAG,QAAQ,EAAE;IAChC,QAAQ,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE;IACnD,QAAQ,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU;IACzC,QAAQ,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS;IACpE,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK;IACrD,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE;IAChD,QAAQ,IAAI,MAAM,GAAG,EAAE;IACvB,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAChF,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IACjD,QAAQ;IACR,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO;IAC9C,QAAQ;IACR,QAAQ,OAAO,MAAM;IACrB,IAAI;IACJ,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;IAC1C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;IAC/B,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;IACvC,QAAQ,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,QAAQ,OAAO,kBAAkB,CAAC,eAAe,CAAC;IAClD,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IACnC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;IACnC,IAAI,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC;IAC7F,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IACjC,QAAQ,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;IAClD,IAAI;IACJ,IAAI,MAAM,YAAY,GAAG,SAAS,KAAK,IAAI,GAAG,SAAS,GAAG,YAAY;IACtE,IAAI,OAAO,CAAC,EAAE,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,SAAS,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACA,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG;IACxB,KAAK,IAAI,EAAE;IACX,MAAM,kBAAkB,GAAG,OAAO,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,EAAE,KAAK;IACxE,IAAI,IAAI,OAAO,YAAY,OAAO,EAAE;IACpC,QAAQ,OAAO,GAAG,MAAM,OAAO;IAC/B,IAAI;IACJ,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE;IACzD,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;IACpE,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;IAChC,QAAQ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;IACrC,YAAY,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;IAChE,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG,OAAO;IACzB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY,EAAE;IAClD,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,EAAE;IACrD,QAAQ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjE,QAAQ,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;IACtC,YAAY,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;IAChE,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE;IACpD,QAAQ,MAAM,KAAK,GAAG,QAAQ,EAAE;IAChC,QAAQ,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE;IACnD,QAAQ,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU;IACzC,QAAQ,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS;IACpE,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK;IACrD,QAAQ;IACR,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE;IAChD,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;IAC1C,gBAAgB,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;IACpE,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;IACnE,QAAQ;IACR,QAAQ,IAAI,KAAK,EAAE;IACnB,YAAY,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO;IAC9C,QAAQ;IACR,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI;IACnC,IAAI,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe;IAC1E,SAAS,OAAO,YAAY,KAAK,QAAQ;IACzC,YAAY,YAAY,IAAI,IAAI;IAChC,YAAY,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,CAAC;IAC/D,IAAI,IAAI,kBAAkB,EAAE;IAC5B,QAAQ,MAAM,aAAa,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACjD,QAAQ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,aAAa;IACpD,QAAQ,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,QAAQ,IAAI,CAAC,CAAC,yBAAyB,EAAE,EAAE,CAAC,wBAAwB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,QAAQ,MAAM,IAAI,IAAI,YAAY;IAClC,YAAY,MAAM,KAAK,GAAG,QAAQ,EAAE;IACpC,YAAY,MAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB;IAC5D,YAAY,KAAK,CAAC,oBAAoB,GAAG,IAAI;IAC7C,YAAY,IAAI,OAAO,GAAG,EAAE;IAC5B,YAAY,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;IACvC,gBAAgB,OAAO,IAAI,KAAK;IAChC,YAAY,CAAC;IACb,YAAY,IAAI;IAChB,gBAAgB,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC;IAC1E,gBAAgB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IACrD,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IACpE,YAAY;IACZ,oBAAoB;IACpB,gBAAgB,KAAK,CAAC,oBAAoB,GAAG,aAAa;IAC1D,YAAY;IACZ,QAAQ,CAAC,CAAC;IACV,QAAQ,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC,QAAQ,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;IAC/D,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;IAC/B,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;IAC3B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;IACnC,IAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;IACpC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;IACtC,YAAY,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACpF,QAAQ;IACR,QAAQ,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;IACjD,QAAQ,MAAM,kBAAkB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,CAAC;IACtE,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE;IACzC,IAAI,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACrE,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;IAC5B,QAAQ,IAAI,CAAC,SAAS,CAAC;IACvB,IAAI;IACJ,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACrC,YAAY,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;IAC1C,gBAAgB,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;IACpE,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY,MAAM,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;IACnE,QAAQ;IACR,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI;IACJ,CAAC;IACD,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,KAAK;IAC3D,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE;IACrB,QAAQ,IAAI,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpF,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9F,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,YAAY;IACzC,UAAU,GAAG,CAAC,KAAK,CAAC;IACpB,UAAU,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,eAAe,CAAC;IAC9C,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IAC/C,QAAQ,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,KAAK,CAAC;IAC1E,IAAI;IACJ,IAAI,IAAI,CAAC,CAAC,4BAA4B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;AACW,UAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK;IACjE,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;IACrC,IAAI,OAAO,IAAI,cAAc,CAAC;IAC9B,QAAQ,MAAM,KAAK,CAAC,UAAU,EAAE;IAChC,YAAY,MAAM,kBAAkB,GAAG,KAAK,CAAC,iBAAiB;IAC9D,YAAY,cAAc,EAAE;IAC5B,YAAY,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,YAAY,MAAM,aAAa,GAAG,EAAE;IACpC,YAAY,IAAI;IAChB,gBAAgB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;IAClF,gBAAgB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjF,gBAAgB,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC;IACtE,gBAAgB,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;IACjD,oBAAoB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE;IACtD,oBAAoB,IAAI,CAAC,IAAI;IAC7B,wBAAwB;IACxB,oBAAoB,MAAM,GAAG,GAAG,MAAM,IAAI,EAAE;IAC5C,oBAAoB,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC;IAClE,gBAAgB;IAChB,gBAAgB,UAAU,CAAC,KAAK,EAAE;IAClC,YAAY;IACZ,YAAY,OAAO,CAAC,EAAE;IACtB,gBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,YAAY;IACZ,oBAAoB;IACpB,gBAAgB,KAAK,CAAC,iBAAiB,GAAG,kBAAkB;IAC5D,YAAY;IACZ,QAAQ,CAAC;IACT,KAAK,CAAC;IACN;AACY,UAAC,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,KAAK;IAC1D,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,kBAAkB,GAAG,KAAK,CAAC,iBAAiB;IACtD,IAAI,cAAc,EAAE;IACpB,IAAI,IAAI;IACR,QAAQ,OAAO,kBAAkB,CAAC,OAAO,CAAC;IAC1C,IAAI;IACJ,YAAY;IACZ,QAAQ,KAAK,CAAC,iBAAiB,GAAG,kBAAkB;IACpD,IAAI;IACJ;AACY,UAAC,mBAAmB,GAAG,OAAO,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK;IACpE,IAAI,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3D,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;IACrC,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;IACrC,IAAI,IAAI,MAAM,GAAG,EAAE;IACnB,IAAI,OAAO,IAAI,EAAE;IACjB,QAAQ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;IACnD,QAAQ,IAAI,IAAI;IAChB,YAAY;IACZ,QAAQ,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI;IACJ,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;IAC9B,IAAI,OAAO,MAAM;IACjB;;IC/WO,SAAS,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,YAAY,EAAE;IAC9D,IAAI,MAAM,iBAAiB,IAAI,CAAC,KAAK,KAAK;IAC1C,QAAQ,OAAO,SAAS,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,CAAC;IACN,IAAI,iBAAiB,CAAC,OAAO,GAAG,IAAI;IACpC,IAAI,iBAAiB,CAAC,iBAAiB,GAAG,SAAS;IACnD,IAAI,iBAAiB,CAAC,cAAc,GAAG,aAAa;IACpD,IAAI,iBAAiB,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IACrG,IAAI,OAAO,iBAAiB;IAC5B;IACO,SAAS,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE;IACnD,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC3C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IAC3C,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;IAC3C,QAAQ,OAAO,KAAK;IACpB,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E;IACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,IAAI,CAAC,KAAK,CAAC;IACf,QAAQ,OAAO,IAAI;IACnB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;IAC9B,QAAQ,OAAO,KAAK;IACpB,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;IACtD,QAAQ,OAAO,KAAK;IACpB,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;IACrC,QAAQ,OAAO,KAAK;IACpB,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D;;IC7BO,SAAS,UAAU,CAAC,MAAM,EAAE;IACnC,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;IACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;IAChE,IAAI;IACJ,IAAI,MAAM,mBAAmB,IAAI,CAAC,KAAK,KAAK;IAC5C,QAAQ,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,IAAI,EAAE;IACjD,QAAQ,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC;IAC7C,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,KAAK,GAAG,MAAM;IACxB,IAAI,mBAAmB,CAAC,WAAW,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IACrG,IAAI,mBAAmB,CAAC,aAAa,GAAG,IAAI;IAC5C,IAAI,mBAAmB,CAAC,OAAO,GAAG,MAAM;IACxC,IAAI,OAAO,mBAAmB;IAC9B;;ICVO,MAAM,eAAe,GAAG;IAC/B,IAAI,OAAO,EAAE,SAAS;IACtB,IAAI,QAAQ,EAAE,UAAU;IACxB,IAAI,QAAQ,EAAE,UAAU;IACxB,CAAC;IACD,SAAS,aAAa,CAAC,KAAK,EAAE;IAC9B,IAAI,QAAQ,KAAK,IAAI,IAAI;IACzB,QAAQ,OAAO,KAAK,KAAK,QAAQ;IACjC,QAAQ,MAAM,IAAI,KAAK;IACvB,QAAQ,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;IACxC,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnC;IACO,SAAS,IAAI,CAAC,QAAQ,EAAE;IAC/B,IAAI,IAAI,MAAM,GAAG,eAAe,CAAC,OAAO;IACxC,IAAI,IAAI,SAAS,GAAG,IAAI;IACxB,IAAI,IAAI,KAAK,GAAG,IAAI;IACpB,IAAI,IAAI,OAAO,GAAG,IAAI;IACtB,IAAI,MAAM,aAAa,IAAI,CAAC,KAAK,KAAK;IACtC,QAAQ,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,IAAI,SAAS,EAAE;IAC9D,YAAY,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC;IAClD,QAAQ;IACR,QAAQ,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,IAAI,KAAK,EAAE;IAC1D,YAAY,MAAM,KAAK;IACvB,QAAQ;IACR,QAAQ,IAAI,CAAC,OAAO,EAAE;IACtB,YAAY,OAAO,GAAG,QAAQ;IAC9B,iBAAiB,IAAI,CAAC,CAAC,MAAM,KAAK;IAClC,gBAAgB,MAAM,QAAQ,GAAG,MAAM;IACvC,gBAAgB,SAAS;IACzB,oBAAoB,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC;IACtD,0BAA0B,QAAQ,CAAC;IACnC,0BAA0B,QAAQ;IAClC,gBAAgB,MAAM,GAAG,eAAe,CAAC,QAAQ;IACjD,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,CAAC,GAAG,KAAK;IAChC,gBAAgB,KAAK,GAAG,GAAG;IAC3B,gBAAgB,MAAM,GAAG,eAAe,CAAC,QAAQ;IACjD,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,MAAM,GAAG,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC3C,QAAQ,SAAS,CAAC,MAAM;IACxB,YAAY,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,IAAI,OAAO,EAAE;IAC/D,gBAAgB,IAAI,MAAM,GAAG,IAAI;IACjC,gBAAgB;IAChB,qBAAqB,IAAI,CAAC,MAAM;IAChC,oBAAoB,IAAI,MAAM,EAAE;IAChC,wBAAwB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,oBAAoB;IACpB,gBAAgB,CAAC;IACjB,qBAAqB,KAAK,CAAC,MAAM;IACjC,oBAAoB,IAAI,MAAM,EAAE;IAChC,wBAAwB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,oBAAoB;IACpB,gBAAgB,CAAC,CAAC;IAClB,gBAAgB,OAAO,MAAM;IAC7B,oBAAoB,MAAM,GAAG,KAAK;IAClC,gBAAgB,CAAC;IACjB,YAAY;IACZ,QAAQ,CAAC,EAAE,EAAE,CAAC;IACd,QAAQ,OAAO,IAAI;IACnB,IAAI,CAAC,CAAC;IACN,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI;IAChC,IAAI,aAAa,CAAC,UAAU,GAAG,MAAM,MAAM;IAC3C,IAAI,OAAO,aAAa;IACxB;AACY,UAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK;IACrD,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACtE,IAAI,IAAI,UAAU,GAAG,KAAK;IAC1B,IAAI,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;IACpC,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;IAClC,YAAY,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI;IACxD,YAAY,IAAI,UAAU,KAAK,eAAe,CAAC,OAAO,EAAE;IACxD,gBAAgB,UAAU,GAAG,IAAI;IACjC,YAAY;IACZ,QAAQ;IACR,IAAI;IACJ,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;IACtC,YAAY,WAAW,CAAC,IAAI,CAAC;IAC7B,QAAQ;IACR,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IACpB,IAAI,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC,oBAAoB,EAAE;IACxD,QAAQ,OAAO,QAAQ,IAAI,IAAI;IAC/B,IAAI;IACJ,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE;IACnC,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,KAAK,CAAC;IACN;IACA,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC,eAAe;IACrC,SAAS,OAAO,CAAC,QAAQ,EAAE;IAClC,IAAI,OAAO,QAAQ,EAAE;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IC/FA,MAAM,OAAO,GAAG,MAAM,OAAO,WAAW,KAAK,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;IACzF,MAAM,QAAQ,CAAC;IACf,IAAI,OAAO;IACX,IAAI,QAAQ;IACZ,IAAI,WAAW;IACf,IAAI,UAAU;IACd,IAAI,WAAW,GAAG;IAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IAC5D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE;IACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,GAAG;IAC7B,IAAI;IACJ,IAAI,YAAY,CAAC,IAAI,EAAE;IACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY;IACZ,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1C,IAAI;IACJ,IAAI,UAAU,CAAC,IAAI,EAAE;IACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY;IACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7C,QAAQ,IAAI,CAAC,KAAK;IAClB,YAAY;IACZ,QAAQ,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,KAAK;IAC1C,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAClC,QAAQ,OAAO,QAAQ;IACvB,IAAI;IACJ,IAAI,YAAY,CAAC,aAAa,EAAE,QAAQ,EAAE;IAC1C,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY;IACZ,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC9B,YAAY,SAAS,EAAE,aAAa;IACpC,YAAY,QAAQ;IACpB,YAAY,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;IACjC,SAAS,CAAC;IACV,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;IACvD,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;IACpC,QAAQ;IACR,IAAI;IACJ,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY,OAAO,IAAI;IACvB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,QAAQ,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;IACnD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,QAAQ,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IACvE,IAAI;IACJ,IAAI,oBAAoB,CAAC,KAAK,GAAG,EAAE,EAAE;IACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY,OAAO,EAAE;IACrB,QAAQ,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;IACrC,QAAQ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK;IAC9D,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;IAC7C,gBAAgB,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IAC1E,YAAY;IACZ,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;IACpD,YAAY,KAAK,CAAC,KAAK,IAAI,QAAQ;IACnC,YAAY,KAAK,CAAC,KAAK,EAAE;IACzB,YAAY,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC;IACrD,QAAQ,CAAC,CAAC;IACV,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;IAC/C,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM;IACrC,YAAY,IAAI;IAChB,YAAY,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;IAC1C,YAAY,GAAG,EAAE,KAAK,CAAC,GAAG;IAC1B,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK;IAC9B,SAAS,CAAC;IACV,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;IACzC,aAAa,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;IAC5B,IAAI;IACJ,IAAI,QAAQ,GAAG;IACf,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;IACzB,YAAY;IACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;IACrC,QAAQ,IAAI,CAAC,KAAK;IAClB,YAAY;IACZ,QAAQ,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC;IACpD,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtF,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACpD,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAChC,YAAY,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACpD,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;IACzC,gBAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3G,YAAY,CAAC,CAAC;IACd,QAAQ;IACR,QAAQ,OAAO,CAAC,QAAQ,EAAE;IAC1B,IAAI;IACJ,IAAI,KAAK,GAAG;IACZ,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;IAC7B,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IAC7B,IAAI;IACJ,IAAI,MAAM,GAAG;IACb,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;IAC3B,IAAI;IACJ,IAAI,OAAO,GAAG;IACd,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK;IAC5B,IAAI;IACJ;AACK,UAAC,QAAQ,GAAG,IAAI,QAAQ;IACtB,SAAS,WAAW,CAAC,aAAa,EAAE;IAC3C,IAAI,MAAM,SAAS,GAAG,OAAO,EAAE;IAC/B,IAAI,OAAO,MAAM;IACjB,QAAQ,MAAM,QAAQ,GAAG,OAAO,EAAE,GAAG,SAAS;IAC9C,QAAQ,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC;IACtD,IAAI,CAAC;IACL;IACO,SAAS,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE;IAC9C,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;IAChC,QAAQ,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;IACnC,QAAQ,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC;IACvC,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;IAClD,QAAQ,IAAI,QAAQ;IACpB,YAAY,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;IACjD,QAAQ,OAAO,MAAM;IACrB,IAAI,CAAC;IACL,IAAI,OAAO,QAAQ;IACnB;;ICtHO,SAAS,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE;IAClD,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC;IACvG;IACA,cAAc,CAAC,WAAW,GAAG,wBAAwB;IAC9C,SAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE;IACrD,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;IAChC,QAAQ,8BAA8B,EAAE,EAAE,IAAI,EAAE;IAChD,QAAQ,wBAAwB,EAAE,IAAI;IACtC,QAAQ,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;IACtC,KAAK,EAAE,QAAQ,CAAC;IAChB;IACA,iBAAiB,CAAC,WAAW,GAAG,2BAA2B;;ICVpD,SAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,EAAE;IACvD,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE;IAC5B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;IACnC,IAAI,IAAI,QAAQ,EAAE,UAAU,EAAE;IAC9B,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU;IACzC,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;IAC5C,YAAY,OAAO,QAAQ,CAAC,KAAK,CAAC;IAClC,QAAQ;IACR,QAAQ,OAAO,QAAQ,IAAI,IAAI;IAC/B,IAAI;IACJ,IAAI,OAAO,aAAa,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC;IACvG;IAEA,aAAa,CAAC,WAAW;IACzB,IAAI,uBAAuB;;IChBpB,SAAS,iBAAiB,CAAC,QAAQ,EAAE;IAC5C,IAAI,OAAO,gBAAgB,GAAG,IAAI,EAAE;IACpC,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;IACxD,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,OAAO,EAAE;IACrB,gBAAgB,cAAc,EAAE,kBAAkB;IAClD,gBAAgB,iBAAiB,EAAE,MAAM;IACzC,aAAa;IACb,YAAY,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpD,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC1B,YAAY,MAAM,SAAS,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvE,YAAY,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,sBAAsB,CAAC;IACtE,QAAQ;IACR,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE;IAC9B,IAAI,CAAC;IACL;;ICdO,SAAS,gBAAgB,CAAC,YAAY,EAAE;IAC/C,IAAI,MAAM,UAAU,GAAG,YAAY;IACnC,IAAI,MAAM,QAAQ,GAAG,UAAU;IAC/B,QAAQ,OAAO,UAAU,KAAK,QAAQ;IACtC,QAAQ,EAAE,UAAU,YAAY,KAAK,CAAC;IACtC,QAAQ,UAAU,CAAC;IACnB,UAAU,UAAU,CAAC;IACrB,UAAU,UAAU;IACpB,IAAI,IAAI,KAAK,GAAG,IAAI;IACpB,IAAI,IAAI,QAAQ,YAAY,KAAK,EAAE;IACnC,QAAQ,KAAK,GAAG,QAAQ;IACxB,IAAI;IACJ,SAAS,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;IACvD,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE;IACnC,YAAY,KAAK,GAAG,QAAQ;IAC5B,QAAQ;IACR,aAAa,IAAI,OAAO,IAAI,QAAQ,EAAE;IACtC,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK;IACzC,YAAY,KAAK;IACjB,gBAAgB,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI;IACpE,QAAQ;IACR,aAAa;IACb,YAAY,KAAK,GAAG,QAAQ;IAC5B,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IACrD,IAAI,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,OAAO,GAAG,YAAY;IAChC,IAAI,MAAM,SAAS,GAAG,cAAc;IACpC,IAAI,MAAM,SAAS,GAAG,cAAc;IACpC,IAAI,MAAM,SAAS,GAAG,cAAc;IACpC,IAAI,IAAI,UAAU,GAAG,EAAE;IACvB,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;IAC9B,QAAQ,UAAU;IAClB,YAAY,OAAO,KAAK,CAAC,KAAK,KAAK;IACnC,kBAAkB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;IAC3D,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;IAC/C,oBAAoB,IAAI,CAAC,OAAO;IAChC,wBAAwB,OAAO,KAAK;IACpC,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IACxD,wBAAwB,OAAO,KAAK;IACpC,oBAAoB,MAAM,UAAU,GAAG;IACvC,wBAAwB,iBAAiB;IACzC,wBAAwB,YAAY;IACpC,wBAAwB,eAAe;IACvC,wBAAwB,YAAY;IACpC,wBAAwB,gBAAgB;IACxC,wBAAwB,UAAU;IAClC,wBAAwB,mBAAmB;IAC3C,wBAAwB,kBAAkB;IAC1C,wBAAwB,eAAe;IACvC,wBAAwB,mBAAmB;IAC3C,wBAAwB,eAAe;IACvC,wBAAwB,sBAAsB;IAC9C,wBAAwB,kBAAkB;IAC1C,wBAAwB,WAAW;IACnC,wBAAwB,kBAAkB;IAC1C,wBAAwB,UAAU;IAClC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,oBAAoB,OAAO,CAAC,UAAU;IACtC,gBAAgB,CAAC;IACjB,kBAAkB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;IAC3C,sBAAsB,KAAK,CAAC;IAC5B,sBAAsB,EAAE;IACxB,IAAI;IACJ,IAAI,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,oBAAoB;IACjG,IAAI,MAAM,YAAY,GAAG,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK;IAC3D,UAAU,KAAK,CAAC;IAChB,UAAU,CAAC,4BAA4B,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,IAAI,UAAU,GAAG,IAAI;IAC7B,QAAQ,IAAI,UAAU,GAAG,IAAI;IAC7B,QAAQ,MAAM,YAAY,GAAG,KAAK,EAAE,eAAe;IACnD,QAAQ,IAAI,YAAY,EAAE,QAAQ,EAAE;IACpC,YAAY,UAAU,GAAG,YAAY,CAAC,QAAQ;IAC9C,YAAY,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,IAAI;IACxD,QAAQ;IACR,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;IACxC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxD,gBAAgB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC1C,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvC,oBAAoB;IACpB,gBAAgB,IAAI,WAAW,GAAG,IAAI;IACtC,gBAAgB,IAAI,WAAW,GAAG,IAAI;IACtC,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACnD,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACxD,gBAAgB,IAAI,SAAS,KAAK,EAAE,IAAI,UAAU,GAAG,SAAS,EAAE;IAChE,oBAAoB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC;IACvE,oBAAoB,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IACrD,oBAAoB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE;IAC3E,oBAAoB,IAAI,EAAE,GAAG,CAAC,EAAE;IAChC,wBAAwB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,wBAAwB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAC1D,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACnE,4BAA4B,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5D,4BAA4B,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1D,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,WAAW,EAAE;IAClC,oBAAoB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;IAC/C,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;IACnD,wBAAwB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IAC5D,wBAAwB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACxD,wBAAwB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE;IAC9E,wBAAwB,IAAI,EAAE,GAAG,CAAC,EAAE;IACpC,4BAA4B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,4BAA4B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAC7D,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACvE,gCAAgC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/D,gCAAgC,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAC9D,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,CAAC,WAAW,EAAE;IAClC,oBAAoB,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IACvE,oBAAoB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACpD,oBAAoB,IAAI,EAAE,GAAG,CAAC,EAAE;IAChC,wBAAwB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;IAC5D,wBAAwB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACjE,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5C,4BAA4B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;IACxE,4BAA4B,WAAW,GAAG,QAAQ;IAClD,4BAA4B,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1D,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB,IAAI,WAAW,IAAI,WAAW,EAAE;IAChD,oBAAoB,UAAU,GAAG,WAAW;IAC5C,oBAAoB,UAAU,GAAG,WAAW;IAC5C,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,QAAQ,IAAI,UAAU,IAAI,UAAU,EAAE;IACtC,YAAY,YAAY,CAAC,UAAU,CAAC;IACpC,YAAY,YAAY,CAAC,UAAU,CAAC;IACpC,YAAY,KAAK,CAAC,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7F,iBAAiB,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;IACzC,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK;IAChC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;IAClC,oBAAoB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5C,oBAAoB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;IAChD,gBAAgB;IAChB,YAAY,CAAC;IACb,iBAAiB,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;IACrF,QAAQ;IACR,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,QAAQ,EAAE,OAAO;IACzB,QAAQ,GAAG,EAAE,CAAC;IACd,QAAQ,IAAI,EAAE,CAAC;IACf,QAAQ,KAAK,EAAE,CAAC;IAChB,QAAQ,MAAM,EAAE,CAAC;IACjB,QAAQ,MAAM,EAAE,UAAU;IAC1B,QAAQ,eAAe,EAAE,qBAAqB;IAC9C,QAAQ,cAAc,EAAE,WAAW;IACnC,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,UAAU,EAAE,QAAQ;IAC5B,QAAQ,cAAc,EAAE,QAAQ;IAChC,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,UAAU,EAAE,sCAAsC;IAC1D,KAAK;IACL,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,eAAe,EAAE,SAAS;IAClC,QAAQ,KAAK,EAAE,MAAM;IACrB,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,SAAS,EAAE,MAAM;IACzB,QAAQ,YAAY,EAAE,MAAM;IAC5B,QAAQ,SAAS,EAAE,sCAAsC;IACzD,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,aAAa,EAAE,QAAQ;IAC/B,QAAQ,QAAQ,EAAE,QAAQ;IAC1B,QAAQ,MAAM,EAAE,gBAAgB;IAChC,KAAK;IACL,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,eAAe,EAAE,SAAS;IAClC,QAAQ,OAAO,EAAE,WAAW;IAC5B,QAAQ,YAAY,EAAE,gBAAgB;IACtC,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,cAAc,EAAE,eAAe;IACvC,QAAQ,UAAU,EAAE,QAAQ;IAC5B,KAAK;IACL,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,eAAe,EAAE,wBAAwB;IACjD,QAAQ,KAAK,EAAE,SAAS;IACxB,QAAQ,OAAO,EAAE,SAAS;IAC1B,QAAQ,YAAY,EAAE,KAAK;IAC3B,QAAQ,QAAQ,EAAE,MAAM;IACxB,QAAQ,UAAU,EAAE,MAAM;IAC1B,QAAQ,aAAa,EAAE,WAAW;IAClC,QAAQ,aAAa,EAAE,QAAQ;IAC/B,KAAK;IACL,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,SAAS,EAAE,MAAM;IACzB,QAAQ,IAAI,EAAE,CAAC;IACf,QAAQ,KAAK,EAAE,MAAM;IACrB,KAAK;IACL,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,QAAQ,EAAE,MAAM;IACxB,QAAQ,UAAU,EAAE,MAAM;IAC1B,QAAQ,YAAY,EAAE,MAAM;IAC5B,QAAQ,UAAU,EAAE,yBAAyB;IAC7C,QAAQ,SAAS,EAAE,YAAY;IAC/B,QAAQ,UAAU,EAAE,GAAG;IACvB,KAAK;IACL,IAAI,MAAM,qBAAqB,GAAG;IAClC,QAAQ,eAAe,EAAE,MAAM;IAC/B,QAAQ,YAAY,EAAE,KAAK;IAC3B,QAAQ,MAAM,EAAE,gBAAgB;IAChC,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,UAAU,EAAE,yBAAyB;IAC7C,QAAQ,QAAQ,EAAE,MAAM;IACxB,QAAQ,SAAS,EAAE,MAAM;IACzB,QAAQ,KAAK,EAAE,SAAS;IACxB,QAAQ,YAAY,EAAE,MAAM;IAC5B,QAAQ,UAAU,EAAE,UAAU;IAC9B,QAAQ,SAAS,EAAE,OAAO;IAC1B,QAAQ,MAAM,EAAE,MAAM;IACtB,KAAK;IACL,IAAI,MAAM,SAAS,GAAG,CAAC,WAAW,MAAM;IACxC,QAAQ,OAAO,EAAE,MAAM;IACvB,QAAQ,eAAe,EAAE,WAAW,GAAG,yBAAyB,GAAG,aAAa;IAChF,QAAQ,OAAO,EAAE,SAAS;IAC1B,QAAQ,YAAY,EAAE,KAAK;IAC3B,QAAQ,UAAU,EAAE,WAAW,GAAG,mBAAmB,GAAG,uBAAuB;IAC/E,KAAK,CAAC;IACN,IAAI,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;IAC3D,IAAI,IAAI,SAAS,GAAG,yBAAyB;IAC7C,IAAI,IAAI,SAAS;IACjB,QAAQ,SAAS,KAAK,OAAO;IAC7B,QAAQ,SAAS,KAAK,oBAAoB,EAAE;IAC5C,QAAQ,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;IAC/E,IAAI;IACJ,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE;IAC5Z,QAAQ,OAAO,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC/C,QAAQ,KAAK,EAAE;IACf,YAAY,UAAU,EAAE,MAAM;IAC9B,YAAY,MAAM,EAAE,MAAM;IAC1B,YAAY,KAAK,EAAE,SAAS;IAC5B,YAAY,MAAM,EAAE,SAAS;IAC7B,YAAY,OAAO,EAAE,MAAM;IAC3B,SAAS;IACT,QAAQ,KAAK,EAAE,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5B,QAAQ,KAAK,EAAE,IAAI;IACnB,QAAQ,MAAM,EAAE,IAAI;IACpB,QAAQ,OAAO,EAAE,WAAW;IAC5B,QAAQ,IAAI,EAAE,MAAM;IACpB,QAAQ,MAAM,EAAE,cAAc;IAC9B,QAAQ,WAAW,EAAE,GAAG;IACxB,QAAQ,aAAa,EAAE,OAAO;IAC9B,QAAQ,cAAc,EAAE,OAAO;IAC/B,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE;IAC7B,QAAQ,CAAC,EAAE,mDAAmD;IAC9D,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE,SAAS;IAC/O,QAAQ,aAAa,CAAC,KAAK,EAAE;IAC7B,YAAY,KAAK,EAAE;IACnB,gBAAgB,YAAY,EAAE,MAAM;IACpC,gBAAgB,KAAK,EAAE,SAAS;IAChC,gBAAgB,QAAQ,EAAE,MAAM;IAChC,gBAAgB,OAAO,EAAE,MAAM;IAC/B,gBAAgB,UAAU,EAAE,QAAQ;IACpC,gBAAgB,GAAG,EAAE,KAAK;IAC1B,aAAa;IACb,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE;IAChC,YAAY,KAAK,EAAE,IAAI;IACvB,YAAY,MAAM,EAAE,IAAI;IACxB,YAAY,OAAO,EAAE,WAAW;IAChC,YAAY,IAAI,EAAE,MAAM;IACxB,YAAY,MAAM,EAAE,cAAc;IAClC,YAAY,WAAW,EAAE,GAAG;IAC5B,YAAY,aAAa,EAAE,OAAO;IAClC,YAAY,cAAc,EAAE,OAAO;IACnC,SAAS,EAAE,aAAa,CAAC,MAAM,EAAE;IACjC,YAAY,CAAC,EAAE,4DAA4D;IAC3E,SAAS,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,OAAO;IACzG,QAAQ,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK;IACtL,YAAY,MAAM,iBAAiB,GAAG,SAAS,GAAG,KAAK;IACvD,YAAY,MAAM,WAAW,GAAG,iBAAiB,KAAK,SAAS;IAC/D,YAAY,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE;IAC7G,gBAAgB,KAAK,EAAE;IACvB,oBAAoB,KAAK,EAAE,SAAS;IACpC,oBAAoB,KAAK,EAAE,MAAM;IACjC,oBAAoB,UAAU,EAAE,MAAM;IACtC,oBAAoB,SAAS,EAAE,OAAO;IACtC,oBAAoB,WAAW,EAAE,MAAM;IACvC,oBAAoB,OAAO,EAAE,cAAc;IAC3C,iBAAiB;IACjB,aAAa,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE;IACzD,gBAAgB,KAAK,EAAE;IACvB,oBAAoB,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAC9D,oBAAoB,UAAU,EAAE,KAAK;IACrC,iBAAiB;IACjB,aAAa,EAAE,QAAQ,IAAI,GAAG,CAAC,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,GAAG,EAAE;IAC3F,QAAQ,KAAK,EAAE;IACf,YAAY,KAAK,EAAE,SAAS;IAC5B,YAAY,QAAQ,EAAE,MAAM;IAC5B,YAAY,YAAY,EAAE,KAAK;IAC/B,YAAY,UAAU,EAAE,GAAG;IAC3B,YAAY,aAAa,EAAE,WAAW;IACtC,YAAY,aAAa,EAAE,QAAQ;IACnC,SAAS;IACT,KAAK,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,UAAU,CAAC,MAAM,GAAG;IACjG,UAAU,aAAa,CAAC,IAAI,EAAE;IAC9B,YAAY,KAAK,EAAE;IACnB,gBAAgB,SAAS,EAAE,MAAM;IACjC,gBAAgB,OAAO,EAAE,CAAC;IAC1B,gBAAgB,MAAM,EAAE,CAAC;IACzB,gBAAgB,OAAO,EAAE,MAAM;IAC/B,gBAAgB,aAAa,EAAE,QAAQ;IACvC,gBAAgB,GAAG,EAAE,MAAM;IAC3B,aAAa;IACb,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;IAC1C,YAAY,IAAI,CAAC,KAAK,CAAC;IACvB,iBAAiB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC1C,oBAAoB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClD,gBAAgB,OAAO,IAAI;IAC3B,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;IACvC,YAAY,IAAI,MAAM,GAAG,aAAa;IACtC,YAAY,IAAI,QAAQ,GAAG,IAAI;IAC/B,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;IAC3C,gBAAgB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACnD,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACxD,gBAAgB,IAAI,SAAS,KAAK,EAAE,IAAI,UAAU,GAAG,SAAS,EAAE;IAChE,oBAAoB,MAAM;IAC1B,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,aAAa;IACxE,oBAAoB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC;IACpE,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC5C,wBAAwB,MAAM,GAAG,aAAa;IAC9C,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,MAAM,GAAG,IAAI;IACrC,oBAAoB;IACpB,oBAAoB,QAAQ,GAAG,IAAI;IACnC,gBAAgB;IAChB,YAAY;IACZ,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC5C,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IAClD,gBAAgB,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,aAAa;IACjE,gBAAgB,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACnD,YAAY;IACZ,iBAAiB;IACjB,gBAAgB,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IACnE,gBAAgB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IAClD,gBAAgB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;IACvC,oBAAoB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D,oBAAoB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1D,oBAAoB,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ;IAC/F,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;IACzE,wBAAwB,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7D,wBAAwB,QAAQ,GAAG,QAAQ;IAC3C,oBAAoB;IACpB,yBAAyB;IACzB,wBAAwB,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IACzC,wBAAwB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,YAAY,OAAO,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;IACzJ,gBAAgB,KAAK,EAAE;IACvB,oBAAoB,KAAK,EAAE,SAAS;IACpC,oBAAoB,SAAS,EAAE,KAAK;IACpC,oBAAoB,WAAW,EAAE,MAAM;IACvC,oBAAoB,OAAO,EAAE,MAAM;IACnC,oBAAoB,UAAU,EAAE,QAAQ;IACxC,oBAAoB,GAAG,EAAE,KAAK;IAC9B,iBAAiB;IACjB,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE;IACpC,gBAAgB,KAAK,EAAE,IAAI;IAC3B,gBAAgB,MAAM,EAAE,IAAI;IAC5B,gBAAgB,OAAO,EAAE,WAAW;IACpC,gBAAgB,IAAI,EAAE,MAAM;IAC5B,gBAAgB,MAAM,EAAE,cAAc;IACtC,gBAAgB,WAAW,EAAE,GAAG;IAChC,gBAAgB,aAAa,EAAE,OAAO;IACtC,gBAAgB,cAAc,EAAE,OAAO;IACvC,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE;IACrC,gBAAgB,CAAC,EAAE,4DAA4D;IAC/E,aAAa,CAAC,EAAE,aAAa,CAAC,UAAU,EAAE;IAC1C,gBAAgB,MAAM,EAAE,gBAAgB;IACxC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3B,QAAQ,CAAC,CAAC;IACV,UAAU,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtH;;AC3YY,UAAC,yBAAyB,GAAG;AAC7B,UAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM;IACpD,SAAS,qBAAqB,CAAC,OAAO,GAAG,EAAE,EAAE;IACpD,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,yBAAyB;IACtE,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM;IACvD,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM;IACjD,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACrE,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC1E,IAAI,MAAM,cAAc,GAAG,MAAM;IACjC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;IAC3C,YAAY,OAAO,IAAI;IACvB,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC9G,QAAQ,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IACtC,IAAI,CAAC;IACL,IAAI,MAAM,cAAc,GAAG,CAAC,KAAK,KAAK;IACtC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACxE,YAAY;IACZ,QAAQ,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,aAAa,CAAC,cAAc,CAAC;IAClG,IAAI,CAAC;IACL,IAAI,MAAM,sBAAsB,GAAG,MAAM,cAAc,EAAE,IAAI,YAAY;IACzE,IAAI,MAAM,oBAAoB,GAAG,MAAM;IACvC,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW;IACzC,YAAY,OAAO,MAAM;IACzB,QAAQ,OAAO,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;IACjE,cAAc;IACd,cAAc,OAAO;IACrB,IAAI,CAAC;IACL,IAAI,MAAM,qBAAqB,GAAG,CAAC,KAAK,KAAK;IAC7C,QAAQ,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY;IACtE,QAAQ,IAAI,MAAM,KAAK,QAAQ;IAC/B,YAAY,OAAO,oBAAoB,EAAE;IACzC,QAAQ,OAAO,MAAM;IACrB,IAAI,CAAC;IACL,IAAI,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;IAClC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;IAC3C,YAAY;IACZ,QAAQ,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY;IAC1E,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC;IAC3D,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe;IAC7C,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,KAAK,MAAM,CAAC;IAC9D,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,UAAU;IACvC,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS;IAC/C,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;IACxE,IAAI,CAAC;IACL,IAAI,MAAM,aAAa,GAAG,MAAM,CAAC,wDAAwD,EAAE,UAAU,CAAC,4CAA4C,EAAE,YAAY,CAAC,oJAAoJ,EAAE,SAAS,CAAC,iKAAiK,EAAE,SAAS,CAAC,SAAS,CAAC;IACxf,IAAI,MAAM,gBAAgB,GAAG,CAAC,QAAQ,KAAK;IAC3C,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW;IACzC,YAAY,OAAO,MAAM,EAAE,CAAC;IAC5B,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC;IACvE,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IAC9D,QAAQ,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACjD,QAAQ,OAAO,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACjE,IAAI,CAAC;IACL,IAAI,OAAO;IACX,QAAQ,UAAU;IAClB,QAAQ,YAAY;IACpB,QAAQ,MAAM,EAAE,iBAAiB;IACjC,QAAQ,cAAc;IACtB,QAAQ,cAAc;IACtB,QAAQ,sBAAsB;IAC9B,QAAQ,oBAAoB;IAC5B,QAAQ,qBAAqB;IAC7B,QAAQ,UAAU;IAClB,QAAQ,aAAa;IACrB,QAAQ,gBAAgB;IACxB,KAAK;IACL;AACY,UAAC,eAAe,GAAG,qBAAqB;AACxC,UAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,UAAU,EAAE,gBAAgB,GAAG,GAAG;AAC/L,UAAC,eAAe,GAAG,eAAe,CAAC,aAAa;;IClE5D,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,aAAa,CAAC,KAAK,EAAE;IAC7D,IAAI,KAAK,EAAE,4BAA4B;IACvC,IAAI,OAAO,EAAE,WAAW;IACxB,IAAI,IAAI,EAAE,MAAM;IAChB,IAAI,MAAM,EAAE,cAAc;IAC1B,IAAI,WAAW,EAAE,IAAI;IACrB,IAAI,aAAa,EAAE,OAAO;IAC1B,IAAI,cAAc,EAAE,OAAO;IAC3B,IAAI,SAAS;IACb,IAAI,aAAa,EAAE,IAAI;IACvB,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE;IAC5E,IAAI,CAAC,EAAE,oHAAoH;IAC3H,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,aAAa,CAAC,KAAK,EAAE;IACjE,IAAI,KAAK,EAAE,4BAA4B;IACvC,IAAI,OAAO,EAAE,WAAW;IACxB,IAAI,IAAI,EAAE,MAAM;IAChB,IAAI,MAAM,EAAE,cAAc;IAC1B,IAAI,WAAW,EAAE,IAAI;IACrB,IAAI,aAAa,EAAE,OAAO;IAC1B,IAAI,cAAc,EAAE,OAAO;IAC3B,IAAI,SAAS;IACb,IAAI,aAAa,EAAE,IAAI;IACvB,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACxH,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,aAAa,CAAC,KAAK,EAAE;IAC9D,IAAI,KAAK,EAAE,4BAA4B;IACvC,IAAI,OAAO,EAAE,WAAW;IACxB,IAAI,IAAI,EAAE,MAAM;IAChB,IAAI,MAAM,EAAE,cAAc;IAC1B,IAAI,WAAW,EAAE,IAAI;IACrB,IAAI,aAAa,EAAE,OAAO;IAC1B,IAAI,cAAc,EAAE,OAAO;IAC3B,IAAI,SAAS;IACb,IAAI,aAAa,EAAE,IAAI;IACvB,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE;IACzB,IAAI,CAAC,EAAE,oCAAoC;IAC3C,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG;IACd,IAAI,KAAK,EAAE,OAAO;IAClB,IAAI,MAAM,EAAE,WAAW;IACvB,IAAI,IAAI,EAAE,QAAQ;IAClB,CAAC;IACM,SAAS,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,UAAU,GAAG,eAAe,GAAG,EAAE;IACvF,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;IAC/D,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,sBAAsB,EAAE;IACzD,QAAQ,QAAQ,CAAC,KAAK,CAAC;IACvB,QAAQ,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;IACpC,IAAI,CAAC,EAAE,EAAE,CAAC;IACV,IAAI,SAAS,CAAC,MAAM;IACpB,QAAQ,IAAI,KAAK,KAAK,QAAQ;IAC9B,YAAY,OAAO,SAAS;IAC5B,QAAQ,OAAO,UAAU,CAAC,gBAAgB,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjF,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,MAAM,WAAW,GAAG,CAAC,IAAI,KAAK;IAClC,QAAQ,IAAI,IAAI,KAAK,KAAK;IAC1B,YAAY;IACZ,QAAQ,QAAQ,CAAC,IAAI,CAAC;IACtB,QAAQ,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;IACvC,QAAQ,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC;IACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;IAChC,QAAQ,SAAS,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;IAC1D,QAAQ,IAAI,EAAE,YAAY;IAC1B,QAAQ,YAAY,EAAE,MAAM,CAAC,KAAK;IAClC,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK;IACxC,QAAQ,MAAM,MAAM,GAAG,KAAK,KAAK,EAAE;IACnC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,OAAO,aAAa,CAAC,QAAQ,EAAE;IACvC,YAAY,GAAG,EAAE,EAAE;IACnB,YAAY,IAAI,EAAE,QAAQ;IAC1B,YAAY,IAAI,EAAE,OAAO;IACzB,YAAY,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IACrD,YAAY,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7B,YAAY,SAAS,EAAE,CAAC,qBAAqB,EAAE,MAAM,GAAG,gCAAgC,GAAG,EAAE,CAAC,CAAC;IAC/F,YAAY,OAAO,EAAE,MAAM,WAAW,CAAC,EAAE,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACxI,IAAI,CAAC,CAAC,CAAC;IACP;IACO,SAAS,eAAe,CAAC,EAAE,UAAU,GAAG,eAAe,GAAG,GAAG,EAAE,EAAE;IACxE,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE;IACnC,QAAQ,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,EAAE;IACvE,KAAK,CAAC;IACN;;ICpFA,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK;IAChH,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;IACxB,QAAQ,OAAO,IAAI;IACnB,IAAI,MAAM,OAAO,GAAG;IACpB,QAAQ;IACR,cAAc,aAAa,CAAC,KAAK,EAAE;IACnC,gBAAgB,GAAG,EAAE,KAAK;IAC1B,gBAAgB,GAAG,EAAE,QAAQ,IAAI,KAAK,IAAI,EAAE;IAC5C,gBAAgB,SAAS,EAAE,UAAU;IACrC,aAAa;IACb,cAAc,IAAI;IAClB,QAAQ,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI;IAC9E,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IACrB,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;IAC1H,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,QAAQ,KAAK;IACrC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,KAAK;IAC9C,QAAQ,OAAO,EAAE;IACjB,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;IAC5H,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,QAAQ,KAAK;IAC5C,IAAI,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC;IAC1C,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;IAC1B,QAAQ,OAAO,IAAI;IACnB,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC;IACxD,CAAC;IACM,SAAS,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;IACnF,IAAI,MAAM,UAAU,GAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK;IACxD,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IACzD,UAAU,SAAS;IACnB,IAAI,OAAO,aAAa,CAAC,MAAM,EAAE;IACjC,QAAQ,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;IACjD,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5B,QAAQ,SAAS,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;IAC5D,QAAQ,KAAK,EAAE,UAAU;IACzB,KAAK,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpC;IACO,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE;IACzG,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,YAAY;IACpB,QAAQ,MAAM,KAAK,KAAK,GAAG,oBAAoB,GAAG,EAAE;IACpD,QAAQ,SAAS;IACjB;IACA,SAAS,MAAM,CAAC,OAAO;IACvB,SAAS,IAAI,CAAC,GAAG,CAAC;IAClB,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE;IACnC,QAAQ,SAAS,EAAE,WAAW;IAC9B,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,WAAW,CAAC;IACnI,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,QAAQ,QAAQ;IAChB,QAAQ,UAAU,EAAE,kBAAkB;IACtC,QAAQ,SAAS,EAAE,uBAAuB;IAC1C,QAAQ,UAAU,EAAE,wBAAwB;IAC5C,QAAQ,UAAU,EAAE,wBAAwB;IAC5C,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjD;IACO,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,GAAG,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,GAAG,EAAE;IAC/H,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC;IAC9B,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb,QAAQ,IAAI;IACZ,QAAQ,QAAQ;IAChB,QAAQ,UAAU,EAAE,kBAAkB;IACtC,QAAQ,SAAS,EAAE,uBAAuB;IAC1C,QAAQ,UAAU,EAAE,wBAAwB;IAC5C,QAAQ,UAAU,EAAE,wBAAwB;IAC5C,KAAK,CAAC;IACN,IAAI,MAAM,WAAW,GAAG,KAAK,IAAI;IACjC,UAAU,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE;IAChF,cAAc,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,EAAE,WAAW;IACrF,cAAc,IAAI;IAClB,UAAU,IAAI;IACd,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/I,IAAI,MAAM,eAAe,GAAG,UAAU,CAAC,yBAAyB,EAAE,WAAW,CAAC;IAC9E,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,uBAAuB,EAAE,SAAS,CAAC;IACxE,IAAI,MAAM,SAAS,GAAG,eAAe,IAAI;IACzC,UAAU,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,eAAe,EAAE,aAAa;IACjG,UAAU,IAAI;IACd,IAAI,OAAO,aAAa,CAAC,QAAQ,EAAE;IACnC,QAAQ,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;IACnD,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5B,QAAQ,SAAS,EAAE,mBAAmB;IACtC,QAAQ,aAAa,EAAE,MAAM;IAC7B,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;IAC7B,QAAQ,SAAS,EAAE,iBAAiB;IACpC,QAAQ,aAAa,EAAE,MAAM;IAC7B,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG;IAChG,UAAU,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,GAAG,OAAO;IACxF,UAAU,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3B;;IC7FO,SAAS,mBAAmB,GAAG;IACtC,IAAI,IAAI;IACR,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;IACxC,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC/E,YAAY,OAAO,KAAK;IACxB,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM;IACV,IAAI;IACJ,IAAI,OAAO,IAAI;IACf;;ICVO,SAAS,cAAc,CAAC,QAAQ,EAAE;IACzC,IAAI,OAAO,QAAQ;IACnB;IACO,SAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE;IAC7C,IAAI,IAAI,CAAC,IAAI;IACb,QAAQ,OAAO,SAAS;IACxB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,IAAI,IAAI,IAAI,GAAG,IAAI;IACnB,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IAC9B,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;IACpD,YAAY,OAAO,SAAS;IAC5B,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,IAAI;IACJ,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS;IACtD;IACO,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;IAChD,IAAI,IAAI,CAAC,MAAM;IACf,QAAQ,OAAO,QAAQ;IACvB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,EAAEC,cAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;IACtK;IACA,SAASA,cAAY,CAAC,KAAK,EAAE;IAC7B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvD;;ICtBO,SAAS,mBAAmB,CAAC,MAAM,EAAE;IAC5C,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;IAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;IACzE,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa;IAC/D,UAAU,MAAM,CAAC;IACjB,UAAU,OAAO,CAAC,CAAC,CAAC;IACpB,IAAI,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;IAChD;IACO,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;IACrD,IAAI,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,MAAM,GAAG,QAAQ,CAAC;IACjD;IACO,SAAS,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE;IACrD,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;IAC5D,QAAQ,OAAO,IAAI;IACnB,IAAI,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAACA,cAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACjF,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;IACzC,IAAI,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IAClC;IACO,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE;IACvD,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;IAC3E,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACjC,QAAQ,OAAO,UAAU,IAAI,GAAG;IAChC,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG;IACzC,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3B,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;IACpC;IACO,SAAS,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE;IAChE,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;IAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IACvC,QAAQ,OAAO,QAAQ;IACvB,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACxD,IAAI,IAAI,OAAO,EAAE;IACjB,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE;IAC7D,QAAQ,OAAO,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC;IACtD,IAAI;IACJ,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;IAClC,QAAQ,OAAO,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC1D,IAAI;IACJ,IAAI,OAAO,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC;IAChD;IACA,SAASA,cAAY,CAAC,KAAK,EAAE;IAC7B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvD;;ACvCY,UAAC,0BAA0B,GAAG;IAC1C,SAAS,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE;IACjE,IAAI,MAAM,OAAO,GAAG,MAAM,KAAK,KAAK;IACpC,IAAI,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE;IACjE,IAAI,OAAO;IACX,QAAQ,OAAO;IACf,QAAQ,UAAU,EAAE,UAAU,IAAI,YAAY,CAAC,IAAI,IAAI,0BAA0B;IACjF,QAAQ,aAAa,EAAE,aAAa,IAAI,YAAY,CAAC,aAAa,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;IACxF,KAAK;IACL;IACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;IACnC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACrC,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO;IAChC,QAAQ,aAAa,EAAE,OAAO,CAAC,aAAa;IAC5C,KAAK,CAAC;IACN,IAAI,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC;IAClG,IAAI,MAAM,YAAY,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE;IACpD,IAAI,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;IACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACjC,YAAY,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE;IACvD,IAAI;IACJ,IAAI,OAAO;IACX,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;IAC7B,QAAQ,aAAa,EAAE,IAAI,CAAC,aAAa;IACzC,QAAQ,YAAY;IACpB,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU;IACrC,QAAQ,aAAa,EAAE,MAAM,CAAC,aAAa;IAC3C,QAAQ,aAAa,EAAE,MAAM,CAAC,OAAO;IACrC,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;IACxC,KAAK;IACL;IACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;IAC1D,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,KAAK;IAC5B,QAAQ,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAC9D,YAAY,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC;IAC3D,YAAY,GAAG;IACf,QAAQ,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAC3C,IAAI,CAAC;IACL;IACO,SAAS,UAAU,CAAC,OAAO,EAAE;IACpC,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC5C,IAAI,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,aAAa,EAAE;IACvF,QAAQ,MAAM,EAAE,MAAM,CAAC,aAAa;IACpC,QAAQ,aAAa,EAAE,MAAM,CAAC,aAAa;IAC3C,QAAQ,OAAO,EAAE,MAAM,CAAC,OAAO;IAC/B,QAAQ,YAAY,EAAE,MAAM,CAAC,YAAY;IACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG;IACvB,KAAK,CAAC;IACN,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3F,IAAI,MAAM,eAAe,GAAG,MAAM;IAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,QAAQ,KAAK,WAAW;IACpE,YAAY,OAAO,IAAI;IACvB,QAAQ,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5H,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IACpD,QAAQ,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;IACtC,IAAI,CAAC;IACL,IAAI,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK;IACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa;IACjC,YAAY,OAAO,QAAQ,KAAK,WAAW;IAC3C,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7B,YAAY;IACZ,QAAQ,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC;IACjH,IAAI,CAAC;IACL,IAAI,MAAM,uBAAuB,GAAG,MAAM,eAAe,EAAE,IAAI,MAAM,CAAC,aAAa;IACnF,IAAI,MAAM,uBAAuB,GAAG,MAAM;IAC1C,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa;IACjC,YAAY,OAAO,EAAE;IACrB,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzE,QAAQ,OAAO,CAAC,wDAAwD,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,CAAC,yBAAyB,EAAE,MAAM,CAAC,aAAa,CAAC,+CAA+C,EAAE,cAAc,CAAC,gFAAgF,CAAC;IAChT,IAAI,CAAC;IACL,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK;IAChD,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa;IACzE,QAAQ,MAAM,KAAK,GAAG;IACtB,YAAY,MAAM,EAAE,QAAQ;IAC5B,YAAY,aAAa,EAAE,MAAM,CAAC,aAAa;IAC/C,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;IACnC,YAAY,YAAY,EAAE,MAAM,CAAC,YAAY;IAC7C,YAAY,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC;IAC/E,SAAS;IACT,QAAQ,OAAO,aAAa,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtE,IAAI,CAAC;IACL,IAAI,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE;IACtC,IAAI,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC,MAAM;IAC5C,IAAI,MAAM,eAAe,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,IAAI,MAAM,cAAc,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK;IACnD,QAAQ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE;IAClD,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IACpE,QAAQ,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK;IACrC,YAAY,IAAI,MAAM,KAAK,OAAO;IAClC,gBAAgB;IAChB,YAAY,eAAe,CAAC,MAAM,CAAC;IACnC,YAAY,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC1D,gBAAgB,OAAO;IACvB,gBAAgB,aAAa,EAAE,MAAM,CAAC,aAAa;IACnD,aAAa,CAAC;IACd,YAAY,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC;IACT,QAAQ,OAAO,aAAa,CAAC,KAAK,EAAE;IACpC,YAAY,SAAS,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;IACnE,YAAY,IAAI,EAAE,OAAO;IACzB,YAAY,YAAY,EAAE,UAAU;IACpC,YAAY,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,QAAQ,EAAE;IACtE,gBAAgB,GAAG,EAAE,MAAM;IAC3B,gBAAgB,IAAI,EAAE,QAAQ;IAC9B,gBAAgB,OAAO,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC;IAC/C,gBAAgB,SAAS,EAAE,MAAM,KAAK;IACtC,sBAAsB;IACtB,sBAAsB,6BAA6B;IACnD,gBAAgB,cAAc,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS;IACvE,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;IAC/C,SAAS,CAAC;IACV,IAAI,CAAC;IACL,IAAI,OAAO;IACX,QAAQ,MAAM;IACd,QAAQ,QAAQ;IAChB,QAAQ,OAAO;IACf,QAAQ,SAAS;IACjB,QAAQ,eAAe;IACvB,QAAQ,cAAc;IACtB,QAAQ,oBAAoB;IAC5B,QAAQ,iBAAiB,EAAE,CAAC,QAAQ,KAAK,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACpF,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;IACnF,QAAQ,cAAc,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE;IAC3F,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;IACnC,YAAY,aAAa,EAAE,MAAM,CAAC,aAAa;IAC/C,SAAS,CAAC;IACV,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;IACxF,QAAQ,eAAe;IACvB,QAAQ,eAAe;IACvB,QAAQ,uBAAuB;IAC/B,QAAQ,uBAAuB;IAC/B,KAAK;IACL;IACO,SAAS,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE;IAClD,IAAI,MAAM,UAAU,GAAG,mBAAmB,EAAE,IAAI,QAAQ;IACxD,IAAI,IAAI,CAAC,UAAU,EAAE;IACrB,QAAQ,MAAM,IAAI,KAAK,CAAC,wKAAwK,CAAC;IACjM,IAAI;IACJ,IAAI,OAAO,UAAU,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,CAAC;IAClD;IACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE;IACvD,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC;IACxF,IAAI;IACJ,IAAI,OAAO,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9C;IACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC7B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxJK,UAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAAC,YAAY,EAAE,EAAE;AACzF,UAAC,gBAAgB,GAAG,CAAC,UAAU,KAAK;IACzC,IAAI,MAAM,iBAAiB,GAAG,gBAAgB,EAAE;IAChD,IAAI,OAAO;IACX,QAAQ,GAAG,iBAAiB;IAC5B,QAAQ,GAAG,UAAU;IACrB,KAAK;IACL;IACA,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,MAAM;AACrG,UAAC,QAAQ,GAAG,CAAC,KAAK,KAAK;IAC5B,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK;IACvC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE;IAC/C,QAAQ,OAAO,EAAE,GAAG,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE;IACrD,IAAI;IACJ,IAAI,OAAO,IAAI;IACf;IACA,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK;IAC3C,IAAI,IAAI,CAAC,QAAQ;IACjB,QAAQ,OAAO,IAAI;IACnB,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,QAAQ,OAAO,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5C,IAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,KAAK;IAChD,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE;IACzE,QAAQ,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC;IACvC,IAAI;IACJ,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE;IAC9B,QAAQ,GAAG,IAAI;IACf,QAAQ,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3D,KAAK,CAAC;IACN,CAAC;AACI,UAAC,iBAAiB,GAAG;IAC1B,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;IACnE,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;IAC7D,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,UAAU,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC;IAC/E,IAAI,GAAG,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IAC1D,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,KAAK,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC;IAChE,IAAI,KAAK,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC;IAChE,IAAI,KAAK,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC;IAChE,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC;IACvD,IAAI,GAAG,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IAC1D;AACK,UAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,KAAK;IACrC,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;IAClD;AACK,UAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,KAAK;IACvD,IAAI,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC;IACzD,IAAI,OAAO,aAAa,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxG;;IChEA,IAAI,OAAO,MAAM,KAAK,WAAW;IACjC,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|