@reckona/mreact-compiler 0.0.96 → 0.0.98
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/diagnostics.d.ts +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +8 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/emit-client.js +14 -9
- package/dist/emit-client.js.map +1 -1
- package/dist/emit-compat.js +5 -1
- package/dist/emit-compat.js.map +1 -1
- package/dist/emit-server-stream.d.ts.map +1 -1
- package/dist/emit-server-stream.js +70 -6
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.d.ts.map +1 -1
- package/dist/emit-server.js +69 -13
- package/dist/emit-server.js.map +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +7 -4
- package/dist/internal.js.map +1 -1
- package/dist/ir.d.ts +1 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/oxc-child-analysis.d.ts.map +1 -1
- package/dist/oxc-child-analysis.js +44 -10
- package/dist/oxc-child-analysis.js.map +1 -1
- package/dist/oxc-component-detection.d.ts +5 -2
- package/dist/oxc-component-detection.d.ts.map +1 -1
- package/dist/oxc-component-detection.js +80 -3
- package/dist/oxc-component-detection.js.map +1 -1
- package/dist/oxc-component-props.d.ts +1 -1
- package/dist/oxc-component-props.d.ts.map +1 -1
- package/dist/oxc-component-props.js +1 -1
- package/dist/oxc-component-props.js.map +1 -1
- package/dist/oxc-component-references.d.ts.map +1 -1
- package/dist/oxc-component-references.js +247 -12
- package/dist/oxc-component-references.js.map +1 -1
- package/dist/oxc-runtime-emit.d.ts.map +1 -1
- package/dist/oxc-runtime-emit.js +10 -2
- package/dist/oxc-runtime-emit.js.map +1 -1
- package/dist/oxc.d.ts.map +1 -1
- package/dist/oxc.js +109 -20
- package/dist/oxc.js.map +1 -1
- package/dist/transform.js +29 -11
- package/dist/transform.js.map +1 -1
- package/package.json +2 -2
- package/src/diagnostics.ts +10 -0
- package/src/emit-client.ts +20 -10
- package/src/emit-compat.ts +6 -1
- package/src/emit-server-stream.ts +96 -6
- package/src/emit-server.ts +93 -29
- package/src/internal.ts +9 -4
- package/src/ir.ts +1 -0
- package/src/oxc-child-analysis.ts +66 -21
- package/src/oxc-component-detection.ts +145 -2
- package/src/oxc-component-props.ts +2 -1
- package/src/oxc-component-references.ts +366 -11
- package/src/oxc-runtime-emit.ts +12 -2
- package/src/oxc.ts +167 -5
- package/src/transform.ts +42 -10
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModuleIr } from \"./ir.js\";\nimport {\n analyzeCompilerModuleContextWithOxc,\n analyzeWithOxc,\n} from \"./oxc.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nexport { transformCompilerModuleContext } from \"./transform.js\";\nexport { stripTypeScriptWithOxc } from \"./oxc-transform.js\";\nexport type { CompilerModuleContext } from \"./compiler-module-context.js\";\nimport type {\n AnalyzeModuleOptions,\n CompileTarget,\n Diagnostic,\n} from \"./types.js\";\n\nexport interface AnalyzeToIrInput {\n code: string;\n filename: string;\n target: CompileTarget;\n options?: AnalyzeModuleOptions;\n}\n\nexport interface AnalyzeToIrOutput {\n ir: ModuleIr;\n diagnostics: Diagnostic[];\n usedTypescriptFallback?: boolean;\n}\n\nexport interface StaticImportReference {\n localNames: string[];\n sideEffect: boolean;\n source: string;\n}\n\nexport interface StaticImportSpecifierReference {\n importedName: string;\n kind: \"default\" | \"named\" | \"namespace\";\n localName: string;\n}\n\nexport interface ClientRouteStaticImportReference extends StaticImportReference {\n specifiers: StaticImportSpecifierReference[];\n}\n\nexport interface StaticExportReference {\n exportedNames: string[];\n exportAll: boolean;\n specifiers: StaticExportSpecifierReference[];\n source: string;\n}\n\nexport interface StaticExportSpecifierReference {\n exportedName: string;\n localName: string;\n}\n\nexport interface TopLevelExportRenderInfo {\n calledComponentRoots: string[];\n clientRuntime: boolean;\n name: string;\n renderedComponentRoots: string[];\n}\n\nexport interface ClientRouteModuleAnalysis {\n clientRuntime: boolean;\n defaultExportIdentifier: string | undefined;\n hasUseClientDirective: boolean;\n hasUseServerDirective: boolean;\n componentCallRoots: string[];\n identifierReferences: string[];\n jsxComponentRoots: string[];\n reachableExportRenderedComponentNames: Record<string, string[]>;\n reachableExportRenderedComponentRoots: Record<string, string[]>;\n reachableRenderedComponentNames: string[];\n reachableRenderedComponentRoots: string[];\n staticExports: StaticExportReference[];\n staticImports: ClientRouteStaticImportReference[];\n topLevelExportRenderInfo: TopLevelExportRenderInfo[];\n}\n\nexport interface FormActionReference {\n end: number;\n name: string;\n start: number;\n}\n\nexport interface FormActionExpressionReference {\n end: number;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n start: number;\n}\n\ninterface ComponentAliasState {\n aliases: Map<string, string>;\n stringConstants: Map<string, string>;\n}\n\nexport function analyzeToIr(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeWithOxc(input);\n}\n\nexport function analyzeCompilerModuleContextToIr(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(context, input);\n}\n\nexport function createCompilerModuleContext(input: {\n code: string;\n filename?: string | undefined;\n}): CompilerModuleContext {\n return createCompilerModuleContextWithOxc(input);\n}\n\nexport function hasTopLevelExportDeclaration(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): boolean {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).some((statement) =>\n exportedNames(statement).some((name) => names.has(name)),\n );\n}\n\n// Reads the value of a top-level `export const <name> = <boolean literal>`\n// declaration. Returns `undefined` when the export is absent or not a boolean\n// literal. AST-based so commented-out or string-literal occurrences of the same\n// text are not mistaken for a real export.\nexport function readTopLevelBooleanExport(input: {\n code: string;\n filename?: string | undefined;\n name: string;\n}): boolean | undefined {\n return readTopLevelBooleanExportFromContext(\n createCompilerModuleContext({ code: input.code, filename: input.filename }),\n input.name,\n );\n}\n\n// Context-accepting variant so callers with a cached `CompilerModuleContext`\n// (e.g. the dev server) avoid re-parsing the module per request.\nexport function readTopLevelBooleanExportFromContext(\n context: CompilerModuleContext,\n name: string,\n): boolean | undefined {\n const parsed = parseModuleContext(context);\n\n for (const statement of programBody(parsed.program)) {\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration?.type !== \"VariableDeclaration\") {\n continue;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n if (typeof id?.name !== \"string\" || id.name !== name) {\n continue;\n }\n\n const value = booleanExpressionValue(readOptionalObject(declarator.init));\n if (value !== undefined) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction booleanExpressionValue(node: Record<string, unknown> | undefined): boolean | undefined {\n if (\n (node?.type === \"BooleanLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"boolean\"\n ) {\n return node.value;\n }\n\n if (\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return booleanExpressionValue(readOptionalObject(node.expression));\n }\n\n return undefined;\n}\n\nexport function stripTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationReplacement(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function demoteTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationDemotion(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function stripUnusedStaticValueImports(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n const parsed = parseModule(input.code, input.filename);\n const referencedNames = new Set(collectIdentifierReferenceNames(input));\n const replacements = programBody(parsed.program)\n .map((statement) =>\n unusedStaticValueImportReplacement(input.code, statement, referencedNames),\n )\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function collectStaticModuleSpecifiers(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticModuleSpecifier);\n}\n\nexport function collectStaticImportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticImportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticImportReference);\n}\n\nexport function collectStaticExportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticExportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticExportReference);\n}\n\nexport function collectJsxComponentRootNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n const aliasState = createComponentAliasState();\n\n collectJsxComponentRootNamesFromNode(parsed.program, names);\n collectSimpleComponentAliasesFromNode(parsed.program, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nexport function collectIdentifierReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, names);\n return Array.from(names).sort();\n}\n\nexport function collectFormActionReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n return Array.from(\n new Set(collectFormActionReferences(input).map((reference) => reference.name)),\n ).sort();\n}\n\nexport function collectFormActionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionReference[] = [];\n\n collectFormActionReferencesFromNode(parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start ? left.name.localeCompare(right.name) : left.start - right.start,\n );\n}\n\nexport function collectFormActionExpressionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionExpressionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionExpressionReference[] = [];\n\n collectFormActionExpressionReferencesFromNode(input.code, parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start\n ? left.expression.localeCompare(right.expression)\n : left.start - right.start,\n );\n}\n\nexport function collectTopLevelValueExportNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n for (const statement of programBody(parsed.program)) {\n for (const name of exportedNames(statement)) {\n names.add(name);\n }\n }\n\n return Array.from(names).sort();\n}\n\nexport function collectTopLevelExportRenderInfo(input: {\n code: string;\n filename?: string | undefined;\n}): TopLevelExportRenderInfo[] {\n const parsed = parseModule(input.code, input.filename);\n\n return collectTopLevelExportRenderInfoFromProgram(parsed.program);\n}\n\nexport function collectClientRouteModuleAnalysis(input: {\n code: string;\n filename?: string | undefined;\n}): ClientRouteModuleAnalysis {\n const parsed = parseModule(input.code, input.filename);\n\n return collectClientRouteModuleAnalysisFromContext(parsed);\n}\n\nexport function collectClientRouteModuleAnalysisFromContext(\n context: CompilerModuleContext,\n): ClientRouteModuleAnalysis {\n const parsed = parseModuleContext(context);\n const body = programBody(parsed.program);\n const identifierReferences = new Set<string>();\n const reachableRenderedComponents = collectReachableExportRenderedComponentsFromProgram(\n parsed.program,\n );\n\n collectIdentifierReferenceNamesFromNode(parsed.program, identifierReferences);\n\n return {\n clientRuntime: hasClientRuntimeSyntaxNode(parsed.program),\n defaultExportIdentifier: reachableRenderedComponents.defaultExportIdentifier,\n componentCallRoots: collectComponentCallRootNamesFromSubtree(parsed.program),\n hasUseClientDirective: hasModuleDirectiveInProgram(parsed.program, \"use client\"),\n hasUseServerDirective: hasModuleDirectiveInProgram(parsed.program, \"use server\"),\n identifierReferences: Array.from(identifierReferences).sort(),\n jsxComponentRoots: collectJsxComponentRootNamesFromSubtree(parsed.program),\n reachableExportRenderedComponentNames: reachableRenderedComponents.perExportNames,\n reachableExportRenderedComponentRoots: reachableRenderedComponents.perExportRoots,\n reachableRenderedComponentNames: reachableRenderedComponents.names,\n reachableRenderedComponentRoots: reachableRenderedComponents.roots,\n staticExports: body.flatMap(staticExportReference),\n staticImports: body.flatMap(staticImportReference),\n topLevelExportRenderInfo: collectTopLevelExportRenderInfoFromProgram(parsed.program),\n };\n}\n\ninterface ModuleExportMap {\n aliasState: ComponentAliasState;\n declarations: Map<string, unknown>;\n // Local name when the default export is a bare identifier\n // (`export default Page`), including when that identifier is an import\n // binding. Such an identifier is the route's rendered component even though\n // the module body contains no JSX for it.\n defaultExportIdentifier: string | undefined;\n directExports: Map<string, unknown>;\n exported: Map<string, string>;\n}\n\n// Builds the module's export surface: top-level declarations by name, the\n// exported-name -> local-name map, and direct export declaration nodes. A\n// default export that references an identifier (`export default Page`) is\n// resolved through `declarations` so it behaves like `export { Page as default\n// }` rather than stopping at the bare identifier node.\nfunction collectModuleExportMap(program: unknown): ModuleExportMap {\n const declarations = new Map<string, unknown>();\n const exported = new Map<string, string>();\n const directExports = new Map<string, unknown>();\n const aliasState = createComponentAliasState();\n let defaultExportIdentifier: string | undefined;\n\n collectSimpleComponentAliasesFromNode(program, aliasState);\n\n for (const statement of programBody(program)) {\n collectTopLevelDeclarationReferences(statement, declarations);\n\n if (statement.type === \"ExportDefaultDeclaration\") {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"Identifier\" && typeof declaration.name === \"string\") {\n exported.set(\"default\", declaration.name);\n defaultExportIdentifier = declaration.name;\n } else {\n directExports.set(\"default\", declaration);\n exported.set(\"default\", \"default\");\n }\n continue;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration !== undefined) {\n for (const name of exportedNames(statement)) {\n exported.set(name, name);\n directExports.set(name, declarationForExportedName(declaration, name) ?? declaration);\n }\n continue;\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers.map(readObject) : [];\n for (const specifier of specifiers) {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n if (exportedName !== undefined && localName !== undefined) {\n exported.set(exportedName, localName);\n }\n }\n }\n\n return { aliasState, declarations, defaultExportIdentifier, directExports, exported };\n}\n\nfunction collectTopLevelExportRenderInfoFromProgram(program: unknown): TopLevelExportRenderInfo[] {\n const { aliasState, declarations, directExports, exported } = collectModuleExportMap(program);\n\n return [...exported.entries()]\n .map(([name, localName]) => {\n const node = directExports.get(name) ?? declarations.get(localName);\n const calledComponentRoots = node === undefined\n ? []\n : collectComponentCallRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const renderedComponentRoots = node === undefined\n ? []\n : collectJsxComponentRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const clientRuntime = node === undefined\n ? false\n : hasReachableExportClientRuntime({\n aliases: aliasState.aliases,\n declarations,\n localName,\n node,\n });\n\n return node === undefined\n ? undefined\n : {\n calledComponentRoots,\n clientRuntime,\n name,\n renderedComponentRoots,\n };\n })\n .filter((item): item is TopLevelExportRenderInfo => item !== undefined)\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\ninterface ReachableExportRenderedComponents {\n defaultExportIdentifier: string | undefined;\n names: string[];\n roots: string[];\n perExportNames: Record<string, string[]>;\n perExportRoots: Record<string, string[]>;\n}\n\n// Collects the JSX components that are actually reachable from the module's\n// exports, walking transitively through same-file declarations (including\n// non-exported helper components). Unlike the file-wide `jsxComponentRoots`,\n// this excludes components rendered only inside dead/unreachable code, so it\n// reflects what the route's server-rendered tree truly contains. Per-export\n// breakdowns let callers attribute a rendered component to the specific export\n// whose subtree renders it (e.g. to keep barrel re-exports precise).\nfunction collectReachableExportRenderedComponentsFromProgram(\n program: unknown,\n): ReachableExportRenderedComponents {\n const { aliasState, declarations, defaultExportIdentifier, directExports, exported } =\n collectModuleExportMap(program);\n\n const names = new Set<string>();\n const roots = new Set<string>();\n const perExportNames: Record<string, string[]> = {};\n const perExportRoots: Record<string, string[]> = {};\n\n const visit = (\n node: unknown,\n exportRoots: Set<string>,\n exportNames: Set<string>,\n seen: Set<string>,\n ): void => {\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(node, aliasState.aliases);\n for (const root of renderedRoots) {\n exportRoots.add(root);\n roots.add(root);\n }\n\n const renderedNames = collectJsxComponentNamesFromSubtree(node, aliasState.aliases);\n for (const name of renderedNames) {\n exportNames.add(name);\n names.add(name);\n }\n\n const calledRoots = collectComponentCallRootNamesFromSubtree(node, aliasState.aliases);\n for (const root of [...renderedRoots, ...calledRoots]) {\n const resolved = aliasState.aliases.get(root) ?? root;\n\n if (seen.has(resolved)) {\n continue;\n }\n\n seen.add(resolved);\n const declaration = declarations.get(resolved);\n\n if (declaration !== undefined) {\n visit(declaration, exportRoots, exportNames, seen);\n }\n }\n };\n\n for (const [name, localName] of exported.entries()) {\n const node = directExports.get(name) ?? declarations.get(localName);\n\n if (node === undefined) {\n continue;\n }\n\n const exportRoots = new Set<string>();\n const exportNames = new Set<string>();\n visit(node, exportRoots, exportNames, new Set<string>([localName]));\n perExportRoots[name] = Array.from(exportRoots).sort();\n perExportNames[name] = Array.from(exportNames).sort();\n }\n\n return {\n defaultExportIdentifier,\n names: Array.from(names).sort(),\n roots: Array.from(roots).sort(),\n perExportNames,\n perExportRoots,\n };\n}\n\nfunction hasReachableLocalClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n roots: readonly string[];\n seen: Set<string>;\n}): boolean {\n for (const root of options.roots) {\n const resolved = options.aliases.get(root) ?? root;\n if (options.seen.has(resolved)) {\n continue;\n }\n\n const declaration = options.declarations.get(resolved);\n if (declaration === undefined) {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(declaration)) {\n return true;\n }\n\n options.seen.add(resolved);\n const nestedCalledRoots = collectComponentCallRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n const nestedRenderedRoots = collectJsxComponentRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...nestedCalledRoots, ...nestedRenderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasReachableExportClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n localName: string;\n node: unknown;\n}): boolean {\n return hasReachableExportClientRuntimeNode({\n aliases: options.aliases,\n declarations: options.declarations,\n node: options.node,\n seen: new Set([options.localName]),\n });\n}\n\nfunction hasReachableExportClientRuntimeNode(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n node: unknown;\n seen: Set<string>;\n}): boolean {\n if (hasClientRuntimeSyntaxNode(options.node)) {\n return true;\n }\n\n const references = collectRuntimeReferenceRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n for (const reference of references) {\n const declaration = options.declarations.get(reference);\n if (\n declaration !== undefined &&\n !isFunctionLikeClientRuntimeDeclaration(declaration) &&\n hasClientRuntimeSyntaxNode(declaration)\n ) {\n return true;\n }\n }\n\n const calledRoots = collectRuntimeCallRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...calledRoots, ...renderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction collectRuntimeReferenceRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeReferenceRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n undefined,\n undefined,\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeCallRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeCallRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeReferenceRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeReferenceRootNamesFromNode(\n child,\n names,\n state,\n shadowed,\n parent,\n parentKey,\n );\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n if (\n !shadowed.has(object.name) &&\n isRuntimeReferenceIdentifier(parent, parentKey)\n ) {\n names.add(state.aliases.get(object.name) ?? object.name);\n }\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeReferenceRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n object,\n \"body\",\n );\n return;\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeReferenceRootNamesFromNode(\n value,\n names,\n state,\n childShadowed,\n object,\n key,\n );\n }\n}\n\nfunction collectRuntimeCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeCallRootNamesFromNode(child, names, state, shadowed);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeCallRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n );\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && !shadowed.has(root)) {\n names.add(root);\n }\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeCallRootNamesFromNode(value, names, state, childShadowed);\n }\n}\n\nfunction shouldSkipRuntimeReferenceNode(node: Record<string, unknown>): boolean {\n return (\n (typeof node.type === \"string\" && node.type.startsWith(\"TS\")) ||\n node.type === \"ImportDeclaration\"\n );\n}\n\nfunction shouldSkipRuntimeReferenceProperty(\n node: Record<string, unknown>,\n key: string,\n): boolean {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n return true;\n }\n\n if (key === \"id\" && isDeclarationWithId(node)) {\n return true;\n }\n\n if (key === \"params\" && isFunctionLikeClientRuntimeDeclaration(node)) {\n return true;\n }\n\n if (key === \"key\" && isNonComputedPropertyKey(node)) {\n return true;\n }\n\n return false;\n}\n\nfunction isRuntimeReferenceIdentifier(\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): boolean {\n if (parent === undefined) {\n return true;\n }\n\n if (parent.type === \"MemberExpression\" && parentKey === \"property\" && parent.computed !== true) {\n return false;\n }\n\n if (parentKey === \"id\" && isDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isFunctionLikeClientRuntimeDeclaration(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isNonComputedPropertyKey(parent)) {\n return false;\n }\n\n return !(\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n );\n}\n\nfunction addBlockBindingNames(\n node: unknown,\n names: Set<string>,\n): ReadonlySet<string> {\n const body = readArray(readObject(node).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectBindingNamesInto(readObject(declaration).id, names);\n }\n continue;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectBindingNamesInto(object.id, names);\n }\n }\n\n return names;\n}\n\nfunction collectBindingNamesInto(node: unknown, names: Set<string>): void {\n for (const name of bindingNames(node)) {\n names.add(name);\n }\n}\n\nfunction isFunctionLikeClientRuntimeDeclaration(node: unknown): boolean {\n const object = readObject(node);\n return (\n object.type === \"FunctionDeclaration\" ||\n object.type === \"FunctionExpression\" ||\n object.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction isDeclarationWithId(node: Record<string, unknown>): boolean {\n return (\n node.type === \"VariableDeclarator\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ClassDeclaration\" ||\n node.type === \"ClassExpression\"\n );\n}\n\nfunction isNonComputedPropertyKey(node: Record<string, unknown>): boolean {\n return (\n (node.type === \"Property\" ||\n node.type === \"ObjectProperty\" ||\n node.type === \"PropertyDefinition\" ||\n node.type === \"MethodDefinition\") &&\n node.computed !== true\n );\n}\n\nexport function hasModuleDirective(input: {\n code: string;\n directive: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasModuleDirectiveInProgram(parsed.program, input.directive);\n}\n\nfunction hasModuleDirectiveInProgram(program: unknown, expectedDirective: string): boolean {\n for (const statement of programBody(program)) {\n if (statement.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const directive = statement.directive;\n if (typeof directive !== \"string\") {\n return false;\n }\n\n if (directive === expectedDirective) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function hasClientRuntimeSyntax(input: {\n code: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasClientRuntimeSyntaxNode(parsed.program);\n}\n\ninterface Replacement {\n end: number;\n start: number;\n text: string;\n}\n\nfunction parseModule(code: string, filename: string | undefined) {\n return parseModuleContext(createCompilerModuleContext({ code, filename }));\n}\n\nfunction parseModuleContext(context: CompilerModuleContext): CompilerModuleContext {\n if (context.parseErrors.length > 0) {\n throw new Error(\n `${context.filename}: ${context.parseErrors\n .map((error) => readObject(error).message)\n .filter((message): message is string => typeof message === \"string\")\n .join(\"\\n\")}`,\n );\n }\n\n return context;\n}\n\nfunction programBody(program: unknown): Record<string, unknown>[] {\n const body = readObject(program).body;\n return Array.isArray(body) ? body.map(readObject) : [];\n}\n\nfunction exportedNames(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ExportDefaultDeclaration\") {\n return [\"default\"];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration !== undefined) {\n if (declaration.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n return typeof name === \"string\" ? [name] : [];\n }\n\n if (declaration.type === \"VariableDeclaration\") {\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n\n return declarations.flatMap((item) => bindingNames(readObject(item).id));\n }\n\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n return specifiers.flatMap((specifier) => {\n const name = exportedNameForSpecifier(readObject(specifier));\n\n return typeof name === \"string\" ? [name] : [];\n });\n}\n\nfunction collectTopLevelDeclarationReferences(\n statement: Record<string, unknown>,\n declarations: Map<string, unknown>,\n): void {\n const declaration =\n statement.type === \"ExportNamedDeclaration\"\n ? readOptionalObject(statement.declaration)\n : statement;\n\n if (declaration?.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n\n if (typeof name === \"string\") {\n declarations.set(name, declaration);\n }\n return;\n }\n\n if (declaration?.type !== \"VariableDeclaration\") {\n return;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (name !== undefined) {\n declarations.set(name, readOptionalObject(declarator.init) ?? declarator);\n }\n }\n}\n\nfunction declarationForExportedName(\n declaration: Record<string, unknown>,\n name: string,\n): unknown | undefined {\n if (declaration.type === \"VariableDeclaration\") {\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n if (bindingNames(declarator.id).includes(name)) {\n return readOptionalObject(declarator.init) ?? declarator;\n }\n }\n }\n\n return declaration;\n}\n\nfunction localNameForExportSpecifier(specifier: Record<string, unknown>): string | undefined {\n const local = readOptionalObject(specifier.local);\n const name = local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction exportDeclarationDemotion(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n const exported = exportedNames(statement);\n\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return partialSpecifierExportReplacement(code, statement, names);\n }\n\n const range = statementRange(code, statement);\n\n if (range === undefined) {\n return undefined;\n }\n\n if (declaration?.type === \"FunctionDeclaration\" || declaration?.type === \"VariableDeclaration\") {\n return { ...range, text: `${nodeText(code, declaration)}\\n` };\n }\n\n return { ...range, text: \"\" };\n}\n\nfunction exportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type === \"ExportDefaultDeclaration\") {\n const range = statementRange(code, statement);\n return names.has(\"default\") && range !== undefined ? { ...range, text: \"\" } : undefined;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const partial = partialExportDeclarationReplacement(code, statement, names);\n\n if (partial !== undefined) {\n return partial;\n }\n\n const exported = exportedNames(statement);\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction partialExportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"VariableDeclaration\") {\n return partialVariableExportReplacement(code, statement, declaration, names);\n }\n\n if (declaration !== undefined) {\n return undefined;\n }\n\n return partialSpecifierExportReplacement(code, statement, names);\n}\n\nfunction partialVariableExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n declaration: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declarations = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n if (declarations.length <= 1) {\n return undefined;\n }\n\n const kept = declarations.filter((declarator) => {\n const declaredNames = bindingNames(declarator.id);\n return declaredNames.every((name) => !names.has(name));\n });\n\n if (kept.length === declarations.length) {\n return undefined;\n }\n\n if (kept.length === 0) {\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n }\n\n const range = statementRange(code, statement);\n const kind = typeof declaration.kind === \"string\" ? declaration.kind : \"const\";\n\n return range === undefined\n ? undefined\n : {\n ...range,\n text: `export ${kind} ${kept.map((item) => nodeText(code, item)).join(\", \")};\\n`,\n };\n}\n\nfunction partialSpecifierExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length <= 1) {\n return undefined;\n }\n\n const kept = specifiers.filter((specifier) => {\n const name = exportedNameForSpecifier(specifier);\n return typeof name !== \"string\" || !names.has(name);\n });\n\n if (kept.length === specifiers.length) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n if (range === undefined) {\n return undefined;\n }\n\n if (kept.length === 0) {\n return { ...range, text: \"\" };\n }\n\n const source = readOptionalObject(statement.source);\n const sourceText = source === undefined ? \"\" : ` from ${nodeText(code, source)}`;\n const exportKind = statement.exportKind === \"type\" ? \"export type\" : \"export\";\n\n return {\n ...range,\n text: `${exportKind} { ${kept.map((item) => nodeText(code, item)).join(\", \")} }${sourceText};\\n`,\n };\n}\n\nfunction unusedStaticValueImportReplacement(\n code: string,\n statement: Record<string, unknown>,\n referencedNames: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return undefined;\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length === 0) {\n return undefined;\n }\n\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n if (localNames.length === 0 || localNames.some((name) => referencedNames.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction staticModuleSpecifier(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ImportDeclaration\") {\n if (statement.importKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n if (statement.type === \"ExportAllDeclaration\" || statement.type === \"ExportNamedDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n return [];\n}\n\nfunction staticImportReference(\n statement: Record<string, unknown>,\n): ClientRouteStaticImportReference[] {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n const importSpecifiers = specifiers.flatMap(staticImportSpecifierReference);\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n return [\n {\n localNames,\n sideEffect: localNames.length === 0,\n source,\n specifiers: importSpecifiers,\n },\n ];\n}\n\nfunction staticImportSpecifierReference(\n specifier: Record<string, unknown>,\n): StaticImportSpecifierReference[] {\n if (specifier.importKind === \"type\") {\n return [];\n }\n\n const localName = readOptionalObject(specifier.local)?.name;\n if (typeof localName !== \"string\") {\n return [];\n }\n\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return [{ importedName: \"default\", kind: \"default\", localName }];\n }\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return [{ importedName: \"*\", kind: \"namespace\", localName }];\n }\n\n const imported = readOptionalObject(specifier.imported);\n const importedName = imported?.name ?? imported?.value;\n return typeof importedName === \"string\"\n ? [{ importedName, kind: \"named\", localName }]\n : [];\n}\n\nfunction staticExportReference(statement: Record<string, unknown>): StaticExportReference[] {\n if (statement.type === \"ExportAllDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n return source === undefined\n ? []\n : [{ exportedNames: [], exportAll: true, specifiers: [], source }];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\" || statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n return [\n {\n exportedNames: exportedNames(statement),\n exportAll: false,\n specifiers: staticExportSpecifierReferences(statement),\n source,\n },\n ];\n}\n\nfunction staticExportSpecifierReferences(\n statement: Record<string, unknown>,\n): StaticExportSpecifierReference[] {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n return specifiers.flatMap((specifier) => {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n return exportedName === undefined || localName === undefined\n ? []\n : [{ exportedName, localName }];\n });\n}\n\nfunction sourceValue(statement: Record<string, unknown>): string[] {\n const source = readOptionalObject(statement.source);\n const value = source?.value;\n\n return typeof value === \"string\" ? [value] : [];\n}\n\nfunction collectJsxComponentRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentRootNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const name = jsxNameRoot(nameNode);\n if (name !== undefined && (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(name))) {\n names.add(name);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectJsxComponentRootNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentNamesFromNode(node: unknown, names: Set<string>): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const root = jsxNameRoot(nameNode);\n const name = jsxTagName(nameNode);\n if (\n name !== \"\" &&\n root !== undefined &&\n (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(root))\n ) {\n names.add(name);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectJsxComponentNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectJsxComponentRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentRootNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectComponentCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectComponentCallRootNamesFromNode(child, names, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && /^[A-Z]/.test(root)) {\n names.add(root);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectComponentCallRootNamesFromNode(value, names, state);\n }\n}\n\nfunction collectComponentCallRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectSimpleComponentAliasesFromNode(node, aliasState);\n collectComponentCallRootNamesFromNode(node, names, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction jsxNameRoot(node: Record<string, unknown> | undefined): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n return jsxNameRoot(readOptionalObject(node.object));\n }\n\n return undefined;\n}\n\nfunction collectSimpleComponentAliasesFromNode(\n node: unknown,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectSimpleComponentAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n const declarations = Array.isArray(object.declarations) ? object.declarations : [];\n for (const declaration of declarations) {\n collectVariableDeclaratorComponentAliases(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectVariableDeclaratorComponentAliases(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectAssignmentComponentAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectObjectAssignComponentAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectSimpleComponentAliasesFromNode(value, state);\n }\n}\n\nfunction createComponentAliasState(\n aliases?: ReadonlyMap<string, string> | undefined,\n): ComponentAliasState {\n return {\n aliases: new Map(aliases),\n stringConstants: new Map(),\n };\n}\n\nfunction collectVariableDeclaratorComponentAliases(\n object: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n constant: boolean,\n): void {\n if (object?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(object.id);\n const init = readOptionalObject(object.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n collectObjectLiteralComponentAliases(aliasName, init, state);\n\n const rootName = expressionRootName(init, state);\n if (rootName !== undefined) {\n state.aliases.set(aliasName, rootName);\n }\n}\n\nfunction collectObjectLiteralComponentAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n const properties = Array.isArray(init.properties) ? init.properties : [];\n for (const propertyValue of properties) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const valueName = expressionRootName(readOptionalObject(property.value), state);\n if (keyName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectName}.${keyName}`, valueName);\n }\n }\n}\n\nfunction collectAssignmentComponentAlias(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n const right = readOptionalObject(node.right);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectRoot = expressionRootName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const valueName = expressionRootName(right, state);\n if (objectRoot !== undefined && memberName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectRoot}.${memberName}`, valueName);\n }\n}\n\nfunction collectObjectAssignComponentAliases(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = Array.isArray(node.arguments) ? node.arguments.map(readOptionalObject) : [];\n const target = expressionRootName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectObjectLiteralComponentAliases(target, source, state);\n }\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"assign\";\n}\n\nfunction expandJsxComponentAliasRoots(\n names: Set<string>,\n aliases: ReadonlyMap<string, string>,\n): void {\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const [alias, root] of aliases) {\n if (names.has(alias) && !names.has(root)) {\n names.add(root);\n changed = true;\n }\n }\n }\n}\n\nfunction expressionRootName(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"MemberExpression\") {\n const objectRoot = expressionRootName(readOptionalObject(node.object), state);\n const aliasedObjectRoot =\n objectRoot === undefined ? undefined : state?.aliases.get(objectRoot) ?? objectRoot;\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const memberAlias =\n objectRoot !== undefined && memberName !== undefined\n ? state?.aliases.get(`${objectRoot}.${memberName}`) ??\n (aliasedObjectRoot === undefined\n ? undefined\n : state?.aliases.get(`${aliasedObjectRoot}.${memberName}`))\n : undefined;\n\n return memberAlias ??\n (node.computed === true && memberName === undefined\n ? uniqueObjectMemberAlias(aliasedObjectRoot, state)\n : aliasedObjectRoot);\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n expressionRootName(readOptionalObject(node.consequent), state),\n expressionRootName(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionRootName(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state?.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state?.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction uniqueObjectMemberAlias(\n objectName: string | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (objectName === undefined || state === undefined) {\n return undefined;\n }\n\n const prefix = `${objectName}.`;\n return uniqueDefinedString(\n Array.from(state.aliases.entries())\n .filter(([key]) => key.startsWith(prefix))\n .map(([, value]) => value),\n );\n}\n\nfunction uniqueDefinedString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction collectIdentifierReferenceNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectIdentifierReferenceNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n (object.type === \"Identifier\" || object.type === \"JSXIdentifier\") &&\n typeof object.name === \"string\"\n ) {\n names.add(object.name);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectIdentifierReferenceNamesFromNode(value, names);\n }\n}\n\nfunction collectFormActionReferencesFromNode(\n node: unknown,\n references: FormActionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionReferencesFromNode(child, references);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n typeof expression.name === \"string\" &&\n start !== undefined &&\n end !== undefined\n ) {\n references.push({ end, name: expression.name, start });\n }\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectFormActionReferencesFromNode(value, references);\n }\n}\n\nfunction collectFormActionExpressionReferencesFromNode(\n code: string,\n node: unknown,\n references: FormActionExpressionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionExpressionReferencesFromNode(code, child, references);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n const expressionStart = typeof expression.start === \"number\" ? expression.start : undefined;\n const expressionEnd = typeof expression.end === \"number\" ? expression.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n start !== undefined &&\n end !== undefined &&\n expressionStart !== undefined &&\n expressionEnd !== undefined\n ) {\n references.push({\n end,\n expression: code.slice(expressionStart, expressionEnd).trim(),\n expressionEnd,\n expressionStart,\n start,\n });\n }\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectFormActionExpressionReferencesFromNode(code, value, references);\n }\n}\n\nfunction jsxTagName(node: Record<string, unknown> | undefined): string {\n if (node === undefined) {\n return \"\";\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXIdentifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n const objectName = jsxTagName(readOptionalObject(node.object));\n const propertyName = jsxTagName(readOptionalObject(node.property));\n return `${objectName}.${propertyName}`;\n }\n\n return \"\";\n}\n\nfunction hasClientRuntimeSyntaxNode(node: unknown): boolean {\n if (Array.isArray(node)) {\n return node.some(hasClientRuntimeSyntaxNode);\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return false;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return false;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportAllDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\") {\n return hasClientRuntimeSyntaxNode(object.declaration);\n }\n\n if (object.type === \"JSXAttribute\") {\n const name = readOptionalObject(object.name)?.name;\n return typeof name === \"string\" && /^on[A-Z]/.test(name);\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readOptionalObject(object.callee);\n if (callee?.type === \"Identifier\" && callee.name === \"cell\") {\n return true;\n }\n }\n\n if (object.type === \"Identifier\" && isClientRuntimeGlobal(object.name)) {\n return true;\n }\n\n if (object.type === \"MemberExpression\") {\n return (\n hasClientRuntimeSyntaxNode(object.object) ||\n (object.computed === true && hasClientRuntimeSyntaxNode(object.property))\n );\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(value)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isClientRuntimeGlobal(name: unknown): boolean {\n return name === \"window\" || name === \"document\" || name === \"localStorage\";\n}\n\nfunction exportedNameForSpecifier(specifier: Record<string, unknown>): string | undefined {\n const exported = readOptionalObject(specifier.exported);\n const local = readOptionalObject(specifier.local);\n const name = exported?.name ?? exported?.value ?? local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction bindingNames(node: unknown): string[] {\n const object = readObject(node);\n\n if (typeof object.name === \"string\") {\n return [object.name];\n }\n\n if (Array.isArray(object.properties)) {\n return object.properties.flatMap((property) => bindingNames(readObject(property).value));\n }\n\n if (Array.isArray(object.elements)) {\n return object.elements.flatMap((element) => (element === null ? [] : bindingNames(element)));\n }\n\n if (object.type === \"AssignmentPattern\") {\n return bindingNames(object.left);\n }\n\n if (object.type === \"RestElement\") {\n return bindingNames(object.argument);\n }\n\n return [];\n}\n\nfunction statementRange(\n code: string,\n statement: Record<string, unknown>,\n): { end: number; start: number } | undefined {\n const start = typeof statement.start === \"number\" ? statement.start : undefined;\n const end = typeof statement.end === \"number\" ? statement.end : undefined;\n\n if (start === undefined || end === undefined) {\n return undefined;\n }\n\n let removalStart = start;\n while (removalStart > 0 && code[removalStart - 1] !== \"\\n\") {\n if (!/\\s/.test(code[removalStart - 1] ?? \"\")) {\n break;\n }\n removalStart -= 1;\n }\n\n let removalEnd = end;\n while (removalEnd < code.length && /[ \\t]/.test(code[removalEnd] ?? \"\")) {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\r\") {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\n\") {\n removalEnd += 1;\n }\n\n return { start: removalStart, end: removalEnd };\n}\n\nfunction nodeText(code: string, node: Record<string, unknown>): string {\n const start = typeof node.start === \"number\" ? node.start : undefined;\n const end = typeof node.end === \"number\" ? node.end : undefined;\n\n return start === undefined || end === undefined ? \"\" : code.slice(start, end);\n}\n\nfunction readObject(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction readArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nexport type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentIr,\n ComponentPropIr,\n ComponentRefIr,\n ConditionalIr,\n DynamicAttributeIr,\n EventAttributeIr,\n ExprIr,\n JsxElementIr,\n JsxFragmentIr,\n JsxNodeIr,\n ListIr,\n ModuleIr,\n SpreadAttributeIr,\n StaticAttributeIr,\n TextIr,\n} from \"./ir.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mCAAmC,EACnC,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kCAAkC,GAEnC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AA4F5D,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAA8B,EAC9B,KAAkD;IAElD,OAAO,mCAAmC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAG3C;IACC,OAAO,kCAAkC,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAI5C;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACpD,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,gFAAgF;AAChF,2CAA2C;AAC3C,MAAM,UAAU,yBAAyB,CAAC,KAIzC;IACC,OAAO,oCAAoC,CACzC,2BAA2B,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAC3E,KAAK,CAAC,IAAI,CACX,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,UAAU,oCAAoC,CAClD,OAA8B,EAC9B,IAAY;IAEZ,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE3C,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;YAC1C,CAAC,CAAC,EAAE,CAAC;QAEP,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,EAAE,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACrD,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAyC;IACvE,IACE,CAAC,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;QAC7D,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,EAC/B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IACE,IAAI,EAAE,IAAI,KAAK,gBAAgB;QAC/B,IAAI,EAAE,IAAI,KAAK,uBAAuB;QACtC,IAAI,EAAE,IAAI,KAAK,yBAAyB,EACxC,CAAC;QACD,OAAO,sBAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAI/C;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SAC9E,MAAM,CAAC,CAAC,WAAW,EAA8B,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC;SAC9E,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAChG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAIhD;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SAC3E,MAAM,CAAC,CAAC,WAAW,EAA8B,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC;SAC9E,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAChG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAG7C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,kCAAkC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAC3E;SACA,MAAM,CAAC,CAAC,WAAW,EAA8B,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC;SAC9E,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAEtB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAChG,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAG7C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAG7C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAG7C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAG5C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAE/C,oCAAoC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,qCAAqC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAG/C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,uCAAuC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAG/C;IACC,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAC/E,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAG3C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,mCAAmC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACrC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAC5F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,KAGrD;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,6CAA6C,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACrC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QACxB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAG/C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAG/C;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,0CAA0C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAGhD;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,2CAA2C,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,2CAA2C,CACzD,OAA8B;IAE9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,MAAM,2BAA2B,GAAG,mDAAmD,CACrF,MAAM,CAAC,OAAO,CACf,CAAC;IAEF,uCAAuC,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAE9E,OAAO;QACL,aAAa,EAAE,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC;QACzD,uBAAuB,EAAE,2BAA2B,CAAC,uBAAuB;QAC5E,kBAAkB,EAAE,wCAAwC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5E,qBAAqB,EAAE,2BAA2B,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;QAChF,qBAAqB,EAAE,2BAA2B,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;QAChF,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;QAC7D,iBAAiB,EAAE,uCAAuC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1E,qCAAqC,EAAE,2BAA2B,CAAC,cAAc;QACjF,qCAAqC,EAAE,2BAA2B,CAAC,cAAc;QACjF,+BAA+B,EAAE,2BAA2B,CAAC,KAAK;QAClE,+BAA+B,EAAE,2BAA2B,CAAC,KAAK;QAClE,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAClD,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAClD,wBAAwB,EAAE,0CAA0C,CAAC,MAAM,CAAC,OAAO,CAAC;KACrF,CAAC;AACJ,CAAC;AAcD,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,+EAA+E;AAC/E,uDAAuD;AACvD,SAAS,sBAAsB,CAAC,OAAgB;IAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAmB,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC;IACjD,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,IAAI,uBAA2C,CAAC;IAEhD,qCAAqC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE3D,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,oCAAoC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE9D,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAE9D,IAAI,WAAW,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/E,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC1C,uBAAuB,GAAG,WAAW,CAAC,IAAI,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC1C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzB,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;YACxF,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;YAEzD,IAAI,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1D,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,0CAA0C,CAAC,OAAgB;IAClE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAE9F,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,oBAAoB,GAAG,IAAI,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,wCAAwC,CACtC,IAAI,EACJ,UAAU,CAAC,OAAO,CACnB,CAAC;QACN,MAAM,sBAAsB,GAAG,IAAI,KAAK,SAAS;YAC/C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,uCAAuC,CACrC,IAAI,EACJ,UAAU,CAAC,OAAO,CACnB,CAAC;QACN,MAAM,aAAa,GAAG,IAAI,KAAK,SAAS;YACtC,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,+BAA+B,CAAC;gBAC9B,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,YAAY;gBACZ,SAAS;gBACT,IAAI;aACL,CAAC,CAAC;QAEP,OAAO,IAAI,KAAK,SAAS;YACvB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,oBAAoB;gBACpB,aAAa;gBACb,IAAI;gBACJ,sBAAsB;aACvB,CAAC;IACR,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAoC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC;SACtE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAUD,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,+EAA+E;AAC/E,qEAAqE;AACrE,SAAS,mDAAmD,CAC1D,OAAgB;IAEhB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,QAAQ,EAAE,GAClF,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,cAAc,GAA6B,EAAE,CAAC;IACpD,MAAM,cAAc,GAA6B,EAAE,CAAC;IAEpD,MAAM,KAAK,GAAG,CACZ,IAAa,EACb,WAAwB,EACxB,WAAwB,EACxB,IAAiB,EACX,EAAE;QACR,MAAM,aAAa,GAAG,uCAAuC,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACxF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,aAAa,GAAG,mCAAmC,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACpF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,wCAAwC,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACvF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAEtD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpE,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,OAAO;QACL,uBAAuB;QACvB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAC/B,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,OAKvC;IACC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,iBAAiB,GAAG,wCAAwC,CAChE,WAAW,EACX,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,MAAM,mBAAmB,GAAG,uCAAuC,CACjE,WAAW,EACX,OAAO,CAAC,OAAO,CAChB,CAAC;QAEF,IACE,8BAA8B,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,KAAK,EAAE,CAAC,GAAG,iBAAiB,EAAE,GAAG,mBAAmB,CAAC;YACrD,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,EACF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,+BAA+B,CAAC,OAKxC;IACC,OAAO,mCAAmC,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mCAAmC,CAAC,OAK5C;IACC,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,2CAA2C,CAC5D,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxD,IACE,WAAW,KAAK,SAAS;YACzB,CAAC,sCAAsC,CAAC,WAAW,CAAC;YACpD,0BAA0B,CAAC,WAAW,CAAC,EACvC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,sCAAsC,CACxD,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB,CAAC;IACF,MAAM,aAAa,GAAG,uCAAuC,CAC3D,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,OAAO,CAChB,CAAC;IAEF,IACE,8BAA8B,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC;QACzC,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,EACF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,2CAA2C,CAClD,IAAa,EACb,OAAoC;IAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,wCAAwC,CACtC,IAAI,EACJ,KAAK,EACL,yBAAyB,CAAC,OAAO,CAAC,EAClC,IAAI,GAAG,EAAE,EACT,SAAS,EACT,SAAS,CACV,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,sCAAsC,CAC7C,IAAa,EACb,OAAoC;IAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,mCAAmC,CACjC,IAAI,EACJ,KAAK,EACL,yBAAyB,CAAC,OAAO,CAAC,EAClC,IAAI,GAAG,EAAE,CACV,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,wCAAwC,CAC/C,IAAa,EACb,KAAkB,EAClB,KAA0B,EAC1B,QAA6B,EAC7B,MAA2C,EAC3C,SAA6B;IAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,wCAAwC,CACtC,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,CACV,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpE,IACE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1B,4BAA4B,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/C,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,sCAAsC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,uBAAuB,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACjD,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,wCAAwC,CACtC,MAAM,CAAC,IAAI,EACX,KAAK,EACL,KAAK,EACL,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAC/C,MAAM,EACN,MAAM,CACP,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAC3D,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC;IAEf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,kCAAkC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,SAAS;QACX,CAAC;QAED,wCAAwC,CACtC,KAAK,EACL,KAAK,EACL,KAAK,EACL,aAAa,EACb,MAAM,EACN,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mCAAmC,CAC1C,IAAa,EACb,KAAkB,EAClB,KAA0B,EAC1B,QAA6B;IAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,mCAAmC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,8BAA8B,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO;IACT,CAAC;IAED,IAAI,sCAAsC,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,uBAAuB,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACjD,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjD,uBAAuB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;QACD,mCAAmC,CACjC,MAAM,CAAC,IAAI,EACX,KAAK,EACL,KAAK,EACL,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAChD,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAC3D,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,QAAQ,CAAC;IAEf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,kCAAkC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,SAAS;QACX,CAAC;QAED,mCAAmC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,IAA6B;IACnE,OAAO,CACL,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAClC,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,IAA6B,EAC7B,GAAW;IAEX,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,IAAI,sCAAsC,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,KAAK,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,4BAA4B,CACnC,MAA2C,EAC3C,SAA6B;IAE7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,SAAS,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC/F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,KAAK,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,KAAK,QAAQ,IAAI,sCAAsC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,IAAI,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,CACN,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB;QAC/B,MAAM,CAAC,IAAI,KAAK,mBAAmB;QACnC,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAAC;QACrC,SAAS,KAAK,OAAO,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAa,EACb,KAAkB;IAElB,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9C,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC1C,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzD,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7D,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAChF,uBAAuB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAa,EAAE,KAAkB;IAChE,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,sCAAsC,CAAC,IAAa;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CACL,MAAM,CAAC,IAAI,KAAK,qBAAqB;QACrC,MAAM,CAAC,IAAI,KAAK,oBAAoB;QACpC,MAAM,CAAC,IAAI,KAAK,yBAAyB,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA6B;IACxD,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAClC,IAAI,CAAC,IAAI,KAAK,qBAAqB;QACnC,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAClC,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAChC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAA6B;IAC7D,OAAO,CACL,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;QACvB,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAC9B,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAClC,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC;QACnC,IAAI,CAAC,QAAQ,KAAK,IAAI,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,2BAA2B,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAgB,EAAE,iBAAyB;IAC9E,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,SAAS,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,SAAS,KAAK,iBAAiB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAGtC;IACC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvD,OAAO,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAQD,SAAS,WAAW,CAAC,IAAY,EAAE,QAA4B;IAC7D,OAAO,kBAAkB,CAAC,2BAA2B,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA8B;IACxD,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IACpF,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhG,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,SAAkC;IACvD,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAClD,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;YACtD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7F,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAE7D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oCAAoC,CAC3C,SAAkC,EAClC,YAAkC;IAElC,MAAM,WAAW,GACf,SAAS,CAAC,IAAI,KAAK,wBAAwB;QACzC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;QAEtD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACtC,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC;QACzD,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,EAAE,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,WAAoC,EACpC,IAAY;IAEZ,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;YAC1C,CAAC,CAAC,EAAE,CAAC;QAEP,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,OAAO,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAkC;IACrE,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC;IAEzC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAY,EACZ,SAAkC,EAClC,KAA0B;IAE1B,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,iCAAiC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC/F,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,4BAA4B,CACnC,IAAY,EACZ,SAAkC,EAClC,KAA0B;IAE1B,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,mCAAmC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,mCAAmC,CAC1C,IAAY,EACZ,SAAkC,EAClC,KAA0B;IAE1B,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,WAAW,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChD,OAAO,gCAAgC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iCAAiC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,gCAAgC,CACvC,IAAY,EACZ,SAAkC,EAClC,WAAoC,EACpC,KAA0B;IAE1B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC;QAC1D,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAE/E,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,GAAG,KAAK;YACR,IAAI,EAAE,UAAU,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;SACjF,CAAC;AACR,CAAC;AAED,SAAS,iCAAiC,CACxC,IAAY,EACZ,SAAkC,EAClC,KAA0B;IAE1B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE9E,OAAO;QACL,GAAG,KAAK;QACR,IAAI,EAAE,GAAG,UAAU,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,KAAK;KACjG,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,IAAY,EACZ,SAAkC,EAClC,eAAoC;IAEpC,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,UAAU;SAC1B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC;SACtD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAkC;IAC/D,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC3C,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC7F,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAkC;IAElC,IAAI,SAAS,CAAC,IAAI,KAAK,mBAAmB,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC9E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,UAAU;SAC1B,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC;SACtD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,OAAO;QACL;YACE,UAAU;YACV,UAAU,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC;YACnC,MAAM;YACN,UAAU,EAAE,gBAAgB;SAC7B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,SAAkC;IAElC,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAC5D,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAChD,OAAO,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAClD,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,KAAK,CAAC;IACvD,OAAO,OAAO,YAAY,KAAK,QAAQ;QACrC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAkC;IAC/D,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC9C,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,MAAM,KAAK,SAAS;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,wBAAwB,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACnF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL;YACE,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC;YACvC,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,+BAA+B,CAAC,SAAS,CAAC;YACtD,MAAM;SACP;KACF,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAkC;IAElC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACtC,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;QAEzD,OAAO,YAAY,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;YAC1D,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,SAAkC;IACrD,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAE5B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,oCAAoC,CAC3C,IAAa,EACb,KAAkB;IAElB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,oCAAoC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5F,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,oCAAoC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,IAAa,EAAE,KAAkB;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,gCAAgC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,IACE,IAAI,KAAK,EAAE;YACX,IAAI,KAAK,SAAS;YAClB,CAAC,QAAQ,EAAE,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACjE,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,gCAAgC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,mCAAmC,CAC1C,IAAa,EACb,YAAsD;IAEtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3D,gCAAgC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,qCAAqC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,uCAAuC,CAC9C,IAAa,EACb,YAAsD;IAEtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3D,oCAAoC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,qCAAqC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,qCAAqC,CAC5C,IAAa,EACb,KAAkB,EAClB,KAA0B;IAE1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,qCAAqC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,qCAAqC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,wCAAwC,CAC/C,IAAa,EACb,YAAsD;IAEtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE3D,qCAAqC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxD,qCAAqC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/D,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,IAAyC;IAC5D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,OAAO,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qCAAqC,CAC5C,IAAa,EACb,KAA0B;IAE1B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;QACzC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,yCAAyC,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACzC,yCAAyC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC3C,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,mCAAmC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAiD;IAEjD,OAAO;QACL,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC;QACzB,eAAe,EAAE,IAAI,GAAG,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,yCAAyC,CAChD,MAA2C,EAC3C,KAA0B,EAC1B,QAAiB;IAEjB,IAAI,MAAM,EAAE,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,EAAE,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,oCAAoC,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,oCAAoC,CAC3C,UAA8B,EAC9B,IAAyC,EACzC,KAA0B;IAE1B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAClE,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAChF,IAAI,OAAO,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACrD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,+BAA+B,CACtC,IAA6B,EAC7B,KAA0B;IAE1B,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACpF,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,mCAAmC,CAC1C,IAA6B,EAC7B,KAA0B;IAE1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,oCAAoC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAA6B;IACvD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM,EAAE,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC9D,QAAQ,EAAE,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClE,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAkB,EAClB,OAAoC;IAEpC,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAEhB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAyC,EACzC,KAAuC;IAEvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GACrB,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;QACtF,MAAM,UAAU,GAAG,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC;QAClG,MAAM,WAAW,GACf,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;YAClD,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;gBACjD,CAAC,iBAAiB,KAAK,SAAS;oBAC9B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,iBAAiB,IAAI,UAAU,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,WAAW;YAChB,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;gBACjD,CAAC,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,KAAK,CAAC;gBACnD,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC1C,OAAO,mBAAmB,CAAC;YACzB,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;YAC9D,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,IACE,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAC/B,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAC9B,IAAI,CAAC,IAAI,KAAK,uBAAuB;QACrC,IAAI,CAAC,IAAI,KAAK,qBAAqB;QACnC,IAAI,CAAC,IAAI,KAAK,yBAAyB,EACvC,CAAC;QACD,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CACnB,IAAyC,EACzC,QAAiB,EACjB,KAAuC;IAEvC,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7E,OAAO,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAyC,EACzC,KAAuC;IAEvC,IACE,CAAC,IAAI,EAAE,IAAI,KAAK,eAAe,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;QAC5D,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAC9B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,EAAE,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC;YACzB,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;YACjE,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IACE,IAAI,EAAE,IAAI,KAAK,iBAAiB;QAChC,IAAI,EAAE,IAAI,KAAK,gBAAgB;QAC/B,IAAI,EAAE,IAAI,KAAK,uBAAuB;QACtC,IAAI,EAAE,IAAI,KAAK,qBAAqB;QACpC,IAAI,EAAE,IAAI,KAAK,yBAAyB,EACxC,CAAC;QACD,OAAO,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAA8B,EAC9B,KAAuC;IAEvC,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC;IAChC,OAAO,mBAAmB,CACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAuC;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,uCAAuC,CAC9C,IAAa,EACb,KAAkB;IAElB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,uCAAuC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC;QACjE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAC/B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,uCAAuC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,mCAAmC,CAC1C,IAAa,EACb,UAAiC;IAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,mCAAmC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IACE,MAAM,CAAC,IAAI,KAAK,mBAAmB;QACnC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EACtD,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5E,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAEpE,IACE,KAAK,CAAC,IAAI,KAAK,wBAAwB;gBACvC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ;gBACnC,KAAK,KAAK,SAAS;gBACnB,GAAG,KAAK,SAAS,EACjB,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,mCAAmC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAS,6CAA6C,CACpD,IAAY,EACZ,IAAa,EACb,UAA2C;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,6CAA6C,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IACE,MAAM,CAAC,IAAI,KAAK,mBAAmB;QACnC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,EACtD,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;YAEnC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5E,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1E,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,eAAe,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,MAAM,aAAa,GAAG,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAEtF,IACE,KAAK,CAAC,IAAI,KAAK,wBAAwB;gBACvC,KAAK,KAAK,SAAS;gBACnB,GAAG,KAAK,SAAS;gBACjB,eAAe,KAAK,SAAS;gBAC7B,aAAa,KAAK,SAAS,EAC3B,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC;oBACd,GAAG;oBACH,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;oBAC7D,aAAa;oBACb,eAAe;oBACf,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,6CAA6C,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAyC;IAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,OAAO,GAAG,UAAU,IAAI,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAa;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC3F,OAAO,0BAA0B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QACnD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACvC,OAAO,CACL,0BAA0B,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACxE,SAAS;QACX,CAAC;QAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAa;IAC1C,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,cAAc,CAAC;AAC7E,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAkC;IAClE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,QAAQ,EAAE,KAAK,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC;IAE9E,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,IAAa;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CACrB,IAAY,EACZ,SAAkC;IAElC,MAAM,KAAK,GAAG,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,OAAO,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7C,MAAM;QACR,CAAC;QACD,YAAY,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,OAAO,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACxE,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,UAAU,IAAI,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,IAA6B;IAC3D,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,OAAO,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAChD,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC","sourcesContent":["import type { ModuleIr } from \"./ir.js\";\nimport {\n analyzeCompilerModuleContextWithOxc,\n analyzeWithOxc,\n} from \"./oxc.js\";\nimport {\n createCompilerModuleContextWithOxc,\n type CompilerModuleContext,\n} from \"./compiler-module-context.js\";\nexport { transformCompilerModuleContext } from \"./transform.js\";\nexport { stripTypeScriptWithOxc } from \"./oxc-transform.js\";\nexport type { CompilerModuleContext } from \"./compiler-module-context.js\";\nimport type {\n AnalyzeModuleOptions,\n CompileTarget,\n Diagnostic,\n} from \"./types.js\";\n\nexport interface AnalyzeToIrInput {\n code: string;\n filename: string;\n target: CompileTarget;\n options?: AnalyzeModuleOptions;\n}\n\nexport interface AnalyzeToIrOutput {\n ir: ModuleIr;\n diagnostics: Diagnostic[];\n usedTypescriptFallback?: boolean;\n}\n\nexport interface StaticImportReference {\n localNames: string[];\n sideEffect: boolean;\n source: string;\n}\n\nexport interface StaticImportSpecifierReference {\n importedName: string;\n kind: \"default\" | \"named\" | \"namespace\";\n localName: string;\n}\n\nexport interface ClientRouteStaticImportReference extends StaticImportReference {\n specifiers: StaticImportSpecifierReference[];\n}\n\nexport interface StaticExportReference {\n exportedNames: string[];\n exportAll: boolean;\n specifiers: StaticExportSpecifierReference[];\n source: string;\n}\n\nexport interface StaticExportSpecifierReference {\n exportedName: string;\n localName: string;\n}\n\nexport interface TopLevelExportRenderInfo {\n calledComponentRoots: string[];\n clientRuntime: boolean;\n name: string;\n renderedComponentRoots: string[];\n}\n\nexport interface ClientRouteModuleAnalysis {\n clientRuntime: boolean;\n defaultExportIdentifier: string | undefined;\n hasUseClientDirective: boolean;\n hasUseServerDirective: boolean;\n componentCallRoots: string[];\n identifierReferences: string[];\n jsxComponentRoots: string[];\n reachableExportRenderedComponentNames: Record<string, string[]>;\n reachableExportRenderedComponentRoots: Record<string, string[]>;\n reachableRenderedComponentNames: string[];\n reachableRenderedComponentRoots: string[];\n staticExports: StaticExportReference[];\n staticImports: ClientRouteStaticImportReference[];\n topLevelExportRenderInfo: TopLevelExportRenderInfo[];\n}\n\nexport interface FormActionReference {\n end: number;\n name: string;\n start: number;\n}\n\nexport interface FormActionExpressionReference {\n end: number;\n expression: string;\n expressionEnd: number;\n expressionStart: number;\n start: number;\n}\n\ninterface ComponentAliasState {\n aliases: Map<string, string>;\n stringConstants: Map<string, string>;\n}\n\nexport function analyzeToIr(input: AnalyzeToIrInput): AnalyzeToIrOutput {\n return analyzeWithOxc(input);\n}\n\nexport function analyzeCompilerModuleContextToIr(\n context: CompilerModuleContext,\n input: Omit<AnalyzeToIrInput, \"code\" | \"filename\">,\n): AnalyzeToIrOutput {\n return analyzeCompilerModuleContextWithOxc(context, input);\n}\n\nexport function createCompilerModuleContext(input: {\n code: string;\n filename?: string | undefined;\n}): CompilerModuleContext {\n return createCompilerModuleContextWithOxc(input);\n}\n\nexport function hasTopLevelExportDeclaration(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): boolean {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).some((statement) =>\n exportedNames(statement).some((name) => names.has(name)),\n );\n}\n\n// Reads the value of a top-level `export const <name> = <boolean literal>`\n// declaration. Returns `undefined` when the export is absent or not a boolean\n// literal. AST-based so commented-out or string-literal occurrences of the same\n// text are not mistaken for a real export.\nexport function readTopLevelBooleanExport(input: {\n code: string;\n filename?: string | undefined;\n name: string;\n}): boolean | undefined {\n return readTopLevelBooleanExportFromContext(\n createCompilerModuleContext({ code: input.code, filename: input.filename }),\n input.name,\n );\n}\n\n// Context-accepting variant so callers with a cached `CompilerModuleContext`\n// (e.g. the dev server) avoid re-parsing the module per request.\nexport function readTopLevelBooleanExportFromContext(\n context: CompilerModuleContext,\n name: string,\n): boolean | undefined {\n const parsed = parseModuleContext(context);\n\n for (const statement of programBody(parsed.program)) {\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration?.type !== \"VariableDeclaration\") {\n continue;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n if (typeof id?.name !== \"string\" || id.name !== name) {\n continue;\n }\n\n const value = booleanExpressionValue(readOptionalObject(declarator.init));\n if (value !== undefined) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nfunction booleanExpressionValue(node: Record<string, unknown> | undefined): boolean | undefined {\n if (\n (node?.type === \"BooleanLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"boolean\"\n ) {\n return node.value;\n }\n\n if (\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return booleanExpressionValue(readOptionalObject(node.expression));\n }\n\n return undefined;\n}\n\nexport function stripTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationReplacement(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function demoteTopLevelExportDeclarations(input: {\n code: string;\n filename?: string | undefined;\n names: readonly string[];\n}): string {\n const names = new Set(input.names);\n const parsed = parseModule(input.code, input.filename);\n const replacements = programBody(parsed.program)\n .map((statement) => exportDeclarationDemotion(input.code, statement, names))\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function stripUnusedStaticValueImports(input: {\n code: string;\n filename?: string | undefined;\n}): string {\n const parsed = parseModule(input.code, input.filename);\n const referencedNames = new Set(collectIdentifierReferenceNames(input));\n const replacements = programBody(parsed.program)\n .map((statement) =>\n unusedStaticValueImportReplacement(input.code, statement, referencedNames),\n )\n .filter((replacement): replacement is Replacement => replacement !== undefined)\n .sort((left, right) => right.start - left.start);\n let code = input.code;\n\n for (const replacement of replacements) {\n code = `${code.slice(0, replacement.start)}${replacement.text}${code.slice(replacement.end)}`;\n }\n\n return code;\n}\n\nexport function collectStaticModuleSpecifiers(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticModuleSpecifier);\n}\n\nexport function collectStaticImportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticImportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticImportReference);\n}\n\nexport function collectStaticExportReferences(input: {\n code: string;\n filename?: string | undefined;\n}): StaticExportReference[] {\n const parsed = parseModule(input.code, input.filename);\n\n return programBody(parsed.program).flatMap(staticExportReference);\n}\n\nexport function collectJsxComponentRootNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n const aliasState = createComponentAliasState();\n\n collectJsxComponentRootNamesFromNode(parsed.program, names);\n collectSimpleComponentAliasesFromNode(parsed.program, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nexport function collectIdentifierReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n collectIdentifierReferenceNamesFromNode(parsed.program, names);\n return Array.from(names).sort();\n}\n\nexport function collectFormActionReferenceNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n return Array.from(\n new Set(collectFormActionReferences(input).map((reference) => reference.name)),\n ).sort();\n}\n\nexport function collectFormActionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionReference[] = [];\n\n collectFormActionReferencesFromNode(parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start ? left.name.localeCompare(right.name) : left.start - right.start,\n );\n}\n\nexport function collectFormActionExpressionReferences(input: {\n code: string;\n filename?: string | undefined;\n}): FormActionExpressionReference[] {\n const parsed = parseModule(input.code, input.filename);\n const references: FormActionExpressionReference[] = [];\n\n collectFormActionExpressionReferencesFromNode(input.code, parsed.program, references);\n return references.sort((left, right) =>\n left.start === right.start\n ? left.expression.localeCompare(right.expression)\n : left.start - right.start,\n );\n}\n\nexport function collectTopLevelValueExportNames(input: {\n code: string;\n filename?: string | undefined;\n}): string[] {\n const parsed = parseModule(input.code, input.filename);\n const names = new Set<string>();\n\n for (const statement of programBody(parsed.program)) {\n for (const name of exportedNames(statement)) {\n names.add(name);\n }\n }\n\n return Array.from(names).sort();\n}\n\nexport function collectTopLevelExportRenderInfo(input: {\n code: string;\n filename?: string | undefined;\n}): TopLevelExportRenderInfo[] {\n const parsed = parseModule(input.code, input.filename);\n\n return collectTopLevelExportRenderInfoFromProgram(parsed.program);\n}\n\nexport function collectClientRouteModuleAnalysis(input: {\n code: string;\n filename?: string | undefined;\n}): ClientRouteModuleAnalysis {\n const parsed = parseModule(input.code, input.filename);\n\n return collectClientRouteModuleAnalysisFromContext(parsed);\n}\n\nexport function collectClientRouteModuleAnalysisFromContext(\n context: CompilerModuleContext,\n): ClientRouteModuleAnalysis {\n const parsed = parseModuleContext(context);\n const body = programBody(parsed.program);\n const identifierReferences = new Set<string>();\n const reachableRenderedComponents = collectReachableExportRenderedComponentsFromProgram(\n parsed.program,\n );\n\n collectIdentifierReferenceNamesFromNode(parsed.program, identifierReferences);\n\n return {\n clientRuntime: hasClientRuntimeSyntaxNode(parsed.program),\n defaultExportIdentifier: reachableRenderedComponents.defaultExportIdentifier,\n componentCallRoots: collectComponentCallRootNamesFromSubtree(parsed.program),\n hasUseClientDirective: hasModuleDirectiveInProgram(parsed.program, \"use client\"),\n hasUseServerDirective: hasModuleDirectiveInProgram(parsed.program, \"use server\"),\n identifierReferences: Array.from(identifierReferences).sort(),\n jsxComponentRoots: collectJsxComponentRootNamesFromSubtree(parsed.program),\n reachableExportRenderedComponentNames: reachableRenderedComponents.perExportNames,\n reachableExportRenderedComponentRoots: reachableRenderedComponents.perExportRoots,\n reachableRenderedComponentNames: reachableRenderedComponents.names,\n reachableRenderedComponentRoots: reachableRenderedComponents.roots,\n staticExports: body.flatMap(staticExportReference),\n staticImports: body.flatMap(staticImportReference),\n topLevelExportRenderInfo: collectTopLevelExportRenderInfoFromProgram(parsed.program),\n };\n}\n\ninterface ModuleExportMap {\n aliasState: ComponentAliasState;\n declarations: Map<string, unknown>;\n // Local name when the default export is a bare identifier\n // (`export default Page`), including when that identifier is an import\n // binding. Such an identifier is the route's rendered component even though\n // the module body contains no JSX for it.\n defaultExportIdentifier: string | undefined;\n directExports: Map<string, unknown>;\n exported: Map<string, string>;\n}\n\n// Builds the module's export surface: top-level declarations by name, the\n// exported-name -> local-name map, and direct export declaration nodes. A\n// default export that references an identifier (`export default Page`) is\n// resolved through `declarations` so it behaves like `export { Page as default\n// }` rather than stopping at the bare identifier node.\nfunction collectModuleExportMap(program: unknown): ModuleExportMap {\n const declarations = new Map<string, unknown>();\n const exported = new Map<string, string>();\n const directExports = new Map<string, unknown>();\n const aliasState = createComponentAliasState();\n let defaultExportIdentifier: string | undefined;\n\n collectSimpleComponentAliasesFromNode(program, aliasState);\n\n for (const statement of programBody(program)) {\n collectTopLevelDeclarationReferences(statement, declarations);\n\n if (statement.type === \"ExportDefaultDeclaration\") {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"Identifier\" && typeof declaration.name === \"string\") {\n exported.set(\"default\", declaration.name);\n defaultExportIdentifier = declaration.name;\n } else {\n directExports.set(\"default\", declaration);\n exported.set(\"default\", \"default\");\n }\n continue;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n continue;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n if (declaration !== undefined) {\n for (const name of exportedNames(statement)) {\n exported.set(name, name);\n directExports.set(name, declarationForExportedName(declaration, name) ?? declaration);\n }\n continue;\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers.map(readObject) : [];\n for (const specifier of specifiers) {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n if (exportedName !== undefined && localName !== undefined) {\n exported.set(exportedName, localName);\n }\n }\n }\n\n return { aliasState, declarations, defaultExportIdentifier, directExports, exported };\n}\n\nfunction collectTopLevelExportRenderInfoFromProgram(program: unknown): TopLevelExportRenderInfo[] {\n const { aliasState, declarations, directExports, exported } = collectModuleExportMap(program);\n\n return [...exported.entries()]\n .map(([name, localName]) => {\n const node = directExports.get(name) ?? declarations.get(localName);\n const calledComponentRoots = node === undefined\n ? []\n : collectComponentCallRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const renderedComponentRoots = node === undefined\n ? []\n : collectJsxComponentRootNamesFromSubtree(\n node,\n aliasState.aliases,\n );\n const clientRuntime = node === undefined\n ? false\n : hasReachableExportClientRuntime({\n aliases: aliasState.aliases,\n declarations,\n localName,\n node,\n });\n\n return node === undefined\n ? undefined\n : {\n calledComponentRoots,\n clientRuntime,\n name,\n renderedComponentRoots,\n };\n })\n .filter((item): item is TopLevelExportRenderInfo => item !== undefined)\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\ninterface ReachableExportRenderedComponents {\n defaultExportIdentifier: string | undefined;\n names: string[];\n roots: string[];\n perExportNames: Record<string, string[]>;\n perExportRoots: Record<string, string[]>;\n}\n\n// Collects the JSX components that are actually reachable from the module's\n// exports, walking transitively through same-file declarations (including\n// non-exported helper components). Unlike the file-wide `jsxComponentRoots`,\n// this excludes components rendered only inside dead/unreachable code, so it\n// reflects what the route's server-rendered tree truly contains. Per-export\n// breakdowns let callers attribute a rendered component to the specific export\n// whose subtree renders it (e.g. to keep barrel re-exports precise).\nfunction collectReachableExportRenderedComponentsFromProgram(\n program: unknown,\n): ReachableExportRenderedComponents {\n const { aliasState, declarations, defaultExportIdentifier, directExports, exported } =\n collectModuleExportMap(program);\n\n const names = new Set<string>();\n const roots = new Set<string>();\n const perExportNames: Record<string, string[]> = {};\n const perExportRoots: Record<string, string[]> = {};\n\n const visit = (\n node: unknown,\n exportRoots: Set<string>,\n exportNames: Set<string>,\n seen: Set<string>,\n ): void => {\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(node, aliasState.aliases);\n for (const root of renderedRoots) {\n exportRoots.add(root);\n roots.add(root);\n }\n\n const renderedNames = collectJsxComponentNamesFromSubtree(node, aliasState.aliases);\n for (const name of renderedNames) {\n exportNames.add(name);\n names.add(name);\n }\n\n const calledRoots = collectComponentCallRootNamesFromSubtree(node, aliasState.aliases);\n for (const root of [...renderedRoots, ...calledRoots]) {\n const resolved = aliasState.aliases.get(root) ?? root;\n\n if (seen.has(resolved)) {\n continue;\n }\n\n seen.add(resolved);\n const declaration = declarations.get(resolved);\n\n if (declaration !== undefined) {\n visit(declaration, exportRoots, exportNames, seen);\n }\n }\n };\n\n for (const [name, localName] of exported.entries()) {\n const node = directExports.get(name) ?? declarations.get(localName);\n\n if (node === undefined) {\n continue;\n }\n\n const exportRoots = new Set<string>();\n const exportNames = new Set<string>();\n visit(node, exportRoots, exportNames, new Set<string>([localName]));\n perExportRoots[name] = Array.from(exportRoots).sort();\n perExportNames[name] = Array.from(exportNames).sort();\n }\n\n return {\n defaultExportIdentifier,\n names: Array.from(names).sort(),\n roots: Array.from(roots).sort(),\n perExportNames,\n perExportRoots,\n };\n}\n\nfunction hasReachableLocalClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n roots: readonly string[];\n seen: Set<string>;\n}): boolean {\n for (const root of options.roots) {\n const resolved = options.aliases.get(root) ?? root;\n if (options.seen.has(resolved)) {\n continue;\n }\n\n const declaration = options.declarations.get(resolved);\n if (declaration === undefined) {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(declaration)) {\n return true;\n }\n\n options.seen.add(resolved);\n const nestedCalledRoots = collectComponentCallRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n const nestedRenderedRoots = collectJsxComponentRootNamesFromSubtree(\n declaration,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...nestedCalledRoots, ...nestedRenderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasReachableExportClientRuntime(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n localName: string;\n node: unknown;\n}): boolean {\n return hasReachableExportClientRuntimeNode({\n aliases: options.aliases,\n declarations: options.declarations,\n node: options.node,\n seen: new Set([options.localName]),\n });\n}\n\nfunction hasReachableExportClientRuntimeNode(options: {\n aliases: ReadonlyMap<string, string>;\n declarations: ReadonlyMap<string, unknown>;\n node: unknown;\n seen: Set<string>;\n}): boolean {\n if (hasClientRuntimeSyntaxNode(options.node)) {\n return true;\n }\n\n const references = collectRuntimeReferenceRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n for (const reference of references) {\n const declaration = options.declarations.get(reference);\n if (\n declaration !== undefined &&\n !isFunctionLikeClientRuntimeDeclaration(declaration) &&\n hasClientRuntimeSyntaxNode(declaration)\n ) {\n return true;\n }\n }\n\n const calledRoots = collectRuntimeCallRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n const renderedRoots = collectJsxComponentRootNamesFromSubtree(\n options.node,\n options.aliases,\n );\n\n if (\n hasReachableLocalClientRuntime({\n aliases: options.aliases,\n declarations: options.declarations,\n roots: [...calledRoots, ...renderedRoots],\n seen: options.seen,\n })\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction collectRuntimeReferenceRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeReferenceRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n undefined,\n undefined,\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeCallRootNamesFromSubtree(\n node: unknown,\n aliases: ReadonlyMap<string, string>,\n): string[] {\n const names = new Set<string>();\n collectRuntimeCallRootNamesFromNode(\n node,\n names,\n createComponentAliasState(aliases),\n new Set(),\n );\n return Array.from(names).sort();\n}\n\nfunction collectRuntimeReferenceRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeReferenceRootNamesFromNode(\n child,\n names,\n state,\n shadowed,\n parent,\n parentKey,\n );\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (object.type === \"Identifier\" && typeof object.name === \"string\") {\n if (\n !shadowed.has(object.name) &&\n isRuntimeReferenceIdentifier(parent, parentKey)\n ) {\n names.add(state.aliases.get(object.name) ?? object.name);\n }\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeReferenceRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n object,\n \"body\",\n );\n return;\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeReferenceRootNamesFromNode(\n value,\n names,\n state,\n childShadowed,\n object,\n key,\n );\n }\n}\n\nfunction collectRuntimeCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n shadowed: ReadonlySet<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectRuntimeCallRootNamesFromNode(child, names, state, shadowed);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined || shouldSkipRuntimeReferenceNode(object)) {\n return;\n }\n\n if (isFunctionLikeClientRuntimeDeclaration(object)) {\n const nextShadowed = new Set(shadowed);\n collectBindingNamesInto(object.id, nextShadowed);\n for (const parameter of readArray(object.params)) {\n collectBindingNamesInto(parameter, nextShadowed);\n }\n collectRuntimeCallRootNamesFromNode(\n object.body,\n names,\n state,\n addBlockBindingNames(object.body, nextShadowed),\n );\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && !shadowed.has(root)) {\n names.add(root);\n }\n }\n\n const childShadowed =\n object.type === \"Program\" || object.type === \"BlockStatement\"\n ? addBlockBindingNames(object, new Set(shadowed))\n : shadowed;\n\n for (const [key, value] of Object.entries(object)) {\n if (shouldSkipRuntimeReferenceProperty(object, key)) {\n continue;\n }\n\n collectRuntimeCallRootNamesFromNode(value, names, state, childShadowed);\n }\n}\n\nfunction shouldSkipRuntimeReferenceNode(node: Record<string, unknown>): boolean {\n return (\n (typeof node.type === \"string\" && node.type.startsWith(\"TS\")) ||\n node.type === \"ImportDeclaration\"\n );\n}\n\nfunction shouldSkipRuntimeReferenceProperty(\n node: Record<string, unknown>,\n key: string,\n): boolean {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n return true;\n }\n\n if (key === \"id\" && isDeclarationWithId(node)) {\n return true;\n }\n\n if (key === \"params\" && isFunctionLikeClientRuntimeDeclaration(node)) {\n return true;\n }\n\n if (key === \"key\" && isNonComputedPropertyKey(node)) {\n return true;\n }\n\n return false;\n}\n\nfunction isRuntimeReferenceIdentifier(\n parent: Record<string, unknown> | undefined,\n parentKey: string | undefined,\n): boolean {\n if (parent === undefined) {\n return true;\n }\n\n if (parent.type === \"MemberExpression\" && parentKey === \"property\" && parent.computed !== true) {\n return false;\n }\n\n if (parentKey === \"id\" && isDeclarationWithId(parent)) {\n return false;\n }\n\n if (parentKey === \"params\" && isFunctionLikeClientRuntimeDeclaration(parent)) {\n return false;\n }\n\n if (parentKey === \"key\" && isNonComputedPropertyKey(parent)) {\n return false;\n }\n\n return !(\n (parent.type === \"BreakStatement\" ||\n parent.type === \"ContinueStatement\" ||\n parent.type === \"LabeledStatement\") &&\n parentKey === \"label\"\n );\n}\n\nfunction addBlockBindingNames(\n node: unknown,\n names: Set<string>,\n): ReadonlySet<string> {\n const body = readArray(readObject(node).body);\n\n for (const statement of body) {\n const object = readObject(statement);\n if (object.type === \"VariableDeclaration\") {\n for (const declaration of readArray(object.declarations)) {\n collectBindingNamesInto(readObject(declaration).id, names);\n }\n continue;\n }\n\n if (object.type === \"FunctionDeclaration\" || object.type === \"ClassDeclaration\") {\n collectBindingNamesInto(object.id, names);\n }\n }\n\n return names;\n}\n\nfunction collectBindingNamesInto(node: unknown, names: Set<string>): void {\n for (const name of bindingNames(node)) {\n names.add(name);\n }\n}\n\nfunction isFunctionLikeClientRuntimeDeclaration(node: unknown): boolean {\n const object = readObject(node);\n return (\n object.type === \"FunctionDeclaration\" ||\n object.type === \"FunctionExpression\" ||\n object.type === \"ArrowFunctionExpression\"\n );\n}\n\nfunction isDeclarationWithId(node: Record<string, unknown>): boolean {\n return (\n node.type === \"VariableDeclarator\" ||\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ClassDeclaration\" ||\n node.type === \"ClassExpression\"\n );\n}\n\nfunction isNonComputedPropertyKey(node: Record<string, unknown>): boolean {\n return (\n (node.type === \"Property\" ||\n node.type === \"ObjectProperty\" ||\n node.type === \"PropertyDefinition\" ||\n node.type === \"MethodDefinition\") &&\n node.computed !== true\n );\n}\n\nexport function hasModuleDirective(input: {\n code: string;\n directive: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasModuleDirectiveInProgram(parsed.program, input.directive);\n}\n\nfunction hasModuleDirectiveInProgram(program: unknown, expectedDirective: string): boolean {\n for (const statement of programBody(program)) {\n if (statement.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const directive = statement.directive;\n if (typeof directive !== \"string\") {\n return false;\n }\n\n if (directive === expectedDirective) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function hasClientRuntimeSyntax(input: {\n code: string;\n filename?: string | undefined;\n}): boolean {\n const parsed = parseModule(input.code, input.filename);\n\n return hasClientRuntimeSyntaxNode(parsed.program);\n}\n\ninterface Replacement {\n end: number;\n start: number;\n text: string;\n}\n\nfunction parseModule(code: string, filename: string | undefined) {\n return parseModuleContext(createCompilerModuleContext({ code, filename }));\n}\n\nfunction parseModuleContext(context: CompilerModuleContext): CompilerModuleContext {\n if (context.parseErrors.length > 0) {\n throw new Error(\n `${context.filename}: ${context.parseErrors.map(parseErrorMessage).join(\"\\n\")}`,\n );\n }\n\n return context;\n}\n\nfunction parseErrorMessage(error: unknown): string {\n const object = readObject(error);\n const message = typeof object.message === \"string\" ? object.message : \"Parse error\";\n const codeframe = typeof object.codeframe === \"string\" ? object.codeframe.trimEnd() : undefined;\n\n return codeframe === undefined ? message : `${message}\\n${codeframe}`;\n}\n\nfunction programBody(program: unknown): Record<string, unknown>[] {\n const body = readObject(program).body;\n return Array.isArray(body) ? body.map(readObject) : [];\n}\n\nfunction exportedNames(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ExportDefaultDeclaration\") {\n return [\"default\"];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return [];\n }\n\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration !== undefined) {\n if (declaration.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n return typeof name === \"string\" ? [name] : [];\n }\n\n if (declaration.type === \"VariableDeclaration\") {\n const declarations = Array.isArray(declaration.declarations) ? declaration.declarations : [];\n\n return declarations.flatMap((item) => bindingNames(readObject(item).id));\n }\n\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers) ? statement.specifiers : [];\n return specifiers.flatMap((specifier) => {\n const name = exportedNameForSpecifier(readObject(specifier));\n\n return typeof name === \"string\" ? [name] : [];\n });\n}\n\nfunction collectTopLevelDeclarationReferences(\n statement: Record<string, unknown>,\n declarations: Map<string, unknown>,\n): void {\n const declaration =\n statement.type === \"ExportNamedDeclaration\"\n ? readOptionalObject(statement.declaration)\n : statement;\n\n if (declaration?.type === \"FunctionDeclaration\") {\n const name = readOptionalObject(declaration.id)?.name;\n\n if (typeof name === \"string\") {\n declarations.set(name, declaration);\n }\n return;\n }\n\n if (declaration?.type !== \"VariableDeclaration\") {\n return;\n }\n\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n const id = readOptionalObject(declarator.id);\n const name = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (name !== undefined) {\n declarations.set(name, readOptionalObject(declarator.init) ?? declarator);\n }\n }\n}\n\nfunction declarationForExportedName(\n declaration: Record<string, unknown>,\n name: string,\n): unknown | undefined {\n if (declaration.type === \"VariableDeclaration\") {\n const declarators = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n for (const declarator of declarators) {\n if (bindingNames(declarator.id).includes(name)) {\n return readOptionalObject(declarator.init) ?? declarator;\n }\n }\n }\n\n return declaration;\n}\n\nfunction localNameForExportSpecifier(specifier: Record<string, unknown>): string | undefined {\n const local = readOptionalObject(specifier.local);\n const name = local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction exportDeclarationDemotion(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const declaration = readOptionalObject(statement.declaration);\n const exported = exportedNames(statement);\n\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return partialSpecifierExportReplacement(code, statement, names);\n }\n\n const range = statementRange(code, statement);\n\n if (range === undefined) {\n return undefined;\n }\n\n if (declaration?.type === \"FunctionDeclaration\" || declaration?.type === \"VariableDeclaration\") {\n return { ...range, text: `${nodeText(code, declaration)}\\n` };\n }\n\n return { ...range, text: \"\" };\n}\n\nfunction exportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type === \"ExportDefaultDeclaration\") {\n const range = statementRange(code, statement);\n return names.has(\"default\") && range !== undefined ? { ...range, text: \"\" } : undefined;\n }\n\n if (statement.type !== \"ExportNamedDeclaration\") {\n return undefined;\n }\n\n const partial = partialExportDeclarationReplacement(code, statement, names);\n\n if (partial !== undefined) {\n return partial;\n }\n\n const exported = exportedNames(statement);\n if (exported.length === 0 || !exported.every((name) => names.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction partialExportDeclarationReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declaration = readOptionalObject(statement.declaration);\n\n if (declaration?.type === \"VariableDeclaration\") {\n return partialVariableExportReplacement(code, statement, declaration, names);\n }\n\n if (declaration !== undefined) {\n return undefined;\n }\n\n return partialSpecifierExportReplacement(code, statement, names);\n}\n\nfunction partialVariableExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n declaration: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const declarations = Array.isArray(declaration.declarations)\n ? declaration.declarations.map(readObject)\n : [];\n\n if (declarations.length <= 1) {\n return undefined;\n }\n\n const kept = declarations.filter((declarator) => {\n const declaredNames = bindingNames(declarator.id);\n return declaredNames.every((name) => !names.has(name));\n });\n\n if (kept.length === declarations.length) {\n return undefined;\n }\n\n if (kept.length === 0) {\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n }\n\n const range = statementRange(code, statement);\n const kind = typeof declaration.kind === \"string\" ? declaration.kind : \"const\";\n\n return range === undefined\n ? undefined\n : {\n ...range,\n text: `export ${kind} ${kept.map((item) => nodeText(code, item)).join(\", \")};\\n`,\n };\n}\n\nfunction partialSpecifierExportReplacement(\n code: string,\n statement: Record<string, unknown>,\n names: ReadonlySet<string>,\n): Replacement | undefined {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length <= 1) {\n return undefined;\n }\n\n const kept = specifiers.filter((specifier) => {\n const name = exportedNameForSpecifier(specifier);\n return typeof name !== \"string\" || !names.has(name);\n });\n\n if (kept.length === specifiers.length) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n if (range === undefined) {\n return undefined;\n }\n\n if (kept.length === 0) {\n return { ...range, text: \"\" };\n }\n\n const source = readOptionalObject(statement.source);\n const sourceText = source === undefined ? \"\" : ` from ${nodeText(code, source)}`;\n const exportKind = statement.exportKind === \"type\" ? \"export type\" : \"export\";\n\n return {\n ...range,\n text: `${exportKind} { ${kept.map((item) => nodeText(code, item)).join(\", \")} }${sourceText};\\n`,\n };\n}\n\nfunction unusedStaticValueImportReplacement(\n code: string,\n statement: Record<string, unknown>,\n referencedNames: ReadonlySet<string>,\n): Replacement | undefined {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return undefined;\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n if (specifiers.length === 0) {\n return undefined;\n }\n\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n if (localNames.length === 0 || localNames.some((name) => referencedNames.has(name))) {\n return undefined;\n }\n\n const range = statementRange(code, statement);\n return range === undefined ? undefined : { ...range, text: \"\" };\n}\n\nfunction staticModuleSpecifier(statement: Record<string, unknown>): string[] {\n if (statement.type === \"ImportDeclaration\") {\n if (statement.importKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n if (statement.type === \"ExportAllDeclaration\" || statement.type === \"ExportNamedDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n return sourceValue(statement);\n }\n\n return [];\n}\n\nfunction staticImportReference(\n statement: Record<string, unknown>,\n): ClientRouteStaticImportReference[] {\n if (statement.type !== \"ImportDeclaration\" || statement.importKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n const importSpecifiers = specifiers.flatMap(staticImportSpecifierReference);\n const localNames = specifiers\n .filter((specifier) => specifier.importKind !== \"type\")\n .flatMap((specifier) => {\n const local = readOptionalObject(specifier.local);\n return typeof local?.name === \"string\" ? [local.name] : [];\n });\n\n return [\n {\n localNames,\n sideEffect: localNames.length === 0,\n source,\n specifiers: importSpecifiers,\n },\n ];\n}\n\nfunction staticImportSpecifierReference(\n specifier: Record<string, unknown>,\n): StaticImportSpecifierReference[] {\n if (specifier.importKind === \"type\") {\n return [];\n }\n\n const localName = readOptionalObject(specifier.local)?.name;\n if (typeof localName !== \"string\") {\n return [];\n }\n\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return [{ importedName: \"default\", kind: \"default\", localName }];\n }\n\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return [{ importedName: \"*\", kind: \"namespace\", localName }];\n }\n\n const imported = readOptionalObject(specifier.imported);\n const importedName = imported?.name ?? imported?.value;\n return typeof importedName === \"string\"\n ? [{ importedName, kind: \"named\", localName }]\n : [];\n}\n\nfunction staticExportReference(statement: Record<string, unknown>): StaticExportReference[] {\n if (statement.type === \"ExportAllDeclaration\") {\n if (statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n return source === undefined\n ? []\n : [{ exportedNames: [], exportAll: true, specifiers: [], source }];\n }\n\n if (statement.type !== \"ExportNamedDeclaration\" || statement.exportKind === \"type\") {\n return [];\n }\n\n const source = sourceValue(statement)[0];\n if (source === undefined) {\n return [];\n }\n\n return [\n {\n exportedNames: exportedNames(statement),\n exportAll: false,\n specifiers: staticExportSpecifierReferences(statement),\n source,\n },\n ];\n}\n\nfunction staticExportSpecifierReferences(\n statement: Record<string, unknown>,\n): StaticExportSpecifierReference[] {\n const specifiers = Array.isArray(statement.specifiers)\n ? statement.specifiers.map(readObject)\n : [];\n\n return specifiers.flatMap((specifier) => {\n const exportedName = exportedNameForSpecifier(specifier);\n const localName = localNameForExportSpecifier(specifier);\n\n return exportedName === undefined || localName === undefined\n ? []\n : [{ exportedName, localName }];\n });\n}\n\nfunction sourceValue(statement: Record<string, unknown>): string[] {\n const source = readOptionalObject(statement.source);\n const value = source?.value;\n\n return typeof value === \"string\" ? [value] : [];\n}\n\nfunction collectJsxComponentRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentRootNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const name = jsxNameRoot(nameNode);\n if (name !== undefined && (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(name))) {\n names.add(name);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectJsxComponentRootNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentNamesFromNode(node: unknown, names: Set<string>): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectJsxComponentNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (object.type === \"JSXElement\") {\n const opening = readOptionalObject(object.openingElement);\n const nameNode = readOptionalObject(opening?.name);\n const root = jsxNameRoot(nameNode);\n const name = jsxTagName(nameNode);\n if (\n name !== \"\" &&\n root !== undefined &&\n (nameNode?.type === \"JSXMemberExpression\" || /^[A-Z]/.test(root))\n ) {\n names.add(name);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectJsxComponentNamesFromNode(value, names);\n }\n}\n\nfunction collectJsxComponentNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectJsxComponentRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectJsxComponentRootNamesFromNode(node, names);\n collectSimpleComponentAliasesFromNode(node, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction collectComponentCallRootNamesFromNode(\n node: unknown,\n names: Set<string>,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectComponentCallRootNamesFromNode(child, names, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"CallExpression\") {\n const root = expressionRootName(readOptionalObject(object.callee), state);\n if (root !== undefined && /^[A-Z]/.test(root)) {\n names.add(root);\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectComponentCallRootNamesFromNode(value, names, state);\n }\n}\n\nfunction collectComponentCallRootNamesFromSubtree(\n node: unknown,\n outerAliases?: ReadonlyMap<string, string> | undefined,\n): string[] {\n const names = new Set<string>();\n const aliasState = createComponentAliasState(outerAliases);\n\n collectSimpleComponentAliasesFromNode(node, aliasState);\n collectComponentCallRootNamesFromNode(node, names, aliasState);\n expandJsxComponentAliasRoots(names, aliasState.aliases);\n return Array.from(names).sort();\n}\n\nfunction jsxNameRoot(node: Record<string, unknown> | undefined): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n return jsxNameRoot(readOptionalObject(node.object));\n }\n\n return undefined;\n}\n\nfunction collectSimpleComponentAliasesFromNode(\n node: unknown,\n state: ComponentAliasState,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectSimpleComponentAliasesFromNode(child, state);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"VariableDeclaration\") {\n const constant = object.kind === \"const\";\n const declarations = Array.isArray(object.declarations) ? object.declarations : [];\n for (const declaration of declarations) {\n collectVariableDeclaratorComponentAliases(readOptionalObject(declaration), state, constant);\n }\n return;\n }\n\n if (object.type === \"VariableDeclarator\") {\n collectVariableDeclaratorComponentAliases(object, state, false);\n }\n\n if (object.type === \"AssignmentExpression\") {\n collectAssignmentComponentAlias(object, state);\n }\n\n if (object.type === \"CallExpression\") {\n collectObjectAssignComponentAliases(object, state);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectSimpleComponentAliasesFromNode(value, state);\n }\n}\n\nfunction createComponentAliasState(\n aliases?: ReadonlyMap<string, string> | undefined,\n): ComponentAliasState {\n return {\n aliases: new Map(aliases),\n stringConstants: new Map(),\n };\n}\n\nfunction collectVariableDeclaratorComponentAliases(\n object: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n constant: boolean,\n): void {\n if (object?.type !== \"VariableDeclarator\") {\n return;\n }\n\n const id = readOptionalObject(object.id);\n const init = readOptionalObject(object.init);\n const aliasName = typeof id?.name === \"string\" ? id.name : undefined;\n\n if (aliasName === undefined) {\n return;\n }\n\n if (constant) {\n const stringValue = stringExpressionValue(init, state);\n if (stringValue !== undefined) {\n state.stringConstants.set(aliasName, stringValue);\n }\n }\n\n collectObjectLiteralComponentAliases(aliasName, init, state);\n\n const rootName = expressionRootName(init, state);\n if (rootName !== undefined) {\n state.aliases.set(aliasName, rootName);\n }\n}\n\nfunction collectObjectLiteralComponentAliases(\n objectName: string | undefined,\n init: Record<string, unknown> | undefined,\n state: ComponentAliasState,\n): void {\n if (objectName === undefined || init?.type !== \"ObjectExpression\") {\n return;\n }\n\n const properties = Array.isArray(init.properties) ? init.properties : [];\n for (const propertyValue of properties) {\n const property = readOptionalObject(propertyValue);\n if (property?.type !== \"Property\") {\n continue;\n }\n\n const keyName = propertyName(readOptionalObject(property.key), property.computed === true, state);\n const valueName = expressionRootName(readOptionalObject(property.value), state);\n if (keyName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectName}.${keyName}`, valueName);\n }\n }\n}\n\nfunction collectAssignmentComponentAlias(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (node.operator !== \"=\") {\n return;\n }\n\n const left = readOptionalObject(node.left);\n const right = readOptionalObject(node.right);\n if (left?.type !== \"MemberExpression\") {\n return;\n }\n\n const objectRoot = expressionRootName(readOptionalObject(left.object), state);\n const memberName = propertyName(readOptionalObject(left.property), left.computed === true, state);\n const valueName = expressionRootName(right, state);\n if (objectRoot !== undefined && memberName !== undefined && valueName !== undefined) {\n state.aliases.set(`${objectRoot}.${memberName}`, valueName);\n }\n}\n\nfunction collectObjectAssignComponentAliases(\n node: Record<string, unknown>,\n state: ComponentAliasState,\n): void {\n if (!isObjectAssignCall(node)) {\n return;\n }\n\n const args = Array.isArray(node.arguments) ? node.arguments.map(readOptionalObject) : [];\n const target = expressionRootName(args[0], state);\n if (target === undefined) {\n return;\n }\n\n for (const source of args.slice(1)) {\n collectObjectLiteralComponentAliases(target, source, state);\n }\n}\n\nfunction isObjectAssignCall(node: Record<string, unknown>): boolean {\n const callee = readOptionalObject(node.callee);\n if (callee?.type !== \"MemberExpression\" || callee.computed === true) {\n return false;\n }\n\n const object = readOptionalObject(callee.object);\n const property = readOptionalObject(callee.property);\n return object?.type === \"Identifier\" && object.name === \"Object\" &&\n property?.type === \"Identifier\" && property.name === \"assign\";\n}\n\nfunction expandJsxComponentAliasRoots(\n names: Set<string>,\n aliases: ReadonlyMap<string, string>,\n): void {\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const [alias, root] of aliases) {\n if (names.has(alias) && !names.has(root)) {\n names.add(root);\n changed = true;\n }\n }\n }\n}\n\nfunction expressionRootName(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (node === undefined) {\n return undefined;\n }\n\n if (node.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"MemberExpression\") {\n const objectRoot = expressionRootName(readOptionalObject(node.object), state);\n const aliasedObjectRoot =\n objectRoot === undefined ? undefined : state?.aliases.get(objectRoot) ?? objectRoot;\n const memberName = propertyName(readOptionalObject(node.property), node.computed === true, state);\n const memberAlias =\n objectRoot !== undefined && memberName !== undefined\n ? state?.aliases.get(`${objectRoot}.${memberName}`) ??\n (aliasedObjectRoot === undefined\n ? undefined\n : state?.aliases.get(`${aliasedObjectRoot}.${memberName}`))\n : undefined;\n\n return memberAlias ??\n (node.computed === true && memberName === undefined\n ? uniqueObjectMemberAlias(aliasedObjectRoot, state)\n : aliasedObjectRoot);\n }\n\n if (node.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n expressionRootName(readOptionalObject(node.consequent), state),\n expressionRootName(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (\n node.type === \"ChainExpression\" ||\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"TSNonNullExpression\" ||\n node.type === \"ParenthesizedExpression\"\n ) {\n return expressionRootName(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction propertyName(\n node: Record<string, unknown> | undefined,\n computed: boolean,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (!computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (computed && node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state?.stringConstants.get(node.name);\n }\n\n return stringExpressionValue(node, state);\n}\n\nfunction stringExpressionValue(\n node: Record<string, unknown> | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (\n (node?.type === \"StringLiteral\" || node?.type === \"Literal\") &&\n typeof node.value === \"string\"\n ) {\n return node.value;\n }\n\n if (node?.type === \"ConditionalExpression\") {\n return uniqueDefinedString([\n stringExpressionValue(readOptionalObject(node.consequent), state),\n stringExpressionValue(readOptionalObject(node.alternate), state),\n ]);\n }\n\n if (node?.type === \"Identifier\" && typeof node.name === \"string\") {\n return state?.stringConstants.get(node.name);\n }\n\n if (\n node?.type === \"ChainExpression\" ||\n node?.type === \"TSAsExpression\" ||\n node?.type === \"TSSatisfiesExpression\" ||\n node?.type === \"TSNonNullExpression\" ||\n node?.type === \"ParenthesizedExpression\"\n ) {\n return stringExpressionValue(readOptionalObject(node.expression), state);\n }\n\n return undefined;\n}\n\nfunction uniqueObjectMemberAlias(\n objectName: string | undefined,\n state?: ComponentAliasState | undefined,\n): string | undefined {\n if (objectName === undefined || state === undefined) {\n return undefined;\n }\n\n const prefix = `${objectName}.`;\n return uniqueDefinedString(\n Array.from(state.aliases.entries())\n .filter(([key]) => key.startsWith(prefix))\n .map(([, value]) => value),\n );\n}\n\nfunction uniqueDefinedString(values: readonly (string | undefined)[]): string | undefined {\n const unique = new Set(values.filter((value): value is string => value !== undefined));\n return unique.size === 1 ? Array.from(unique)[0] : undefined;\n}\n\nfunction collectIdentifierReferenceNamesFromNode(\n node: unknown,\n names: Set<string>,\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectIdentifierReferenceNamesFromNode(child, names);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n (object.type === \"Identifier\" || object.type === \"JSXIdentifier\") &&\n typeof object.name === \"string\"\n ) {\n names.add(object.name);\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectIdentifierReferenceNamesFromNode(value, names);\n }\n}\n\nfunction collectFormActionReferencesFromNode(\n node: unknown,\n references: FormActionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionReferencesFromNode(child, references);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n typeof expression.name === \"string\" &&\n start !== undefined &&\n end !== undefined\n ) {\n references.push({ end, name: expression.name, start });\n }\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectFormActionReferencesFromNode(value, references);\n }\n}\n\nfunction collectFormActionExpressionReferencesFromNode(\n code: string,\n node: unknown,\n references: FormActionExpressionReference[],\n): void {\n if (Array.isArray(node)) {\n for (const child of node) {\n collectFormActionExpressionReferencesFromNode(code, child, references);\n }\n return;\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return;\n }\n\n if (\n object.type === \"JSXOpeningElement\" &&\n jsxTagName(readOptionalObject(object.name)) === \"form\"\n ) {\n const attributes = Array.isArray(object.attributes) ? object.attributes : [];\n\n for (const attribute of attributes) {\n const attr = readObject(attribute);\n\n if (attr.type !== \"JSXAttribute\" || readObject(attr.name).name !== \"action\") {\n continue;\n }\n\n const value = readObject(attr.value);\n const expression = readObject(value.expression);\n const start = typeof object.start === \"number\" ? object.start : undefined;\n const end = typeof object.end === \"number\" ? object.end : undefined;\n const expressionStart = typeof expression.start === \"number\" ? expression.start : undefined;\n const expressionEnd = typeof expression.end === \"number\" ? expression.end : undefined;\n\n if (\n value.type === \"JSXExpressionContainer\" &&\n start !== undefined &&\n end !== undefined &&\n expressionStart !== undefined &&\n expressionEnd !== undefined\n ) {\n references.push({\n end,\n expression: code.slice(expressionStart, expressionEnd).trim(),\n expressionEnd,\n expressionStart,\n start,\n });\n }\n }\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n collectFormActionExpressionReferencesFromNode(code, value, references);\n }\n}\n\nfunction jsxTagName(node: Record<string, unknown> | undefined): string {\n if (node === undefined) {\n return \"\";\n }\n\n if (typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXIdentifier\" && typeof node.name === \"string\") {\n return node.name;\n }\n\n if (node.type === \"JSXMemberExpression\") {\n const objectName = jsxTagName(readOptionalObject(node.object));\n const propertyName = jsxTagName(readOptionalObject(node.property));\n return `${objectName}.${propertyName}`;\n }\n\n return \"\";\n}\n\nfunction hasClientRuntimeSyntaxNode(node: unknown): boolean {\n if (Array.isArray(node)) {\n return node.some(hasClientRuntimeSyntaxNode);\n }\n\n const object = readOptionalObject(node);\n if (object === undefined) {\n return false;\n }\n\n if (typeof object.type === \"string\" && object.type.startsWith(\"TS\")) {\n return false;\n }\n\n if (object.type === \"ImportDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportAllDeclaration\") {\n return false;\n }\n\n if (object.type === \"ExportNamedDeclaration\" || object.type === \"ExportDefaultDeclaration\") {\n return hasClientRuntimeSyntaxNode(object.declaration);\n }\n\n if (object.type === \"JSXAttribute\") {\n const name = readOptionalObject(object.name)?.name;\n return typeof name === \"string\" && /^on[A-Z]/.test(name);\n }\n\n if (object.type === \"CallExpression\") {\n const callee = readOptionalObject(object.callee);\n if (callee?.type === \"Identifier\" && callee.name === \"cell\") {\n return true;\n }\n }\n\n if (object.type === \"Identifier\" && isClientRuntimeGlobal(object.name)) {\n return true;\n }\n\n if (object.type === \"MemberExpression\") {\n return (\n hasClientRuntimeSyntaxNode(object.object) ||\n (object.computed === true && hasClientRuntimeSyntaxNode(object.property))\n );\n }\n\n for (const [key, value] of Object.entries(object)) {\n if (key === \"type\" || key === \"start\" || key === \"end\" || key === \"loc\") {\n continue;\n }\n\n if (hasClientRuntimeSyntaxNode(value)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isClientRuntimeGlobal(name: unknown): boolean {\n return name === \"window\" || name === \"document\" || name === \"localStorage\";\n}\n\nfunction exportedNameForSpecifier(specifier: Record<string, unknown>): string | undefined {\n const exported = readOptionalObject(specifier.exported);\n const local = readOptionalObject(specifier.local);\n const name = exported?.name ?? exported?.value ?? local?.name ?? local?.value;\n\n return typeof name === \"string\" ? name : undefined;\n}\n\nfunction bindingNames(node: unknown): string[] {\n const object = readObject(node);\n\n if (typeof object.name === \"string\") {\n return [object.name];\n }\n\n if (Array.isArray(object.properties)) {\n return object.properties.flatMap((property) => bindingNames(readObject(property).value));\n }\n\n if (Array.isArray(object.elements)) {\n return object.elements.flatMap((element) => (element === null ? [] : bindingNames(element)));\n }\n\n if (object.type === \"AssignmentPattern\") {\n return bindingNames(object.left);\n }\n\n if (object.type === \"RestElement\") {\n return bindingNames(object.argument);\n }\n\n return [];\n}\n\nfunction statementRange(\n code: string,\n statement: Record<string, unknown>,\n): { end: number; start: number } | undefined {\n const start = typeof statement.start === \"number\" ? statement.start : undefined;\n const end = typeof statement.end === \"number\" ? statement.end : undefined;\n\n if (start === undefined || end === undefined) {\n return undefined;\n }\n\n let removalStart = start;\n while (removalStart > 0 && code[removalStart - 1] !== \"\\n\") {\n if (!/\\s/.test(code[removalStart - 1] ?? \"\")) {\n break;\n }\n removalStart -= 1;\n }\n\n let removalEnd = end;\n while (removalEnd < code.length && /[ \\t]/.test(code[removalEnd] ?? \"\")) {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\r\") {\n removalEnd += 1;\n }\n if (code[removalEnd] === \"\\n\") {\n removalEnd += 1;\n }\n\n return { start: removalStart, end: removalEnd };\n}\n\nfunction nodeText(code: string, node: Record<string, unknown>): string {\n const start = typeof node.start === \"number\" ? node.start : undefined;\n const end = typeof node.end === \"number\" ? node.end : undefined;\n\n return start === undefined || end === undefined ? \"\" : code.slice(start, end);\n}\n\nfunction readObject(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null ? (value as Record<string, unknown>) : {};\n}\n\nfunction readArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction readOptionalObject(value: unknown): Record<string, unknown> | undefined {\n return typeof value === \"object\" && value !== null\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nexport type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentIr,\n ComponentPropIr,\n ComponentRefIr,\n ConditionalIr,\n DynamicAttributeIr,\n EventAttributeIr,\n ExprIr,\n JsxElementIr,\n JsxFragmentIr,\n JsxNodeIr,\n ListIr,\n ModuleIr,\n SpreadAttributeIr,\n StaticAttributeIr,\n TextIr,\n} from \"./ir.js\";\n"]}
|