blume 1.6.6 → 1.7.1
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/CHANGELOG.md +27 -0
- package/dist/cli/{chunk-etsqspj6.js → chunk-12dzsn9b.js} +140 -23
- package/dist/cli/{chunk-etsqspj6.js.map → chunk-12dzsn9b.js.map} +6 -5
- package/dist/cli/{chunk-aerwpe14.js → chunk-4ae4f395.js} +164 -51
- package/dist/cli/chunk-4ae4f395.js.map +15 -0
- package/dist/cli/{chunk-m3p3wahd.js → chunk-52cwcqvp.js} +4 -4
- package/dist/cli/{chunk-j00ezcg5.js → chunk-5gfw0q4j.js} +9 -9
- package/dist/cli/{chunk-bawgnt8x.js → chunk-6mq7qkve.js} +3 -3
- package/dist/cli/{chunk-nyqzjdhj.js → chunk-82atea4k.js} +5 -5
- package/dist/cli/{chunk-tc89yh2r.js → chunk-8p3xe5jv.js} +2 -2
- package/dist/cli/{chunk-s4k1pnvf.js → chunk-90pdhkpm.js} +11 -11
- package/dist/cli/{chunk-n0y172hf.js → chunk-aqjvpd03.js} +4 -4
- package/dist/cli/{chunk-x1vrdjyk.js → chunk-h9ekmtz7.js} +5 -5
- package/dist/cli/{chunk-f75cqye8.js → chunk-he2zfgah.js} +10 -10
- package/dist/cli/{chunk-s4jn7f1q.js → chunk-j5f2wrj5.js} +2 -2
- package/dist/cli/{chunk-wkq5tbtq.js → chunk-k0v1f8bb.js} +3 -3
- package/dist/cli/{chunk-n4qjabmt.js → chunk-ka5k7cz9.js} +6 -19
- package/dist/cli/{chunk-n4qjabmt.js.map → chunk-ka5k7cz9.js.map} +3 -4
- package/dist/cli/{chunk-5yvt556e.js → chunk-kmx2mydj.js} +2 -2
- package/dist/cli/{chunk-ag1zyr5x.js → chunk-mfm4sjwx.js} +11 -11
- package/dist/cli/{chunk-0ewz4trd.js → chunk-np8dmfb0.js} +6 -6
- package/dist/cli/{chunk-cnvm6k3e.js → chunk-pdwg3q9g.js} +11 -11
- package/dist/cli/{chunk-vv237fp3.js → chunk-q56730e0.js} +26 -12
- package/dist/cli/{chunk-vv237fp3.js.map → chunk-q56730e0.js.map} +3 -3
- package/dist/cli/{chunk-3k0kzs6d.js → chunk-qvvpnwaz.js} +2 -2
- package/dist/cli/{chunk-vv3f8mb6.js → chunk-r99hynxh.js} +25 -24
- package/dist/cli/{chunk-vv3f8mb6.js.map → chunk-r99hynxh.js.map} +4 -4
- package/dist/cli/{chunk-wb067mv3.js → chunk-vyqj481z.js} +19 -7
- package/dist/cli/chunk-vyqj481z.js.map +13 -0
- package/dist/cli/{chunk-62qsssnh.js → chunk-x1wvw7a8.js} +411 -145
- package/dist/cli/chunk-x1wvw7a8.js.map +40 -0
- package/dist/cli/{chunk-9sh49q0h.js → chunk-ywn7t0pb.js} +2 -2
- package/dist/cli/index.js +13 -13
- package/dist/types/components/layout/nav-utils.d.ts +46 -1
- package/dist/types/core/config-input.d.ts +7 -0
- package/dist/types/core/schema.d.ts +2 -0
- package/dist/types/theme/fonts.d.ts +22 -22
- package/docs/02-deployment.mdx +21 -0
- package/docs/08-faq.mdx +21 -0
- package/docs/configuration/ask-ai.mdx +16 -0
- package/docs/content/navigation.mdx +2 -0
- package/docs/content/sources.mdx +2 -2
- package/docs/content/syntax.mdx +1 -1
- package/docs/discoverability/open-graph.mdx +4 -0
- package/package.json +1 -1
- package/src/ai/ask.ts +31 -4
- package/src/astro/generate.ts +142 -5
- package/src/astro/integration.ts +12 -1
- package/src/astro/module-types.ts +9 -0
- package/src/astro/templates.ts +260 -56
- package/src/cli/commands/build.ts +28 -0
- package/src/components/Icon.astro +24 -0
- package/src/components/content/YouTube.astro +1 -1
- package/src/components/icon-sprite-middleware.ts +41 -0
- package/src/components/icon-sprite.ts +93 -0
- package/src/components/layout/Header.astro +1 -1
- package/src/components/layout/IconSprite.astro +11 -0
- package/src/components/layout/NavTree.astro +156 -188
- package/src/components/layout/NavTreeCache.astro +45 -0
- package/src/components/layout/NavTreeScript.astro +256 -0
- package/src/components/layout/PageActions.astro +11 -5
- package/src/components/layout/PageLayout.astro +7 -0
- package/src/components/layout/ReferenceLayout.astro +7 -0
- package/src/components/layout/RootLayout.astro +30 -2
- package/src/components/layout/Search.astro +11 -0
- package/src/components/layout/nav-cache.ts +49 -0
- package/src/components/layout/nav-utils.ts +87 -1
- package/src/core/config-input.ts +7 -0
- package/src/core/schema.ts +5 -0
- package/src/core/sources/assets.ts +162 -26
- package/src/core/sources/notion.ts +60 -1
- package/src/markdown/language-icon.ts +64 -20
- package/src/markdown/mermaid.ts +11 -0
- package/src/og/cache.ts +236 -0
- package/src/og/card.ts +12 -4
- package/src/og/index.ts +8 -1
- package/src/registry/eject.ts +24 -8
- package/src/theme/entry.ts +50 -7
- package/src/theme/fonts.ts +30 -23
- package/dist/cli/chunk-62qsssnh.js.map +0 -36
- package/dist/cli/chunk-aerwpe14.js.map +0 -15
- package/dist/cli/chunk-wb067mv3.js.map +0 -13
- /package/dist/cli/{chunk-m3p3wahd.js.map → chunk-52cwcqvp.js.map} +0 -0
- /package/dist/cli/{chunk-j00ezcg5.js.map → chunk-5gfw0q4j.js.map} +0 -0
- /package/dist/cli/{chunk-bawgnt8x.js.map → chunk-6mq7qkve.js.map} +0 -0
- /package/dist/cli/{chunk-nyqzjdhj.js.map → chunk-82atea4k.js.map} +0 -0
- /package/dist/cli/{chunk-tc89yh2r.js.map → chunk-8p3xe5jv.js.map} +0 -0
- /package/dist/cli/{chunk-s4k1pnvf.js.map → chunk-90pdhkpm.js.map} +0 -0
- /package/dist/cli/{chunk-n0y172hf.js.map → chunk-aqjvpd03.js.map} +0 -0
- /package/dist/cli/{chunk-x1vrdjyk.js.map → chunk-h9ekmtz7.js.map} +0 -0
- /package/dist/cli/{chunk-f75cqye8.js.map → chunk-he2zfgah.js.map} +0 -0
- /package/dist/cli/{chunk-s4jn7f1q.js.map → chunk-j5f2wrj5.js.map} +0 -0
- /package/dist/cli/{chunk-wkq5tbtq.js.map → chunk-k0v1f8bb.js.map} +0 -0
- /package/dist/cli/{chunk-5yvt556e.js.map → chunk-kmx2mydj.js.map} +0 -0
- /package/dist/cli/{chunk-ag1zyr5x.js.map → chunk-mfm4sjwx.js.map} +0 -0
- /package/dist/cli/{chunk-0ewz4trd.js.map → chunk-np8dmfb0.js.map} +0 -0
- /package/dist/cli/{chunk-cnvm6k3e.js.map → chunk-pdwg3q9g.js.map} +0 -0
- /package/dist/cli/{chunk-3k0kzs6d.js.map → chunk-qvvpnwaz.js.map} +0 -0
- /package/dist/cli/{chunk-9sh49q0h.js.map → chunk-ywn7t0pb.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/core/i18n.ts", "../src/core/manifest.ts", "../src/core/project-graph.ts", "../src/theme/icon-kind.ts", "../src/theme/icons.ts", "../src/core/nav-diagnostics.ts", "../src/core/navigation.ts", "../src/core/versions.ts", "../src/core/graph.ts", "../src/core/includes.ts", "../src/core/code-fences.ts", "../src/core/frontmatter.ts", "../src/core/yaml.ts", "../src/core/sources/normalize.ts", "../src/core/heading-markers.ts", "../src/core/last-modified.ts", "../src/core/meta.ts", "../src/core/sources/resolve.ts", "../src/core/sources/cache.ts", "../src/openapi/model.ts", "../src/openapi/asyncapi.ts", "../src/openapi/graphql.ts", "../src/openapi/parse.ts", "../src/openapi/graphql-build.ts", "../src/openapi/render-mdx.ts", "../src/core/api-name.ts", "../src/core/text-width.ts", "../src/openapi/signature.ts", "../src/openapi/source.ts", "../src/core/sources/filesystem.ts", "../src/core/sources/watch.ts", "../src/core/sources/github-releases.ts", "../src/core/sources/mdx-remote.ts", "../src/core/sources/notion.ts", "../src/core/sources/assets.ts", "../src/core/sources/obsidian.ts", "../src/core/sources/sanity.ts", "../src/core/sources/portable-text.ts"],
|
|
3
|
+
"sources": ["../src/core/i18n.ts", "../src/core/manifest.ts", "../src/core/project-graph.ts", "../src/theme/icon-kind.ts", "../src/theme/icons.ts", "../src/core/nav-diagnostics.ts", "../src/core/navigation.ts", "../src/core/versions.ts", "../src/core/graph.ts", "../src/core/includes.ts", "../src/core/code-fences.ts", "../src/core/frontmatter.ts", "../src/core/yaml.ts", "../src/core/sources/normalize.ts", "../src/core/heading-markers.ts", "../src/core/last-modified.ts", "../src/core/meta.ts", "../src/core/sources/resolve.ts", "../src/core/sources/cache.ts", "../src/openapi/model.ts", "../src/openapi/asyncapi.ts", "../src/openapi/graphql.ts", "../src/openapi/parse.ts", "../src/openapi/graphql-build.ts", "../src/openapi/render-mdx.ts", "../src/core/api-name.ts", "../src/core/text-width.ts", "../src/openapi/signature.ts", "../src/openapi/source.ts", "../src/core/sources/filesystem.ts", "../src/core/sources/watch.ts", "../src/core/sources/github-releases.ts", "../src/core/sources/mdx-remote.ts", "../src/core/sources/notion.ts", "../src/components/content/youtube.ts", "../src/core/sources/assets.ts", "../src/core/sources/obsidian.ts", "../src/core/sources/sanity.ts", "../src/core/sources/portable-text.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type {\n ResolvedConfig,\n ResolvedI18nConfig,\n ResolvedVersionsConfig,\n} from \"./schema.ts\";\nimport type { Diagnostic, PageRecord } from \"./types.ts\";\nimport { UI_PACKS } from \"./ui-packs/index.ts\";\n\n/**\n * Locale logic, centralized. Every seam that needs to reason about locales\n * (content discovery, navigation, manifest, runtime generation, the catch-all)\n * goes through these helpers so the routing rules live in exactly one place.\n */\n\n/** Locale codes Blume recognizes (those it ships a UI pack for, plus English). */\nconst KNOWN_LOCALES = new Set(\n [...Object.keys(UI_PACKS), \"en\"].map((code) => code.toLowerCase())\n);\n\n/** True when the project opts into i18n. */\nexport const i18nEnabled = (\n config: ResolvedConfig\n): config is ResolvedConfig & { i18n: ResolvedI18nConfig } =>\n config.i18n !== undefined;\n\n/** All configured locale codes, default first as authored. */\nexport const localeCodes = (i18n: ResolvedI18nConfig): string[] =>\n i18n.locales.map((locale) => locale.code);\n\n/** Text direction for a locale (`ltr` when unknown). */\nexport const localeDir = (\n code: string,\n i18n: ResolvedI18nConfig\n): \"ltr\" | \"rtl\" =>\n i18n.locales.find((locale) => locale.code === code)?.dir ?? \"ltr\";\n\n/**\n * The locale a missing translation falls back to: `fallbackLocale` when set,\n * the default locale when `fallbackLocale` is omitted, or `null` (disabled)\n * when explicitly set to `null`.\n */\nexport const resolveFallbackLocale = (\n i18n: ResolvedI18nConfig\n): string | null => {\n if (i18n.fallbackLocale === null) {\n return null;\n }\n return i18n.fallbackLocale ?? i18n.defaultLocale;\n};\n\n/**\n * The slice of the i18n settings URL routing reads. `ResolvedI18nConfig` and\n * the `blume:data` runtime shape both satisfy it, so route helpers serve the\n * Node-side graph and the rendered page alike.\n */\nexport interface LocaleRouting {\n defaultLocale: string;\n hideDefaultLocalePrefix: boolean;\n locales: { code: string }[];\n}\n\n/** URL prefix for a locale: `\"\"` for the hidden default, else `/<code>`. */\nexport const localePrefix = (code: string, i18n: LocaleRouting): string =>\n code === i18n.defaultLocale && i18n.hideDefaultLocalePrefix ? \"\" : `/${code}`;\n\n/**\n * Prefix a locale-agnostic route (e.g. `/guides/x` or `/`) with its locale.\n * `/` becomes `/fr` (or stays `/` for the hidden default).\n */\nexport const localizeRoute = (\n logicalRoute: string,\n code: string,\n i18n: LocaleRouting\n): string => {\n const prefix = localePrefix(code, i18n);\n if (!prefix) {\n return logicalRoute;\n }\n return logicalRoute === \"/\" ? prefix : `${prefix}${logicalRoute}`;\n};\n\n/**\n * Detect a leading non-default locale directory in a path's segments. The\n * default locale lives at the content root, so only non-default codes are\n * matched as a leading segment. Returns the resolved locale and the remaining\n * (locale-stripped) segments.\n */\nexport const detectLocale = (parts: string[], i18n: ResolvedI18nConfig) => {\n // BCP 47 codes are case-insensitive: a conventional lowercase folder\n // (`pt-br/`) must match a configured `pt-BR`. The configured casing is what\n // flows into routes and labels.\n const first = parts[0]?.toLowerCase();\n const matched = i18n.locales.find(\n (locale) =>\n locale.code !== i18n.defaultLocale && locale.code.toLowerCase() === first\n );\n if (matched) {\n return { locale: matched.code, rest: parts.slice(1) };\n }\n return { locale: i18n.defaultLocale, rest: parts };\n};\n\n/**\n * Resolve where a content file lives across locales, by parser:\n * - `dir`: a leading locale directory (`fr/page.mdx`)\n * - `dot`: a filename suffix (`page.fr.mdx`)\n *\n * A `.$.` infix (e.g. `changelog.$.mdx`) marks a shared, locale-agnostic file\n * that is materialized into every configured locale. Returns the locale-stripped\n * path (used for nav grouping) and the locale codes the file maps to (one for a\n * normal file, all locales for a shared one).\n */\nexport const localePlacement = (\n rel: string,\n ext: string,\n i18n: ResolvedI18nConfig\n) => {\n const base = rel.slice(0, rel.length - ext.length);\n\n // Shared `$` file: the same content in every locale. A shared file placed\n // inside a locale directory (`fr/changelog.$.mdx`) still sheds that\n // directory from its nav path — otherwise every locale's record would route\n // under `/fr/…`, nesting the default locale inside the French namespace and\n // the French copy at `/fr/fr/…`.\n if (base.endsWith(\".$\")) {\n const shared = `${base.slice(0, -2)}${ext}`;\n return {\n locales: i18n.locales.map((locale) => locale.code),\n navPath:\n i18n.parser === \"dir\"\n ? detectLocale(shared.split(\"/\"), i18n).rest.join(\"/\")\n : shared,\n };\n }\n\n if (i18n.parser === \"dot\") {\n const lastDot = base.lastIndexOf(\".\");\n // Only a dot inside the filename (not a directory) is a locale suffix. Any\n // configured locale counts — including the default, so the symmetric\n // authoring `intro.en.mdx` + `intro.fr.mdx` shares one translation key\n // instead of routing the default file to a literal `/intro.en`.\n if (lastDot > base.lastIndexOf(\"/\")) {\n // Case-insensitive, like `detectLocale`: `intro.pt-br.mdx` matches a\n // configured `pt-BR` and adopts its casing.\n const suffix = base.slice(lastDot + 1).toLowerCase();\n const matched = i18n.locales.find(\n (locale) => locale.code.toLowerCase() === suffix\n );\n if (matched) {\n return {\n locales: [matched.code],\n navPath: `${base.slice(0, lastDot)}${ext}`,\n };\n }\n }\n return { locales: [i18n.defaultLocale], navPath: rel };\n }\n\n const { locale, rest } = detectLocale(rel.split(\"/\"), i18n);\n return { locales: [locale], navPath: rest.join(\"/\") };\n};\n\n/**\n * The inverse of {@link localePlacement}: where a default-locale file's\n * translation into `locale` lives, by parser:\n * - `dir`: a leading locale directory (`guides/x.mdx` → `fr/guides/x.mdx`)\n * - `dot`: a filename suffix (`guides/x.mdx` → `guides/x.fr.mdx`)\n *\n * Under `dot`, a source authored with an explicit default-locale suffix\n * (`x.en.mdx`) swaps it for the target's (`x.fr.mdx`) — same case-insensitive\n * last-dot-inside-filename logic as `localePlacement`, so both spellings of a\n * default-locale file resolve to one canonical target.\n */\nexport const localeTargetPath = (\n rel: string,\n ext: string,\n locale: string,\n i18n: ResolvedI18nConfig\n): string => {\n if (i18n.parser === \"dot\") {\n let base = rel.slice(0, rel.length - ext.length);\n const lastDot = base.lastIndexOf(\".\");\n if (lastDot > base.lastIndexOf(\"/\")) {\n const suffix = base.slice(lastDot + 1).toLowerCase();\n if (i18n.locales.some((entry) => entry.code.toLowerCase() === suffix)) {\n base = base.slice(0, lastDot);\n }\n }\n return `${base}.${locale}${ext}`;\n }\n return `${locale}/${rel}`;\n};\n\n/**\n * Warn about top-level content folders that look like a locale (a code Blume\n * recognizes) but aren't declared in `i18n.locales`. Without this they're\n * silently treated as default-locale content under a `/<code>/…` route, which\n * is almost never intended — usually a translation that wasn't registered.\n */\nexport const i18nDiagnostics = (\n pages: PageRecord[],\n i18n: ResolvedI18nConfig,\n versions?: ResolvedVersionsConfig\n): Diagnostic[] => {\n const configured = new Set(\n i18n.locales.map((locale) => locale.code.toLowerCase())\n );\n const versionDirs = new Set(versions?.archived.map((version) => version.id));\n const seen = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n for (const page of pages) {\n // The locale-looking folder is the first segment of the source-local ref\n // (e.g. `fr/guide.md`), not the namespaced id (`filesystem:fr/guide.md`).\n // Inside a version snapshot the locale dir sits one level deeper\n // (`v1.0/fr/guide.md`), so a configured version segment is skipped first.\n const parts = page.source.ref.split(\"/\");\n const first = (\n parts[0] && versionDirs.has(parts[0]) ? parts[1] : parts[0]\n )?.toLowerCase();\n if (\n first &&\n !seen.has(first) &&\n KNOWN_LOCALES.has(first) &&\n !configured.has(first)\n ) {\n seen.add(first);\n diagnostics.push({\n code: \"BLUME_I18N_UNCONFIGURED_LOCALE\",\n message: `Folder \"${first}/\" looks like a locale, but \"${first}\" is not in i18n.locales — its pages are treated as \"${i18n.defaultLocale}\" content at /${first}/….`,\n severity: \"warning\",\n suggestion: `Add { code: \"${first}\", label: \"…\" } to i18n.locales, or rename the folder if it isn't a translation.`,\n });\n }\n }\n return diagnostics;\n};\n",
|
|
6
6
|
"import { withBasePath } from \"./base-path.ts\";\nimport { localizeRoute, resolveFallbackLocale } from \"./i18n.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n PageRecord,\n ProjectContext,\n RouteAlternate,\n RouteManifestEntry,\n VersionAlternate,\n} from \"./types.ts\";\nimport { getBlumeVersion } from \"./version.ts\";\n\n/**\n * Key for the same logical page across versions within one locale: the\n * version- and locale-agnostic route plus the locale code. NUL never appears\n * in either part, so the join is unambiguous.\n */\nconst versionAlternateKey = (versionKey: string, locale: string): string =>\n `${versionKey}\\u0000${locale}`;\n\n/**\n * Get-or-create the shared alternate list for a (versionKey, locale) pair.\n * Lists are attached to route entries by reference and mutated as fallback\n * routes materialize, then sorted once at the end — every holder sees the\n * final list.\n */\nconst versionAlternatesFor = (\n byKey: Map<string, VersionAlternate[]>,\n versionKey: string,\n locale: string\n): VersionAlternate[] => {\n const key = versionAlternateKey(versionKey, locale);\n const existing = byKey.get(key);\n if (existing) {\n return existing;\n }\n const list: VersionAlternate[] = [];\n byKey.set(key, list);\n return list;\n};\n\n/** The current manifest schema version. */\nexport const MANIFEST_VERSION = 1;\n\n/**\n * Whether a page may be indexed on its own merits — not author-excluded and not\n * hidden (unless hidden pages are opted in). This is independent of whether the\n * site search provider is enabled, so features like the MCP server can index\n * docs even when on-page search is off.\n */\nexport const contentIndexable = (\n page: PageRecord,\n config: ResolvedConfig\n): boolean =>\n !page.meta.search.exclude &&\n (!page.meta.sidebar.hidden || config.search.indexing.includeHiddenPages);\n\n/**\n * Fallback materialization: render the fallback locale's content at the\n * localized URL for any translation a non-default locale is missing, so static\n * output is fully prerendered (render-fallback, no client redirect). Fallback\n * routes are not indexed and carry no `hreflang` of their own.\n */\n/**\n * The description a page's `<head>` emits — `seo.description` over the front\n * matter `description` — mirrored onto its route so the OG card's subtitle\n * matches the page's `og:description`.\n */\nconst routeDescription = (page: PageRecord): string | undefined =>\n page.meta.seo.description ?? page.description;\n\nconst buildFallbackRoutes = (\n graph: ContentGraph,\n i18n: NonNullable<ResolvedConfig[\"i18n\"]>,\n alternatesByKey: Map<string, RouteAlternate[]>,\n basePath: string,\n versionAlternatesByKey: Map<string, VersionAlternate[]> | undefined\n): RouteManifestEntry[] => {\n const fallback = resolveFallbackLocale(i18n);\n if (!fallback) {\n return [];\n }\n const fallbackPages = new Map(\n graph.pages.flatMap((page) =>\n page.locale === fallback ? [[page.translationKey, page] as const] : []\n )\n );\n const routes: RouteManifestEntry[] = [];\n for (const { code } of i18n.locales) {\n if (code === fallback) {\n continue;\n }\n const present = new Set(\n graph.pages.flatMap((page) =>\n page.locale === code ? [page.translationKey] : []\n )\n );\n for (const [key, source] of fallbackPages) {\n if (present.has(key)) {\n continue;\n }\n const path = withBasePath(basePath, localizeRoute(key, code, i18n));\n // A fallback route is a real prerendered page, so it registers as a\n // version alternate too — the switcher on a sibling version's page\n // lands here instead of bouncing to the version root. Its own path is\n // recorded (not the fallback source's), keeping the target in-locale.\n const versionAlternates: VersionAlternate[] = versionAlternatesByKey\n ? versionAlternatesFor(versionAlternatesByKey, source.versionKey, code)\n : [];\n if (versionAlternatesByKey) {\n versionAlternates.push({ path, version: source.version });\n }\n routes.push({\n alternates: alternatesByKey.get(key) ?? [],\n collection: source.collection ?? \"docs\",\n contentType: source.contentType,\n description: routeDescription(source),\n draft: source.meta.draft,\n editUrl: source.editUrl,\n entryId: source.entryId ?? source.source.ref,\n fallback: true,\n hidden: source.meta.sidebar.hidden,\n id: source.id,\n indexable: false,\n lastModified: source.lastModified,\n locale: code,\n path,\n source: source.source,\n sourcePath: source.sourcePath,\n title: source.title,\n version: source.version,\n versionAlternates,\n });\n }\n }\n return routes;\n};\n\n/** Build the runtime manifest that bridges core and the generated Astro app. */\nexport const buildManifest = (options: {\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n}): BlumeManifest => {\n const { context, config, graph } = options;\n const searchEnabled = config.search.provider !== \"none\";\n const { i18n } = config;\n\n // Real translations per logical page, for `hreflang` and the switcher. Built\n // only under i18n; a single-locale page has no alternates.\n const alternatesByKey = new Map<string, RouteAlternate[]>();\n if (i18n) {\n for (const page of graph.pages) {\n const list = alternatesByKey.get(page.translationKey) ?? [];\n list.push({ locale: page.locale, path: page.route });\n alternatesByKey.set(page.translationKey, list);\n }\n }\n\n // The same logical page across versions, within each locale — for the\n // version switcher and the canonical-to-latest lookup. Built only under\n // versioning; lists are shared by reference and finalized (fallback routes\n // appended, then sorted) before the manifest is returned.\n const versionAlternatesByKey = config.versions\n ? new Map<string, VersionAlternate[]>()\n : undefined;\n if (versionAlternatesByKey) {\n for (const page of graph.pages) {\n versionAlternatesFor(\n versionAlternatesByKey,\n page.versionKey,\n page.locale\n ).push({ path: page.route, version: page.version });\n }\n }\n\n const routes: RouteManifestEntry[] = graph.pages.map((page) => ({\n alternates: alternatesByKey.get(page.translationKey) ?? [],\n collection: page.collection ?? \"docs\",\n contentType: page.contentType,\n description: routeDescription(page),\n draft: page.meta.draft,\n editUrl: page.editUrl,\n entryId: page.entryId ?? page.source.ref,\n hidden: page.meta.sidebar.hidden,\n id: page.id,\n indexable: searchEnabled && contentIndexable(page, config),\n lastModified: page.lastModified,\n locale: page.locale,\n path: page.route,\n source: page.source,\n sourcePath: page.sourcePath,\n title: page.title,\n version: page.version,\n versionAlternates: versionAlternatesByKey\n ? versionAlternatesFor(\n versionAlternatesByKey,\n page.versionKey,\n page.locale\n )\n : [],\n }));\n\n if (i18n) {\n routes.push(\n ...buildFallbackRoutes(\n graph,\n i18n,\n alternatesByKey,\n config.basePath,\n versionAlternatesByKey\n )\n );\n }\n\n // Alternate lists read current-first, then archived versions in configured\n // (switcher) order. Sorted once here — every route holding a list by\n // reference sees the final ordering.\n if (versionAlternatesByKey && config.versions) {\n const rank = new Map<string, number>(\n config.versions.archived.map((version, index) => [version.id, index + 1])\n );\n for (const list of versionAlternatesByKey.values()) {\n list.sort(\n (a, b) => (rank.get(a.version) ?? 0) - (rank.get(b.version) ?? 0)\n );\n }\n }\n\n routes.sort((a, b) => a.path.localeCompare(b.path));\n\n return {\n blumeVersion: getBlumeVersion(),\n contentRoot: context.contentRoot,\n output: config.deployment.output,\n projectRoot: context.root,\n routes,\n version: MANIFEST_VERSION,\n };\n};\n",
|
|
@@ -35,13 +35,14 @@
|
|
|
35
35
|
"import type { WatchListener } from \"node:fs\";\n\n/**\n * Directory segments that are never authored content: VCS, dependency trees,\n * Blume's own generated project and build output, and framework/deploy caches.\n * Both the content scan and the dev watcher skip these unconditionally, on top\n * of the user's `content.exclude`.\n *\n * The scan needs them because a broadly-scoped `content.root` — `\".\"` or an app\n * dir that also holds `node_modules`/`dist`, the common shape when migrating a\n * docs app that lives at the repo or app root — would otherwise glob thousands\n * of stray markdown files out of dependencies and build artifacts. `content.root`\n * defaults to `docs/` where this rarely bites, but any wider root hits it.\n *\n * The watcher needs them because a recursive `fs.watch` rooted at the project\n * also sees Blume's own `.blume/` output, which the dev server rewrites on every\n * render (e.g. `.blume/.astro/data-store.json`). Left unfiltered, each such write\n * re-triggers a rescan + runtime regeneration whose writes land back under\n * `.blume/` and fire the watcher again: a self-sustaining loop that stalls page\n * renders and floods the console. `fs.watch` has no ignore option, so we filter\n * by the changed path in the callback.\n */\nexport const BLUME_IGNORE_DIRS = [\n \".blume\",\n // The isolated `blume check --isolated` runtime. A sibling of `.blume`, it is\n // written while a dev server runs; without this the content-layer watcher (or\n // a `.`-rooted fs.watch) would treat its generation as a content change and\n // reload — the very thing `--isolated` promises not to do.\n \".blume-verify\",\n \".cache\",\n \".git\",\n \".next\",\n \".turbo\",\n \".vercel\",\n \"dist\",\n \"node_modules\",\n];\n\n/**\n * Baseline scan-ignore globs applied to every filesystem source, unioned with\n * the user's `content.exclude`. Kept in sync with the watcher via the shared\n * {@link BLUME_IGNORE_DIRS} so `load()` and `watch()` never disagree on what is\n * content. `**\\/<dir>/**` matches the directory at the content root or nested.\n */\nexport const baselineScanIgnore = (): string[] =>\n BLUME_IGNORE_DIRS.map((dir) => `**/${dir}/**`);\n\n/**\n * Alias retained for the dev watcher's call site and its tests; the watcher and\n * the scan share the same never-content directory set.\n */\nexport const BLUME_WATCH_IGNORE_DIRS = BLUME_IGNORE_DIRS;\n\n/** Extract single-segment ignore dirs (`foo`) from `foo/**`-style excludes. */\nexport const excludeDirSegments = (patterns: readonly string[]): string[] =>\n patterns\n .map((pattern) => /^(?<dir>[^*/]+)\\/\\*\\*$/u.exec(pattern)?.groups?.dir)\n .filter((dir): dir is string => dir !== undefined);\n\n/**\n * Build a recursive-watch listener that fires `onChange` for content changes but\n * ignores events whose path crosses an ignored directory segment — one in\n * `ignoreDirs`, or one `ignoreSegment` rejects, for a scan whose skip rule is\n * a shape (every dot-name) rather than a list. A missing `filename` — rare;\n * the platform couldn't name the changed path — falls through to `onChange`\n * rather than silently dropping a real edit. Exported for testing.\n */\nexport const ignoringWatchListener = (\n onChange: () => void,\n ignoreDirs: Iterable<string> = BLUME_WATCH_IGNORE_DIRS,\n ignoreSegment: (segment: string) => boolean = () => false\n): WatchListener<string> => {\n const ignore = new Set(ignoreDirs);\n return (_event, filename) => {\n if (\n filename !== null &&\n filename\n .split(/[/\\\\]/u)\n .some((segment) => ignore.has(segment) || ignoreSegment(segment))\n ) {\n return;\n }\n onChange();\n };\n};\n",
|
|
36
36
|
"import { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { gfmFromMarkdown } from \"mdast-util-gfm\";\nimport { toString as mdastToString } from \"mdast-util-to-string\";\nimport { gfm } from \"micromark-extension-gfm\";\nimport stringWidth from \"string-width\";\n\nimport matter from \"../frontmatter.ts\";\nimport { PUBLIC_API_URL } from \"../github.ts\";\nimport { columnsPrefix } from \"../text-width.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\n/** Options for the built-in GitHub Releases changelog source. */\nexport interface GithubReleasesSourceOptions {\n /** GitHub REST API base; overridable for GitHub Enterprise / tests. */\n baseUrl?: string;\n /** Include draft releases (needs a token with repo write access). Default off. */\n drafts?: boolean;\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n /** Cap the number of releases materialized, newest-first. Default 100. */\n limit?: number;\n name: string;\n /** Repository owner (user or org). */\n owner: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Namespaces the source's routes under `/<prefix>/`; e.g. `changelog`. */\n prefix?: string;\n /** Include prereleases. Default off. */\n prereleases?: boolean;\n /** Repository name. */\n repo: string;\n}\n\n/** The subset of the GitHub release payload the adapter reads. */\ninterface GithubRelease {\n body: string | null;\n created_at: string;\n draft: boolean;\n html_url: string;\n id: number;\n name: string | null;\n prerelease: boolean;\n published_at: string | null;\n tag_name: string;\n}\n\nconst DEFAULT_LIMIT = 100;\nconst PER_PAGE = 100;\n\nconst LEADING_V = /^v/iu;\nconst NON_SLUG = /[^a-z0-9]+/gu;\nconst EDGE_DASHES = /^-+|-+$/gu;\n\n// `blume audit` grades meta descriptions against the 110–160 display-column\n// search snippet range (audit/types.ts thresholds), so the derived summary\n// budgets in the same columns and aims for the longest word-boundary cut\n// under the cap.\nconst DESCRIPTION_MAX = 160;\nconst DESCRIPTION_MIN = 110;\n\n// Changesets-generated release bullets open with the changeset's short commit\n// hash (`- cf8fa22: Fix …`) — noise in a search snippet. Stripped from the\n// raw lines (where the bullet anchor still exists) before parsing.\nconst CHANGESET_HASH = /^(?<mark>\\s*(?:[-*+]|\\d+[.)])\\s+)[0-9a-f]{7,40}:\\s+/gmu;\nconst WHITESPACE = /\\s+/gu;\nconst TRAILING_FRAGMENT = /[\\s,;:.—–-]+$/u;\n\n/** Block nodes with no place in a search snippet. */\nconst NON_PROSE = new Set([\"code\", \"heading\", \"html\", \"thematicBreak\"]);\n\n/**\n * Derive a meta description from release notes: GitHub-flavored markdown\n * parsed to mdast and reduced to the plain text of its prose blocks —\n * section headings (\"### Patch Changes\"), code fences, and changesets'\n * commit-hash bullet prefixes dropped; link/emphasis text and inline code\n * content kept — then cut at a word boundary to fit the search snippet cap.\n * Undefined when the notes have no prose at all.\n */\nconst releaseDescription = (body: string): string | undefined => {\n const tree = fromMarkdown(body.replaceAll(CHANGESET_HASH, \"$<mark>\"), {\n extensions: [gfm()],\n mdastExtensions: [gfmFromMarkdown()],\n });\n const text = tree.children\n .filter((node) => !NON_PROSE.has(node.type))\n // Images vanish (their alt is not prose) and raw HTML/JSX tags drop,\n // matching what a reader of the rendered notes would see as text.\n .map((node) =>\n mdastToString(node, { includeHtml: false, includeImageAlt: false })\n )\n .join(\" \")\n .replaceAll(WHITESPACE, \" \")\n .trim();\n if (!text) {\n return undefined;\n }\n if (stringWidth(text) <= DESCRIPTION_MAX) {\n return text;\n }\n // Cut before the cap at a word boundary (kept only when it doesn't drop the\n // summary under the minimum), shed any dangling punctuation, and mark the cut.\n const slice = columnsPrefix(text, DESCRIPTION_MAX - 1);\n const boundary = slice.lastIndexOf(\" \");\n const head = (\n boundary !== -1 && stringWidth(slice.slice(0, boundary)) >= DESCRIPTION_MIN\n ? slice.slice(0, boundary)\n : slice\n ).replace(TRAILING_FRAGMENT, \"\");\n return `${head}…`;\n};\n\n/** Slugify a tag into a stable, URL-safe source ref (`v1.2.0` -> `v1-2-0`). */\nconst slugifyTag = (tag: string): string =>\n tag.toLowerCase().replaceAll(NON_SLUG, \"-\").replaceAll(EDGE_DASHES, \"\");\n\n/** Build request headers, reading `GITHUB_TOKEN` fresh at call time. */\nconst githubHeaders = (): Headers => {\n const headers = new Headers({ Accept: \"application/vnd.github+json\" });\n const token = process.env.GITHUB_TOKEN;\n if (token) {\n headers.set(\"Authorization\", `Bearer ${token}`);\n }\n return headers;\n};\n\n/**\n * The changelog frontmatter one release lowers to. `title`/`type` are always\n * assigned (optional only so assignment order can keep the emitted YAML key\n * order — and so each entry's content hash — stable).\n */\ninterface ChangelogFrontmatter {\n changelog: { category: string; version: string };\n date: string;\n seo?: { description: string };\n title?: string;\n type?: string;\n}\n\n/**\n * Lower one release to a staged Markdown entry: the notes become the body,\n * `type: changelog` frontmatter (title/date/version/category) drives the\n * generated `/changelog` timeline and RSS feed, and a summary derived from the\n * notes becomes the release page's meta description.\n */\nconst releaseToEntry = (release: GithubRelease): SourceEntry => {\n const version = release.tag_name.replace(LEADING_V, \"\");\n const title = release.name?.trim() || release.tag_name;\n const date = release.published_at ?? release.created_at;\n const category = release.prerelease ? \"Prerelease\" : \"Release\";\n const body = (release.body ?? \"\").replaceAll(\"\\r\\n\", \"\\n\").trim();\n // A summary in `seo.description` gives each release page a unique meta\n // description (instead of the site-wide fallback) without also rendering the\n // visible lede paragraph a top-level `description` would add.\n const description = releaseDescription(body);\n // Assignment order matters: js-yaml serializes keys in insertion order, so\n // `seo` lands between `date` and `title` exactly as it always has.\n const data: ChangelogFrontmatter = {\n changelog: { category, version },\n date,\n };\n if (description) {\n data.seo = { description };\n }\n data.title = title;\n data.type = \"changelog\";\n const raw = matter.stringify(`${body}\\n`, data);\n const fallbackRef = `release-${release.id}`;\n const ref = `${slugifyTag(release.tag_name) || fallbackRef}.md`;\n return {\n body: { format: \"md\", text: body },\n // Spread: `SourceEntry.data` is an open dictionary, which the interface\n // (no index signature) only satisfies as a fresh object literal.\n data: { ...data },\n editUrl: release.html_url,\n hash: hashText(raw),\n lastModified: date,\n raw,\n ref,\n };\n};\n\n/**\n * GitHub Releases content source. Pulls a repo's releases from the REST API and\n * materializes each as a `type: changelog` entry, so a project's release notes\n * become its changelog with no files to maintain. A private repo authenticates\n * with `GITHUB_TOKEN`. A snapshot under `.blume/cache/<source>/` keeps rebuilds\n * offline-tolerant.\n */\nexport const githubReleasesSource = (\n options: GithubReleasesSourceOptions,\n ctx: SourceContext\n): ContentSource => {\n const doFetch = options.fetchImpl ?? globalThis.fetch;\n const base = (options.baseUrl ?? PUBLIC_API_URL).replace(/\\/$/u, \"\");\n const max = options.limit ?? DEFAULT_LIMIT;\n const cache = snapshotCache(ctx.cacheDir);\n let snapshot = new Map<string, SourceEntry>();\n\n const include = (release: GithubRelease): boolean =>\n (options.drafts || !release.draft) &&\n (options.prereleases || !release.prerelease);\n\n const fetchPage = async (page: number): Promise<GithubRelease[]> => {\n const url = `${base}/repos/${options.owner}/${options.repo}/releases?per_page=${PER_PAGE}&page=${page}`;\n const res = await doFetch(url, { headers: githubHeaders() });\n if (!res.ok) {\n throw new Error(`${url} -> ${res.status}`);\n }\n // SAFETY: GitHub's releases endpoint returns a JSON array of release\n // objects; `GithubRelease` models only the fields the adapter reads.\n return (await res.json()) as GithubRelease[];\n };\n\n const fetchReleases = async (): Promise<GithubRelease[]> => {\n const collected: GithubRelease[] = [];\n let page = 1;\n while (collected.length < max) {\n // oxlint-disable-next-line no-await-in-loop -- pages are sequential: each page's length decides whether another exists.\n const batch = await fetchPage(page);\n collected.push(...batch.filter(include));\n if (batch.length < PER_PAGE) {\n break;\n }\n page += 1;\n }\n return collected.slice(0, max);\n };\n\n const load = async (\n refresh = ctx.refresh ?? true\n ): Promise<SourceLoadResult> => {\n try {\n const result = await loadWithCache(\n options.name,\n cache,\n async () => {\n const releases = await fetchReleases();\n return releases.map(releaseToEntry);\n },\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return result;\n } catch (error) {\n // A changelog is supplementary. When releases can't be fetched and nothing\n // is cached (e.g. CI or a deploy without a `GITHUB_TOKEN` for a private\n // repo), degrade to an empty changelog with a warning rather than failing\n // the whole build.\n snapshot = new Map();\n // SAFETY: everything thrown on this path is an Error — fetch rejects\n // with a TypeError, fetchPage and loadWithCache throw Error instances.\n return {\n diagnostics: [\n {\n code: \"BLUME_SOURCE_UNAVAILABLE\",\n message: `Source \"${options.name}\" could not fetch GitHub releases (${(error as Error).message}); the changelog will be empty. Set GITHUB_TOKEN to include it (required for a private repository).`,\n severity: \"warning\",\n },\n ],\n entries: [],\n };\n }\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n const entry = all.find((e) => e.ref === ref);\n return entry?.raw ?? entry?.body.text ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n };\n};\n",
|
|
37
37
|
"import picomatch from \"picomatch\";\n\nimport { BlumeError } from \"../diagnostics.ts\";\nimport matter from \"../frontmatter.ts\";\nimport type { Diagnostic } from \"../types.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\n/** Options for the built-in remote Markdown/MDX source. */\nexport interface MdxRemoteSourceOptions {\n name: string;\n prefix?: string;\n /** Raw base URL for `files`, e.g. `https://raw.githubusercontent.com/o/r/main/docs`. */\n url?: string;\n /** Explicit source-relative file paths to fetch from `url`. */\n files?: string[];\n /** Enumerate a GitHub repo subtree via the git-trees API. */\n github?: { owner: string; repo: string; ref: string; path: string };\n include: string[];\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n}\n\n// Include globs compile through picomatch — what the filesystem source's\n// tinyglobby uses under the hood — so the same `include` array means the same\n// thing on every source type: negation, character classes, nested braces, and\n// extglobs included. Compiled once per enumeration, not per ref.\n\n/** A file to fetch: its source-local ref plus where to read it from. */\ninterface RemoteRef {\n ref: string;\n fetchUrl: string;\n editUrl?: string;\n}\n\n// Hosts the GITHUB_TOKEN may be sent to. A configured `url` base can point at\n// any server, and leaking the token there would hand a repo credential to an\n// arbitrary third party.\nconst GITHUB_HOSTS = new Set([\"api.github.com\", \"raw.githubusercontent.com\"]);\n\nconst githubHeaders = (url: string): Record<string, string> => {\n const token = process.env.GITHUB_TOKEN;\n if (!token) {\n return {};\n }\n let host = \"\";\n try {\n host = new URL(url).hostname;\n } catch {\n return {};\n }\n return GITHUB_HOSTS.has(host) ? { authorization: `Bearer ${token}` } : {};\n};\n\ninterface GithubTreeEntry {\n path: string;\n type: string;\n}\n\n/** Enumerate a GitHub repo subtree, mapping blobs to remote refs. */\nconst enumerateGithub = async (\n github: { owner: string; repo: string; ref: string; path: string },\n include: string[],\n doFetch: typeof fetch\n): Promise<{ refs: RemoteRef[]; truncated: boolean }> => {\n const { owner, repo, ref } = github;\n const base = github.path.replaceAll(/^\\/|\\/$/gu, \"\");\n const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${ref}?recursive=1`;\n const res = await doFetch(treeUrl, { headers: githubHeaders(treeUrl) });\n if (!res.ok) {\n throw new Error(`${treeUrl} -> ${res.status}`);\n }\n // SAFETY: GitHub's git/trees endpoint returns this envelope; a missing or\n // differently-typed field falls through the `?? []` and blob filters below.\n const body = (await res.json()) as {\n tree?: GithubTreeEntry[];\n truncated?: boolean;\n };\n const prefix = base ? `${base}/` : \"\";\n const included = picomatch(include);\n const refs = (body.tree ?? []).flatMap((node) => {\n if (!(node.type === \"blob\" && node.path.startsWith(prefix))) {\n return [];\n }\n const rel = node.path.slice(prefix.length);\n if (!included(rel)) {\n return [];\n }\n return [\n {\n editUrl: `https://github.com/${owner}/${repo}/edit/${ref}/${prefix}${rel}`,\n fetchUrl: `https://raw.githubusercontent.com/${owner}/${repo}/${ref}/${prefix}${rel}`,\n ref: rel,\n },\n ];\n });\n // GitHub caps the recursive tree response (~100k entries / 7MB) and flags it\n // with `truncated`; ignoring it would silently import only part of the repo.\n return { refs, truncated: body.truncated === true };\n};\n\n/**\n * Remote Markdown/MDX content source. Fetches raw `.md`/`.mdx` over HTTP and\n * passes the text straight through `normalizeEntry`. A snapshot under\n * `.blume/cache/<source>/` makes rebuilds offline-tolerant.\n */\nexport const mdxRemoteSource = (\n options: MdxRemoteSourceOptions,\n ctx: SourceContext\n): ContentSource => {\n const doFetch = options.fetchImpl ?? globalThis.fetch;\n const cache = snapshotCache(ctx.cacheDir);\n let snapshot = new Map<string, SourceEntry>();\n\n // Validated up front in `load`, *before* the cached-fetch path: thrown from\n // inside `loadWithCache`'s fetch callback, a misconfiguration would be masked\n // as BLUME_SOURCE_FETCH_FAILED (no cache) or downgraded to a stale-cache\n // BLUME_SOURCE_OFFLINE warning (cache present).\n const assertConfigured = (): void => {\n if (options.github || (options.files && options.url)) {\n return;\n }\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n message: `Source \"${options.name}\" needs either { github } or { url, files }.`,\n severity: \"error\",\n });\n };\n\n const enumerate = async (): Promise<{\n refs: RemoteRef[];\n truncated: boolean;\n }> => {\n if (options.github) {\n return await enumerateGithub(options.github, options.include, doFetch);\n }\n const base = (options.url ?? \"\").replace(/\\/$/u, \"\");\n const included = picomatch(options.include);\n const refs = (options.files ?? []).flatMap((ref) =>\n included(ref)\n ? [{ editUrl: `${base}/${ref}`, fetchUrl: `${base}/${ref}`, ref }]\n : []\n );\n return { refs, truncated: false };\n };\n\n const fetchEntry = async (item: RemoteRef): Promise<SourceEntry> => {\n const res = await doFetch(item.fetchUrl, {\n headers: githubHeaders(item.fetchUrl),\n });\n if (!res.ok) {\n throw new Error(`${item.fetchUrl} -> ${res.status}`);\n }\n const text = await res.text();\n const parsed = matter(text);\n const format = item.ref.toLowerCase().endsWith(\".mdx\") ? \"mdx\" : \"md\";\n return {\n body: { format, text: parsed.content },\n data: parsed.data,\n editUrl: item.editUrl,\n hash: hashText(text),\n raw: text,\n ref: item.ref,\n };\n };\n\n const load = async (\n refresh = ctx.refresh ?? true\n ): Promise<SourceLoadResult> => {\n assertConfigured();\n const skipped: Diagnostic[] = [];\n const result = await loadWithCache(\n options.name,\n cache,\n async () => {\n const { refs, truncated } = await enumerate();\n if (truncated) {\n skipped.push({\n code: \"BLUME_SOURCE_TRUNCATED\",\n message: `Source \"${options.name}\" hit GitHub's tree listing limit; some files were not enumerated. Narrow the source path or split the repo.`,\n severity: \"warning\",\n });\n }\n const settled = await Promise.all(\n refs.map(async (ref) => {\n try {\n return await fetchEntry(ref);\n } catch (error) {\n skipped.push({\n code: \"BLUME_SOURCE_FETCH_FAILED\",\n // SAFETY: fetch and decode failures throw Error instances;\n // only the message is read for the skip diagnostic.\n message: `Source \"${options.name}\" skipped \"${ref.ref}\" (${(error as Error).message}); the rest were imported.`,\n severity: \"warning\",\n });\n return null;\n }\n })\n );\n const entries = settled.filter(\n (entry): entry is SourceEntry => entry !== null\n );\n // Only a total wipeout is a hard failure — let loadWithCache fall back\n // to cache or fail loudly rather than silently importing nothing. A\n // partial failure keeps the healthy pages and warns about the rest.\n if (refs.length > 0 && entries.length === 0) {\n skipped.length = 0;\n throw new Error(`all ${refs.length} remote file(s) failed to fetch`);\n }\n return entries;\n },\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return {\n ...result,\n diagnostics: [...result.diagnostics, ...skipped],\n };\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n const entry = all.find((e) => e.ref === ref);\n return entry?.raw ?? entry?.body.text ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n };\n};\n",
|
|
38
|
-
"import { setTimeout as sleep } from \"node:timers/promises\";\n\nimport pLimit from \"p-limit\";\nimport { join } from \"pathe\";\n\nimport { BlumeError } from \"../diagnostics.ts\";\nimport matter from \"../frontmatter.ts\";\nimport type { Diagnostic } from \"../types.ts\";\nimport { materializeAssets } from \"./assets.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport { slugifyPath } from \"./normalize.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\ninterface NotionRichText {\n plain_text: string;\n href?: string | null;\n annotations?: {\n bold?: boolean;\n italic?: boolean;\n code?: boolean;\n strikethrough?: boolean;\n };\n}\n\ninterface NotionProperty {\n type: string;\n title?: NotionRichText[];\n rich_text?: NotionRichText[];\n select?: { name: string } | null;\n status?: { name: string } | null;\n number?: number | null;\n}\n\ninterface NotionPage {\n id: string;\n properties: Record<string, NotionProperty>;\n last_edited_time?: string;\n}\n\n/** The per-type payload a block carries under the key matching its `type`. */\ninterface NotionBlockPayload {\n caption?: NotionRichText[];\n checked?: boolean;\n external?: { url: string };\n file?: { url: string };\n language?: string;\n rich_text?: NotionRichText[];\n}\n\ninterface NotionBlock {\n id: string;\n type: string;\n has_children?: boolean;\n [key: string]: NotionBlockPayload | boolean | string | undefined;\n}\n\ninterface NotionList<T> {\n results: T[];\n has_more: boolean;\n next_cursor: string | null;\n}\n\n/**\n * The slice of `@notionhq/client` (v5+) this adapter relies on, so it's\n * mockable. Since API version 2025-09-03 a database's rows live in a data\n * source: `databases.retrieve` names the data sources and\n * `dataSources.query` pages through one of them.\n */\nexport interface NotionClientLike {\n databases: {\n retrieve: (args: { database_id: string }) => Promise<{\n data_sources: { id: string; name: string }[];\n }>;\n };\n dataSources: {\n query: (args: {\n data_source_id: string;\n start_cursor?: string;\n }) => Promise<NotionList<NotionPage>>;\n };\n blocks: {\n children: {\n list: (args: {\n block_id: string;\n start_cursor?: string;\n }) => Promise<NotionList<NotionBlock>>;\n };\n };\n}\n\n/** Notion property names mapped onto Blume meta. */\nexport interface NotionPropertyMap {\n /** Title property name; defaults to the database's `title`-typed property. */\n title?: string;\n /** Description property (rich_text); default `Description`. */\n description?: string;\n /** Slug property (rich_text); default `Slug`, else the slugified title. */\n slug?: string;\n /** Status property (select/status); default `Status`. */\n status?: string;\n /** Sidebar order property (number); default `Order`. */\n order?: string;\n}\n\nexport interface NotionSourceOptions {\n name: string;\n prefix?: string;\n /** The Notion database id. */\n database: string;\n /**\n * Maximum concurrent Notion API requests. Notion allows an average of 3\n * requests per second per integration, so a large database must pace its\n * block-tree fan-out or every request 429s. Default 3.\n */\n concurrency?: number;\n /** Integration token; defaults to `NOTION_TOKEN`. */\n token?: string;\n properties?: NotionPropertyMap;\n /**\n * The `Status` property is treated as a publish signal: any value other than\n * this maps to `draft: true`. Defaults to `Published`; pages without a\n * Status/select property are always imported as published.\n */\n publishedValue?: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; otherwise built from `@notionhq/client`. */\n client?: NotionClientLike;\n /** Injected for tests; used to download images. */\n fetchImpl?: typeof fetch;\n}\n\n/** The frontmatter Blume derives from a Notion page's properties. */\ninterface NotionFrontmatter {\n description?: string;\n draft?: boolean;\n sidebar?: { order: number };\n title?: string;\n // Frontmatter stays an open bag downstream (`SourceEntry.data`), so admit\n // the value shapes this source writes under any future key.\n [key: string]: boolean | string | { order: number } | undefined;\n}\n\nconst richToMarkdown = (rich: NotionRichText[] = []): string =>\n rich\n .map((node) => {\n let text = node.plain_text;\n if (node.annotations?.code) {\n text = `\\`${text}\\``;\n }\n if (node.annotations?.bold) {\n text = `**${text}**`;\n }\n if (node.annotations?.italic) {\n text = `*${text}*`;\n }\n if (node.annotations?.strikethrough) {\n text = `~~${text}~~`;\n }\n return node.href ? `[${text}](${node.href})` : text;\n })\n .join(\"\");\n\nconst isBlockPayload = (\n value: NotionBlockPayload | boolean | string | undefined\n): value is NotionBlockPayload => typeof value === \"object\";\n\n/** The payload object stored under a block's own `type` key, if present. */\nconst payloadOf = (block: NotionBlock): NotionBlockPayload | undefined => {\n const value = block[block.type];\n return isBlockPayload(value) ? value : undefined;\n};\n\nconst blockField = (block: NotionBlock): NotionRichText[] =>\n payloadOf(block)?.rich_text ?? [];\n\nconst RATE_LIMITED = 429;\nconst MAX_RETRIES = 4;\nconst BASE_DELAY_MS = 500;\nconst SECOND_MS = 1000;\nconst DEFAULT_CONCURRENCY = 3;\n\n/**\n * Retry a Notion API call on a `429 rate_limited`, honoring the `Retry-After`\n * header and otherwise backing off exponentially. A large workspace fans out\n * many concurrent block-children requests, so without this a single 429 would\n * reject the batch and abort the whole import. The exponential wait is\n * jittered so calls rate-limited together don't retry in lockstep and trip\n * the limit again as a herd.\n */\nconst withNotionRetry = async <T>(\n call: () => Promise<T>,\n attempt = 0\n): Promise<T> => {\n try {\n return await call();\n } catch (error) {\n // SAFETY: Notion SDK failures are APIResponseError-shaped, carrying the\n // failed request's HTTP status; anything else reads `undefined` and is\n // rethrown below.\n const { status } = error as { status?: number };\n if (status !== RATE_LIMITED || attempt === MAX_RETRIES) {\n throw error;\n }\n // SAFETY: same APIResponseError shape — `headers` maps lower-cased HTTP\n // header names to their values; a missing header yields `NaN` and falls\n // back to exponential backoff.\n const retryAfter = Number(\n (error as { headers?: Record<string, string> }).headers?.[\"retry-after\"]\n );\n const wait =\n retryAfter > 0\n ? retryAfter * SECOND_MS\n : BASE_DELAY_MS * 2 ** attempt * (1 + Math.random());\n await sleep(wait);\n return withNotionRetry(call, attempt + 1);\n }\n};\n\n/** Paginate a Notion list endpoint via recursion (no await-in-loop). */\nconst collectAll = async <T>(\n page: (cursor?: string) => Promise<NotionList<T>>,\n cursor?: string,\n acc: T[] = []\n): Promise<T[]> => {\n const res = await page(cursor);\n const all = [...acc, ...res.results];\n return res.has_more && res.next_cursor\n ? collectAll(page, res.next_cursor, all)\n : all;\n};\n\nconst LIST_BLOCKS = new Set([\n \"bulleted_list_item\",\n \"numbered_list_item\",\n \"to_do\",\n]);\n\n/** Whether a block is a list item (so consecutive ones render as a tight list). */\nconst isListItem = (block: NotionBlock | undefined): boolean =>\n block !== undefined && LIST_BLOCKS.has(block.type);\n\n/** Render a leaf (non-container) block to Markdown, or null for containers. */\nconst renderLeaf = (block: NotionBlock): string | null => {\n const data = payloadOf(block) ?? {};\n const text = richToMarkdown(blockField(block));\n switch (block.type) {\n case \"paragraph\": {\n return text;\n }\n case \"heading_1\": {\n return `# ${text}`;\n }\n case \"heading_2\": {\n return `## ${text}`;\n }\n case \"heading_3\": {\n return `### ${text}`;\n }\n case \"bulleted_list_item\": {\n return `- ${text}`;\n }\n case \"numbered_list_item\": {\n return `1. ${text}`;\n }\n case \"to_do\": {\n return `- [${data.checked ? \"x\" : \" \"}] ${text}`;\n }\n case \"quote\": {\n return `> ${text}`;\n }\n case \"divider\": {\n return \"---\";\n }\n case \"code\": {\n return `\\`\\`\\`${data.language ?? \"\"}\\n${text}\\n\\`\\`\\``;\n }\n case \"image\": {\n const url = data.external?.url ?? data.file?.url;\n return url ? `` : \"\";\n }\n default: {\n return null;\n }\n }\n};\n\n/**\n * Notion content source. Maps a database to a collection: each page becomes an\n * entry, its properties become frontmatter, and its block tree is converted to\n * MDX with Blume components. Images are materialized so signed URLs don't rot.\n */\nexport const notionSource = (\n options: NotionSourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const props = options.properties ?? {};\n // A FIFO semaphore: at most N calls run at once, the rest queue. Notion's\n // rate limit is per-integration (an average of 3 req/s), and a large\n // database fans out one block-children request per page plus one per nested\n // container — an unbounded burst guarantees 429s that even the retry loop\n // can't recover from, so every API call funnels through this limiter.\n const limit = pLimit(Math.max(1, options.concurrency ?? DEFAULT_CONCURRENCY));\n // Every Notion API call goes through the limiter, inside the retry — so a\n // call sleeping through a backoff doesn't hold a slot while it waits.\n const notionCall = <T>(call: () => Promise<T>): Promise<T> =>\n withNotionRetry(() => limit(call));\n const cache = snapshotCache(\n ctx?.cacheDir ?? join(\".blume\", \"cache\", options.name)\n );\n const assetsDir =\n ctx?.assetsDir ?? join(\".blume\", \"public\", \"blume-assets\", options.name);\n const assetsBaseUrl = ctx?.assetsBaseUrl ?? `/blume-assets/${options.name}`;\n let snapshot = new Map<string, SourceEntry>();\n\n const resolveClient = async (): Promise<NotionClientLike> => {\n if (options.client) {\n return options.client;\n }\n let Client: new (config: { auth?: string }) => NotionClientLike;\n try {\n // The module is widened first because the SDK's response unions are\n // broader than the NotionClientLike slice, so a direct assertion is\n // rejected as non-overlapping.\n const sdk: unknown = await import(\"@notionhq/client\");\n // SAFETY: `@notionhq/client` exports a `Client` class constructable with\n // an `auth` token whose instances cover the NotionClientLike slice; the\n // local type keeps the SDK mockable without importing its types.\n ({ Client } = sdk as {\n Client: new (config: { auth?: string }) => NotionClientLike;\n });\n } catch {\n throw new BlumeError({\n code: \"BLUME_SOURCE_SDK_MISSING\",\n message: `Source \"${options.name}\" needs \"@notionhq/client\". Install it (e.g. \\`npm install @notionhq/client\\`).`,\n severity: \"error\",\n });\n }\n return new Client({ auth: options.token ?? process.env.NOTION_TOKEN });\n };\n\n const childrenOf = (\n client: NotionClientLike,\n blockId: string\n ): Promise<NotionBlock[]> =>\n collectAll((cursor) =>\n notionCall(() =>\n client.blocks.children.list({ block_id: blockId, start_cursor: cursor })\n )\n );\n\n // `render` is injected (rather than referenced) so this stays a forward-free\n // definition; `renderBlocks` passes itself, the way `collectAll` recurses.\n const renderContainer = async (\n client: NotionClientLike,\n block: NotionBlock,\n render: (c: NotionClientLike, b: NotionBlock[]) => Promise<string>\n ): Promise<string> => {\n const children = async (target: NotionBlock): Promise<string> => {\n if (!target.has_children) {\n return \"\";\n }\n return render(client, await childrenOf(client, target.id));\n };\n\n if (block.type === \"callout\") {\n const body = [richToMarkdown(blockField(block)), await children(block)]\n .filter(Boolean)\n .join(\"\\n\\n\");\n return `<Callout>\\n${body}\\n</Callout>`;\n }\n if (block.type === \"toggle\") {\n const title = JSON.stringify(richToMarkdown(blockField(block)));\n return `<Accordion>\\n<AccordionItem title=${title}>\\n${await children(block)}\\n</AccordionItem>\\n</Accordion>`;\n }\n if (block.type === \"column_list\") {\n const cols = await childrenOf(client, block.id);\n const rendered = await Promise.all(\n cols.map(async (col) => `<Column>\\n${await children(col)}\\n</Column>`)\n );\n return `<Columns>\\n${rendered.join(\"\\n\")}\\n</Columns>`;\n }\n return `{/* unsupported Notion block: ${block.type} */}`;\n };\n\n const renderBlocks = async (\n client: NotionClientLike,\n blocks: NotionBlock[]\n ): Promise<string> => {\n const parts = await Promise.all(\n blocks.map(async (block) => {\n const leaf = renderLeaf(block);\n if (leaf === null) {\n return renderContainer(client, block, renderBlocks);\n }\n // Leaf blocks can still carry children (nested list items, indented\n // paragraphs); dropping them would silently lose content.\n if (!block.has_children) {\n return leaf;\n }\n const nested = await renderBlocks(\n client,\n await childrenOf(client, block.id)\n );\n if (!nested) {\n return leaf;\n }\n if (isListItem(block)) {\n // Indent past the list marker so the children belong to the item\n // (`1. ` needs three columns, `- `/`- [x] ` two).\n const indent = \" \".repeat(\n block.type === \"numbered_list_item\" ? 3 : 2\n );\n const indented = nested\n .split(\"\\n\")\n .map((line) => (line ? `${indent}${line}` : line))\n .join(\"\\n\");\n return `${leaf}\\n${indented}`;\n }\n // Other leaves (paragraph, quote) keep their children as following\n // sibling blocks — the indentation semantics are lost but the content\n // survives.\n return `${leaf}\\n\\n${nested}`;\n })\n );\n // Join with a blank line, except between consecutive list items, which stay\n // tight so they render as a single list rather than separate loose ones.\n const pairs = blocks.flatMap((block, i) => {\n const text = parts[i] ?? \"\";\n return text ? [{ block, text }] : [];\n });\n return pairs\n .map((pair, i) => {\n if (i === 0) {\n return pair.text;\n }\n const tight = isListItem(pairs[i - 1]?.block) && isListItem(pair.block);\n return `${tight ? \"\\n\" : \"\\n\\n\"}${pair.text}`;\n })\n .join(\"\");\n };\n\n const titleProperty = (page: NotionPage): NotionProperty | undefined => {\n if (props.title) {\n return page.properties[props.title];\n }\n return Object.values(page.properties).find((p) => p.type === \"title\");\n };\n\n const isDraft = (page: NotionPage): boolean => {\n const prop = page.properties[props.status ?? \"Status\"];\n const status = prop?.status?.name ?? prop?.select?.name;\n // A page without a Status/select property stays published; one with a\n // status is a draft unless it matches the published value.\n return Boolean(\n status && status !== (options.publishedValue ?? \"Published\")\n );\n };\n\n const orderOf = (page: NotionPage): number | undefined => {\n const order = page.properties[props.order ?? \"Order\"]?.number;\n return order === null ? undefined : order;\n };\n\n const frontmatter = (page: NotionPage) => {\n const data: NotionFrontmatter = {};\n const title = richToMarkdown(titleProperty(page)?.title);\n if (title) {\n data.title = title;\n }\n const description = richToMarkdown(\n page.properties[props.description ?? \"Description\"]?.rich_text\n );\n if (description) {\n data.description = description;\n }\n if (isDraft(page)) {\n data.draft = true;\n }\n const order = orderOf(page);\n if (order !== undefined) {\n data.sidebar = { order };\n }\n const slugProp = richToMarkdown(\n page.properties[props.slug ?? \"Slug\"]?.rich_text\n );\n // Path-aware: a `guides/setup` slug keeps its `/` (per-segment slugging)\n // instead of mashing into `guidessetup`.\n const slug = slugifyPath(slugProp || title) || page.id;\n return { data, slug };\n };\n\n const toEntry = async (\n client: NotionClientLike,\n page: NotionPage\n ): Promise<{ entry: SourceEntry; diagnostics: Diagnostic[] }> => {\n const { data, slug } = frontmatter(page);\n const mdx = await renderBlocks(client, await childrenOf(client, page.id));\n const assets = await materializeAssets(mdx, {\n assetsBaseUrl,\n assetsDir,\n fetchImpl: options.fetchImpl,\n });\n const raw = matter.stringify(assets.markdown, data);\n return {\n diagnostics: assets.diagnostics,\n entry: {\n body: { format: \"mdx\", text: assets.markdown },\n data,\n hash: hashText(raw),\n lastModified: page.last_edited_time,\n raw,\n ref: `${slug}.mdx`,\n },\n };\n };\n\n // A database's rows live in its data source (API 2025-09-03). Blume reads\n // the first one, which is the only one a database created in Notion has.\n const resolveDataSource = async (\n client: NotionClientLike\n ): Promise<string> => {\n const database = await notionCall(() =>\n client.databases.retrieve({ database_id: options.database })\n );\n const [dataSource] = database.data_sources;\n if (!dataSource) {\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n message: `Source \"${options.name}\": Notion database \"${options.database}\" has no data source to read pages from.`,\n severity: \"error\",\n });\n }\n return dataSource.id;\n };\n\n // Hoisted out of `load` so the retry closure doesn't nest past the linter's\n // 4-level limit (source factory → queryDataSource → notionCall callback).\n const queryDataSource = (\n client: NotionClientLike,\n dataSourceId: string,\n cursor?: string\n ): Promise<NotionList<NotionPage>> =>\n notionCall(() =>\n client.dataSources.query({\n data_source_id: dataSourceId,\n start_cursor: cursor,\n })\n );\n\n const load = async (\n refresh = ctx?.refresh ?? true\n ): Promise<SourceLoadResult> => {\n const assetDiagnostics: Diagnostic[] = [];\n const result = await loadWithCache(\n options.name,\n cache,\n async () => {\n const client = await resolveClient();\n const dataSourceId = await resolveDataSource(client);\n const pages = await collectAll((cursor) =>\n queryDataSource(client, dataSourceId, cursor)\n );\n const built = await Promise.all(\n pages.map((page) => toEntry(client, page))\n );\n for (const item of built) {\n assetDiagnostics.push(...item.diagnostics);\n }\n return built.map((item) => item.entry);\n },\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return {\n diagnostics: [...result.diagnostics, ...assetDiagnostics],\n entries: result.entries,\n };\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n return all.find((e) => e.ref === ref)?.raw ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n };\n};\n",
|
|
39
|
-
"
|
|
38
|
+
"import { setTimeout as sleep } from \"node:timers/promises\";\n\nimport pLimit from \"p-limit\";\nimport { join } from \"pathe\";\n\nimport { parseYouTubeId } from \"../../components/content/youtube.ts\";\nimport { BlumeError } from \"../diagnostics.ts\";\nimport matter from \"../frontmatter.ts\";\nimport type { Diagnostic } from \"../types.ts\";\nimport { materializeAssets } from \"./assets.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport { slugifyPath } from \"./normalize.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\ninterface NotionRichText {\n plain_text: string;\n href?: string | null;\n annotations?: {\n bold?: boolean;\n italic?: boolean;\n code?: boolean;\n strikethrough?: boolean;\n };\n}\n\ninterface NotionProperty {\n type: string;\n title?: NotionRichText[];\n rich_text?: NotionRichText[];\n select?: { name: string } | null;\n status?: { name: string } | null;\n number?: number | null;\n}\n\ninterface NotionPage {\n id: string;\n properties: Record<string, NotionProperty>;\n last_edited_time?: string;\n}\n\n/** The per-type payload a block carries under the key matching its `type`. */\ninterface NotionBlockPayload {\n caption?: NotionRichText[];\n checked?: boolean;\n external?: { url: string };\n file?: { url: string };\n language?: string;\n rich_text?: NotionRichText[];\n}\n\ninterface NotionBlock {\n id: string;\n type: string;\n has_children?: boolean;\n [key: string]: NotionBlockPayload | boolean | string | undefined;\n}\n\ninterface NotionList<T> {\n results: T[];\n has_more: boolean;\n next_cursor: string | null;\n}\n\n/**\n * The slice of `@notionhq/client` (v5+) this adapter relies on, so it's\n * mockable. Since API version 2025-09-03 a database's rows live in a data\n * source: `databases.retrieve` names the data sources and\n * `dataSources.query` pages through one of them.\n */\nexport interface NotionClientLike {\n databases: {\n retrieve: (args: { database_id: string }) => Promise<{\n data_sources: { id: string; name: string }[];\n }>;\n };\n dataSources: {\n query: (args: {\n data_source_id: string;\n start_cursor?: string;\n }) => Promise<NotionList<NotionPage>>;\n };\n blocks: {\n children: {\n list: (args: {\n block_id: string;\n start_cursor?: string;\n }) => Promise<NotionList<NotionBlock>>;\n };\n };\n}\n\n/** Notion property names mapped onto Blume meta. */\nexport interface NotionPropertyMap {\n /** Title property name; defaults to the database's `title`-typed property. */\n title?: string;\n /** Description property (rich_text); default `Description`. */\n description?: string;\n /** Slug property (rich_text); default `Slug`, else the slugified title. */\n slug?: string;\n /** Status property (select/status); default `Status`. */\n status?: string;\n /** Sidebar order property (number); default `Order`. */\n order?: string;\n}\n\nexport interface NotionSourceOptions {\n name: string;\n prefix?: string;\n /** The Notion database id. */\n database: string;\n /**\n * Maximum concurrent Notion API requests. Notion allows an average of 3\n * requests per second per integration, so a large database must pace its\n * block-tree fan-out or every request 429s. Default 3.\n */\n concurrency?: number;\n /** Integration token; defaults to `NOTION_TOKEN`. */\n token?: string;\n properties?: NotionPropertyMap;\n /**\n * The `Status` property is treated as a publish signal: any value other than\n * this maps to `draft: true`. Defaults to `Published`; pages without a\n * Status/select property are always imported as published.\n */\n publishedValue?: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; otherwise built from `@notionhq/client`. */\n client?: NotionClientLike;\n /** Injected for tests; used to download images. */\n fetchImpl?: typeof fetch;\n}\n\n/** The frontmatter Blume derives from a Notion page's properties. */\ninterface NotionFrontmatter {\n description?: string;\n draft?: boolean;\n sidebar?: { order: number };\n title?: string;\n // Frontmatter stays an open bag downstream (`SourceEntry.data`), so admit\n // the value shapes this source writes under any future key.\n [key: string]: boolean | string | { order: number } | undefined;\n}\n\nconst richToMarkdown = (rich: NotionRichText[] = []): string =>\n rich\n .map((node) => {\n let text = node.plain_text;\n if (node.annotations?.code) {\n text = `\\`${text}\\``;\n }\n if (node.annotations?.bold) {\n text = `**${text}**`;\n }\n if (node.annotations?.italic) {\n text = `*${text}*`;\n }\n if (node.annotations?.strikethrough) {\n text = `~~${text}~~`;\n }\n return node.href ? `[${text}](${node.href})` : text;\n })\n .join(\"\");\n\nconst isBlockPayload = (\n value: NotionBlockPayload | boolean | string | undefined\n): value is NotionBlockPayload => typeof value === \"object\";\n\n/** The payload object stored under a block's own `type` key, if present. */\nconst payloadOf = (block: NotionBlock): NotionBlockPayload | undefined => {\n const value = block[block.type];\n return isBlockPayload(value) ? value : undefined;\n};\n\nconst blockField = (block: NotionBlock): NotionRichText[] =>\n payloadOf(block)?.rich_text ?? [];\n\nconst RATE_LIMITED = 429;\nconst MAX_RETRIES = 4;\nconst BASE_DELAY_MS = 500;\nconst SECOND_MS = 1000;\nconst DEFAULT_CONCURRENCY = 3;\nconst ASSET_DOWNLOAD_CONCURRENCY = 4;\n\n/**\n * Retry a Notion API call on a `429 rate_limited`, honoring the `Retry-After`\n * header and otherwise backing off exponentially. A large workspace fans out\n * many concurrent block-children requests, so without this a single 429 would\n * reject the batch and abort the whole import. The exponential wait is\n * jittered so calls rate-limited together don't retry in lockstep and trip\n * the limit again as a herd.\n */\nconst withNotionRetry = async <T>(\n call: () => Promise<T>,\n attempt = 0\n): Promise<T> => {\n try {\n return await call();\n } catch (error) {\n // SAFETY: Notion SDK failures are APIResponseError-shaped, carrying the\n // failed request's HTTP status; anything else reads `undefined` and is\n // rethrown below.\n const { status } = error as { status?: number };\n if (status !== RATE_LIMITED || attempt === MAX_RETRIES) {\n throw error;\n }\n // SAFETY: same APIResponseError shape — `headers` maps lower-cased HTTP\n // header names to their values; a missing header yields `NaN` and falls\n // back to exponential backoff.\n const retryAfter = Number(\n (error as { headers?: Record<string, string> }).headers?.[\"retry-after\"]\n );\n const wait =\n retryAfter > 0\n ? retryAfter * SECOND_MS\n : BASE_DELAY_MS * 2 ** attempt * (1 + Math.random());\n await sleep(wait);\n return withNotionRetry(call, attempt + 1);\n }\n};\n\n/** Paginate a Notion list endpoint via recursion (no await-in-loop). */\nconst collectAll = async <T>(\n page: (cursor?: string) => Promise<NotionList<T>>,\n cursor?: string,\n acc: T[] = []\n): Promise<T[]> => {\n const res = await page(cursor);\n const all = [...acc, ...res.results];\n return res.has_more && res.next_cursor\n ? collectAll(page, res.next_cursor, all)\n : all;\n};\n\nconst LIST_BLOCKS = new Set([\n \"bulleted_list_item\",\n \"numbered_list_item\",\n \"to_do\",\n]);\n\n/** Whether a block is a list item (so consecutive ones render as a tight list). */\nconst isListItem = (block: NotionBlock | undefined): boolean =>\n block !== undefined && LIST_BLOCKS.has(block.type);\n\nconst richToPlain = (rich: NotionRichText[] = []): string =>\n rich.map((node) => node.plain_text).join(\"\");\n\n/**\n * A string prop in JSX expression form. The quoted form (`title=\"…\"`) keeps\n * `\\\"` and `\\n` as literal characters — MDX decodes no escapes there, so a\n * caption holding a double quote fails to compile the whole page — where the\n * expression form (`title={\"…\"}`) is a JSON string literal and decodes them.\n */\nconst jsxString = (value: string): string => `{${JSON.stringify(value)}}`;\n\nconst YOUTUBE_HOST = /(?:^|\\.)(?:youtube(?:-nocookie)?\\.com|youtu\\.be)$/u;\n\n// `parseYouTubeId` is host-agnostic on purpose (the component accepts bare\n// ids), so gate on the hostname first: `https://cdn.example.com/live/promo.mp4`\n// matches its `/live/<11 chars>` shape but is a media file, not an embed.\nconst isYouTubeUrl = (url: string): boolean => {\n const host = URL.parse(url)?.hostname ?? \"\";\n return YOUTUBE_HOST.test(host) && parseYouTubeId(url) !== null;\n};\n\n/**\n * Render a Notion `video` block. Kept out of `renderLeaf`'s switch so that\n * function stays under the complexity limit.\n */\nconst renderVideo = (data: NotionBlockPayload): string => {\n const url = data.external?.url ?? data.file?.url;\n if (!url) {\n return \"\";\n }\n const caption = richToMarkdown(data.caption);\n // A YouTube link pasted into Notion becomes a `video` block holding an\n // external URL. That URL is a watch page, not a media file, so it has to\n // become the embed component — a `<video src>` pointing at it plays nothing,\n // and `materializeAssets` would download the HTML page. The iframe's title\n // is its accessible name, so it gets the caption's plain text; the Markdown\n // rendering goes to the Frame's caption, as it does for an upload.\n const title = caption ? ` title=${jsxString(richToPlain(data.caption))}` : \"\";\n // Everything else (a Notion upload, or a direct link to a media file) is a\n // real video file: `materializeAssets` rewrites the `src`, which matters most\n // for uploads, whose Notion URLs are signed and expire.\n const media = isYouTubeUrl(url)\n ? `<YouTube${title} url=${JSON.stringify(url)} />`\n : `<video controls src=${JSON.stringify(url)} />`;\n return caption\n ? `<Frame caption=${jsxString(caption)}>\\n${media}\\n</Frame>`\n : media;\n};\n\n/** Render a leaf (non-container) block to Markdown, or null for containers. */\nconst renderLeaf = (block: NotionBlock): string | null => {\n const data = payloadOf(block) ?? {};\n const text = richToMarkdown(blockField(block));\n switch (block.type) {\n case \"paragraph\": {\n return text;\n }\n case \"heading_1\": {\n return `# ${text}`;\n }\n case \"heading_2\": {\n return `## ${text}`;\n }\n case \"heading_3\": {\n return `### ${text}`;\n }\n case \"bulleted_list_item\": {\n return `- ${text}`;\n }\n case \"numbered_list_item\": {\n return `1. ${text}`;\n }\n case \"to_do\": {\n return `- [${data.checked ? \"x\" : \" \"}] ${text}`;\n }\n case \"quote\": {\n return `> ${text}`;\n }\n case \"divider\": {\n return \"---\";\n }\n case \"code\": {\n return `\\`\\`\\`${data.language ?? \"\"}\\n${text}\\n\\`\\`\\``;\n }\n case \"image\": {\n const url = data.external?.url ?? data.file?.url;\n return url ? `` : \"\";\n }\n case \"video\": {\n return renderVideo(data);\n }\n default: {\n return null;\n }\n }\n};\n\n/**\n * Notion content source. Maps a database to a collection: each page becomes an\n * entry, its properties become frontmatter, and its block tree is converted to\n * MDX with Blume components. Images are materialized so signed URLs don't rot.\n */\nexport const notionSource = (\n options: NotionSourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const props = options.properties ?? {};\n // A FIFO semaphore: at most N calls run at once, the rest queue. Notion's\n // rate limit is per-integration (an average of 3 req/s), and a large\n // database fans out one block-children request per page plus one per nested\n // container — an unbounded burst guarantees 429s that even the retry loop\n // can't recover from, so every API call funnels through this limiter.\n const limit = pLimit(Math.max(1, options.concurrency ?? DEFAULT_CONCURRENCY));\n // Asset downloads get their own gate: they go to Notion's S3, not its rate-\n // limited API, and a slow video must not hold API slots. One gate per source\n // bounds the fan-out across every page, not just within one.\n const downloads = pLimit(ASSET_DOWNLOAD_CONCURRENCY);\n // Every Notion API call goes through the limiter, inside the retry — so a\n // call sleeping through a backoff doesn't hold a slot while it waits.\n const notionCall = <T>(call: () => Promise<T>): Promise<T> =>\n withNotionRetry(() => limit(call));\n const cache = snapshotCache(\n ctx?.cacheDir ?? join(\".blume\", \"cache\", options.name)\n );\n const assetsDir =\n ctx?.assetsDir ?? join(\".blume\", \"public\", \"blume-assets\", options.name);\n const assetsBaseUrl = ctx?.assetsBaseUrl ?? `/blume-assets/${options.name}`;\n let snapshot = new Map<string, SourceEntry>();\n\n const resolveClient = async (): Promise<NotionClientLike> => {\n if (options.client) {\n return options.client;\n }\n let Client: new (config: { auth?: string }) => NotionClientLike;\n try {\n // The module is widened first because the SDK's response unions are\n // broader than the NotionClientLike slice, so a direct assertion is\n // rejected as non-overlapping.\n const sdk: unknown = await import(\"@notionhq/client\");\n // SAFETY: `@notionhq/client` exports a `Client` class constructable with\n // an `auth` token whose instances cover the NotionClientLike slice; the\n // local type keeps the SDK mockable without importing its types.\n ({ Client } = sdk as {\n Client: new (config: { auth?: string }) => NotionClientLike;\n });\n } catch {\n throw new BlumeError({\n code: \"BLUME_SOURCE_SDK_MISSING\",\n message: `Source \"${options.name}\" needs \"@notionhq/client\". Install it (e.g. \\`npm install @notionhq/client\\`).`,\n severity: \"error\",\n });\n }\n return new Client({ auth: options.token ?? process.env.NOTION_TOKEN });\n };\n\n const childrenOf = (\n client: NotionClientLike,\n blockId: string\n ): Promise<NotionBlock[]> =>\n collectAll((cursor) =>\n notionCall(() =>\n client.blocks.children.list({ block_id: blockId, start_cursor: cursor })\n )\n );\n\n // `render` is injected (rather than referenced) so this stays a forward-free\n // definition; `renderBlocks` passes itself, the way `collectAll` recurses.\n const renderContainer = async (\n client: NotionClientLike,\n block: NotionBlock,\n render: (c: NotionClientLike, b: NotionBlock[]) => Promise<string>\n ): Promise<string> => {\n const children = async (target: NotionBlock): Promise<string> => {\n if (!target.has_children) {\n return \"\";\n }\n return render(client, await childrenOf(client, target.id));\n };\n\n if (block.type === \"callout\") {\n const body = [richToMarkdown(blockField(block)), await children(block)]\n .filter(Boolean)\n .join(\"\\n\\n\");\n return `<Callout>\\n${body}\\n</Callout>`;\n }\n if (block.type === \"toggle\") {\n const title = jsxString(richToMarkdown(blockField(block)));\n return `<Accordion>\\n<AccordionItem title=${title}>\\n${await children(block)}\\n</AccordionItem>\\n</Accordion>`;\n }\n if (block.type === \"column_list\") {\n const cols = await childrenOf(client, block.id);\n const rendered = await Promise.all(\n cols.map(async (col) => `<Column>\\n${await children(col)}\\n</Column>`)\n );\n return `<Columns>\\n${rendered.join(\"\\n\")}\\n</Columns>`;\n }\n return `{/* unsupported Notion block: ${block.type} */}`;\n };\n\n const renderBlocks = async (\n client: NotionClientLike,\n blocks: NotionBlock[]\n ): Promise<string> => {\n const parts = await Promise.all(\n blocks.map(async (block) => {\n const leaf = renderLeaf(block);\n if (leaf === null) {\n return renderContainer(client, block, renderBlocks);\n }\n // Leaf blocks can still carry children (nested list items, indented\n // paragraphs); dropping them would silently lose content.\n if (!block.has_children) {\n return leaf;\n }\n const nested = await renderBlocks(\n client,\n await childrenOf(client, block.id)\n );\n if (!nested) {\n return leaf;\n }\n if (isListItem(block)) {\n // Indent past the list marker so the children belong to the item\n // (`1. ` needs three columns, `- `/`- [x] ` two).\n const indent = \" \".repeat(\n block.type === \"numbered_list_item\" ? 3 : 2\n );\n const indented = nested\n .split(\"\\n\")\n .map((line) => (line ? `${indent}${line}` : line))\n .join(\"\\n\");\n return `${leaf}\\n${indented}`;\n }\n // Other leaves (paragraph, quote) keep their children as following\n // sibling blocks — the indentation semantics are lost but the content\n // survives.\n return `${leaf}\\n\\n${nested}`;\n })\n );\n // Join with a blank line, except between consecutive list items, which stay\n // tight so they render as a single list rather than separate loose ones.\n const pairs = blocks.flatMap((block, i) => {\n const text = parts[i] ?? \"\";\n return text ? [{ block, text }] : [];\n });\n return pairs\n .map((pair, i) => {\n if (i === 0) {\n return pair.text;\n }\n const tight = isListItem(pairs[i - 1]?.block) && isListItem(pair.block);\n return `${tight ? \"\\n\" : \"\\n\\n\"}${pair.text}`;\n })\n .join(\"\");\n };\n\n const titleProperty = (page: NotionPage): NotionProperty | undefined => {\n if (props.title) {\n return page.properties[props.title];\n }\n return Object.values(page.properties).find((p) => p.type === \"title\");\n };\n\n const isDraft = (page: NotionPage): boolean => {\n const prop = page.properties[props.status ?? \"Status\"];\n const status = prop?.status?.name ?? prop?.select?.name;\n // A page without a Status/select property stays published; one with a\n // status is a draft unless it matches the published value.\n return Boolean(\n status && status !== (options.publishedValue ?? \"Published\")\n );\n };\n\n const orderOf = (page: NotionPage): number | undefined => {\n const order = page.properties[props.order ?? \"Order\"]?.number;\n return order === null ? undefined : order;\n };\n\n const frontmatter = (page: NotionPage) => {\n const data: NotionFrontmatter = {};\n const title = richToMarkdown(titleProperty(page)?.title);\n if (title) {\n data.title = title;\n }\n const description = richToMarkdown(\n page.properties[props.description ?? \"Description\"]?.rich_text\n );\n if (description) {\n data.description = description;\n }\n if (isDraft(page)) {\n data.draft = true;\n }\n const order = orderOf(page);\n if (order !== undefined) {\n data.sidebar = { order };\n }\n const slugProp = richToMarkdown(\n page.properties[props.slug ?? \"Slug\"]?.rich_text\n );\n // Path-aware: a `guides/setup` slug keeps its `/` (per-segment slugging)\n // instead of mashing into `guidessetup`.\n const slug = slugifyPath(slugProp || title) || page.id;\n return { data, slug };\n };\n\n const toEntry = async (\n client: NotionClientLike,\n page: NotionPage\n ): Promise<{ entry: SourceEntry; diagnostics: Diagnostic[] }> => {\n const { data, slug } = frontmatter(page);\n const mdx = await renderBlocks(client, await childrenOf(client, page.id));\n const assets = await materializeAssets(mdx, {\n assetsBaseUrl,\n assetsDir,\n fetchImpl: options.fetchImpl,\n limit: downloads,\n });\n const raw = matter.stringify(assets.markdown, data);\n return {\n diagnostics: assets.diagnostics,\n entry: {\n body: { format: \"mdx\", text: assets.markdown },\n data,\n hash: hashText(raw),\n lastModified: page.last_edited_time,\n raw,\n ref: `${slug}.mdx`,\n },\n };\n };\n\n // A database's rows live in its data source (API 2025-09-03). Blume reads\n // the first one, which is the only one a database created in Notion has.\n const resolveDataSource = async (\n client: NotionClientLike\n ): Promise<string> => {\n const database = await notionCall(() =>\n client.databases.retrieve({ database_id: options.database })\n );\n const [dataSource] = database.data_sources;\n if (!dataSource) {\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n message: `Source \"${options.name}\": Notion database \"${options.database}\" has no data source to read pages from.`,\n severity: \"error\",\n });\n }\n return dataSource.id;\n };\n\n // Hoisted out of `load` so the retry closure doesn't nest past the linter's\n // 4-level limit (source factory → queryDataSource → notionCall callback).\n const queryDataSource = (\n client: NotionClientLike,\n dataSourceId: string,\n cursor?: string\n ): Promise<NotionList<NotionPage>> =>\n notionCall(() =>\n client.dataSources.query({\n data_source_id: dataSourceId,\n start_cursor: cursor,\n })\n );\n\n const load = async (\n refresh = ctx?.refresh ?? true\n ): Promise<SourceLoadResult> => {\n const assetDiagnostics: Diagnostic[] = [];\n const result = await loadWithCache(\n options.name,\n cache,\n async () => {\n const client = await resolveClient();\n const dataSourceId = await resolveDataSource(client);\n const pages = await collectAll((cursor) =>\n queryDataSource(client, dataSourceId, cursor)\n );\n const built = await Promise.all(\n pages.map((page) => toEntry(client, page))\n );\n for (const item of built) {\n assetDiagnostics.push(...item.diagnostics);\n }\n return built.map((item) => item.entry);\n },\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return {\n diagnostics: [...result.diagnostics, ...assetDiagnostics],\n entries: result.entries,\n };\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n return all.find((e) => e.ref === ref)?.raw ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n };\n};\n",
|
|
39
|
+
"/**\n * Helpers for the `<YouTube>` content component. Kept in a sibling `.ts` (like\n * `diff.ts`/`github-info.ts`) so the id parsing and embed-URL building are pure,\n * unit-testable functions — the `.astro` file stays a thin presentational shell.\n */\n\n// A YouTube video id is 11 characters of [A-Za-z0-9_-].\nconst BARE_ID = /^[\\w-]{11}$/u;\n\n// Pull the id out of any common YouTube URL: youtu.be/<id>, watch?v=<id>,\n// /embed/<id>, /shorts/<id>, /live/<id>.\nconst URL_ID =\n /(?:youtu\\.be\\/|\\/embed\\/|\\/shorts\\/|\\/live\\/|[?&]v=)(?<id>[\\w-]{11})/u;\n\n/**\n * Resolve a YouTube video id from either a bare id or a full URL. Returns `null`\n * when nothing that looks like an id can be found, so the component can render\n * nothing rather than a broken embed.\n */\nexport const parseYouTubeId = (input: string): string | null => {\n const value = input.trim();\n if (!value) {\n return null;\n }\n if (BARE_ID.test(value)) {\n return value;\n }\n return URL_ID.exec(value)?.groups?.id ?? null;\n};\n\n/**\n * Build a privacy-enhanced (`youtube-nocookie.com`) embed URL, optionally\n * starting at `start` seconds.\n */\nexport const youtubeEmbedUrl = (\n id: string,\n options: { start?: number } = {}\n): string => {\n const base = `https://www.youtube-nocookie.com/embed/${id}`;\n const { start } = options;\n if (start && start > 0) {\n const params = new URLSearchParams({ start: String(Math.floor(start)) });\n return `${base}?${params.toString()}`;\n }\n return base;\n};\n",
|
|
40
|
+
"import { randomUUID } from \"node:crypto\";\nimport {\n access,\n mkdir,\n readdir,\n rename,\n rm,\n writeFile,\n} from \"node:fs/promises\";\n\nimport { extname, join } from \"pathe\";\n\nimport type { Diagnostic } from \"../types.ts\";\nimport { hashText } from \"./cache.ts\";\n\nconst MD_IMAGE = /!\\[(?<alt>[^\\]]*)\\]\\((?<url>[^)\\s]+)\\)/gu;\n// A `<video>` tag's `src`, split so the rewrite can swap the URL and keep the\n// surrounding attributes untouched. Notion's uploaded videos arrive as signed,\n// expiring URLs exactly like its images, so they rot the same way. `[^>]`\n// bounds the attribute run to a single tag.\nconst HTML_VIDEO_SRC =\n /(?<open><video\\b[^>]*?\\ssrc=\")(?<url>[^\"]+)(?<close>\")/gu;\nconst REMOTE = /^https?:\\/\\//u;\nconst SAFE_EXT = /^\\.[a-z0-9]+$/iu;\nconst CODE_FENCE_BLOCK =\n /^(?<fence>`{3,}|~{3,})[^\\n]*\\n[\\s\\S]*?^\\k<fence>[^\\n]*(?=\\n|$)/gmu;\n// NUL delimiters cannot appear in authored markdown, so tokens never collide.\n// oxlint-disable-next-line no-control-regex -- the NUL is the collision guard.\nconst FENCE_TOKEN = /\\u0000blume-fence-(?<index>\\d+)\\u0000/gu;\n\n// The extension for a URL whose path carries none, keyed by the media type the\n// server reports. A static host serves by extension, so a `.png` holding JPEG\n// bytes is mislabeled and a `.png` holding a video is refused by strict\n// players — the response is the source of truth, not the reference kind.\nconst EXT_BY_MIME = new Map([\n [\"image/avif\", \".avif\"],\n [\"image/gif\", \".gif\"],\n [\"image/jpeg\", \".jpg\"],\n [\"image/png\", \".png\"],\n [\"image/svg+xml\", \".svg\"],\n [\"image/webp\", \".webp\"],\n [\"video/mp4\", \".mp4\"],\n [\"video/ogg\", \".ogv\"],\n [\"video/quicktime\", \".mov\"],\n [\"video/webm\", \".webm\"],\n]);\nconst UNKNOWN_EXT = \".bin\";\n// Response types that are never a media file. A pasted Vimeo/Loom/Wistia link\n// is a video block in Notion whose URL is a watch page (200 text/html), and an\n// API endpoint answers JSON or XML; `image/svg+xml` is media and stays.\nconst NON_MEDIA_TYPE =\n /^(?:text\\/|application\\/(?:[\\w.-]+\\+)?(?:json|xml|javascript))/u;\nconst PART_SUFFIX = \".part\";\n// Generous enough for a multi-hundred-megabyte recording on an ordinary\n// connection; its job is to fail a stalled download rather than hang the build.\nconst DEFAULT_TIMEOUT_MS = 120_000;\n\n/** Where to write downloaded assets and how to reference them publicly. */\nexport interface AssetContext {\n assetsDir: string;\n assetsBaseUrl: string;\n /** Injected for tests; defaults to the global `fetch`. */\n fetchImpl?: typeof fetch;\n /**\n * Gate for concurrent downloads. A source shares one gate across every page\n * it materializes, so a database of video-heavy pages doesn't open every\n * download at once. Defaults to no gate.\n */\n limit?: <T>(task: () => Promise<T>) => Promise<T>;\n /** Abort a download that hasn't completed within this many milliseconds. */\n timeoutMs?: number;\n}\n\n/** The extension in a URL's path, or null when it carries none we'd trust. */\nconst extFromUrl = (url: string): string | null => {\n const clean = url.split(\"?\")[0] ?? url;\n const ext = extname(clean);\n return SAFE_EXT.test(ext) ? ext.toLowerCase() : null;\n};\n\n/** The response's media type, lowercased and stripped of parameters. */\nconst mediaType = (res: Response): string =>\n res.headers.get(\"content-type\")?.split(\";\")[0]?.trim().toLowerCase() ?? \"\";\n\nconst exists = async (path: string): Promise<boolean> => {\n try {\n await access(path);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * The completed file for a stem whose extension came from an earlier response\n * rather than the URL, so an extension-less asset is not fetched on every\n * poll. Only a lone candidate counts: query-less URLs can collide, and picking\n * between two files would be a guess.\n */\nconst completedFor = async (\n dir: string,\n stem: string\n): Promise<string | null> => {\n let names: string[];\n try {\n names = await readdir(dir);\n } catch {\n return null;\n }\n const candidates = names.filter(\n (name) => name.startsWith(`${stem}.`) && !name.endsWith(PART_SUFFIX)\n );\n return candidates.length === 1 ? (candidates[0] ?? null) : null;\n};\n\n/**\n * Download remote media referenced in a Markdown body into the asset dir and\n * rewrite the reference to the local public path. Markdown images and the\n * `src` of a `<video>` tag are both covered. Remote CMS URLs (notably Notion's\n * signed, expiring links) would otherwise rot a static build. Assets are\n * content-addressed by URL hash, so repeated builds are stable and deduped —\n * and a file already on disk is not fetched again, which keeps a dev poll\n * from re-downloading every video on every tick.\n */\nexport const materializeAssets = async (\n markdown: string,\n ctx: AssetContext\n): Promise<{ markdown: string; diagnostics: Diagnostic[] }> => {\n const doFetch = ctx.fetchImpl ?? globalThis.fetch;\n const limit = ctx.limit ?? ((task) => task());\n const timeoutMs = ctx.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const diagnostics: Diagnostic[] = [];\n\n // Mask fenced code blocks so an image URL inside a code sample is neither\n // downloaded nor rewritten — the sample must keep showing what the author\n // wrote.\n const fences: string[] = [];\n const masked = markdown.replace(CODE_FENCE_BLOCK, (block) => {\n fences.push(block);\n return `\\u0000blume-fence-${fences.length - 1}\\u0000`;\n });\n\n const urls = new Set<string>();\n for (const pattern of [MD_IMAGE, HTML_VIDEO_SRC]) {\n for (const match of masked.matchAll(pattern)) {\n const url = match.groups?.url;\n if (url && REMOTE.test(url)) {\n urls.add(url);\n }\n }\n }\n\n /** Fetch one asset into the asset dir and return its file name. */\n const download = async (url: string): Promise<string> => {\n // Hash the query-less URL: CMS asset URLs are pre-signed, so the query\n // changes on every fetch of the same file — hashing it would mint a new\n // file each refresh and re-dirty the content digest. Two real assets\n // sharing scheme+host+path and differing only in query are rare enough to\n // accept colliding.\n const stem = hashText(url.split(\"?\")[0] ?? url);\n const urlExt = extFromUrl(url);\n // The name is known up front whenever the path has an extension (every\n // Notion upload does), so a file from an earlier run is reused as is;\n // otherwise the extension came from the last response, so look for it.\n if (urlExt && (await exists(join(ctx.assetsDir, `${stem}${urlExt}`)))) {\n return `${stem}${urlExt}`;\n }\n const completed = urlExt ? null : await completedFor(ctx.assetsDir, stem);\n if (completed) {\n return completed;\n }\n const res = await doFetch(url, { signal: AbortSignal.timeout(timeoutMs) });\n if (!res.ok) {\n throw new Error(`${res.status}`);\n }\n // Writing a watch page or an API response out as `.mp4` gives a player\n // that can't play and a green build, so refuse what is never media.\n const type = mediaType(res);\n if (NON_MEDIA_TYPE.test(type)) {\n throw new Error(`responded with ${type}, not a media file`);\n }\n if (!res.body) {\n throw new Error(\"empty response body\");\n }\n const file = `${stem}${urlExt ?? EXT_BY_MIME.get(type) ?? UNKNOWN_EXT}`;\n const target = join(ctx.assetsDir, file);\n await mkdir(ctx.assetsDir, { recursive: true });\n // Stream the body to disk rather than buffering it: a video is hundreds of\n // megabytes where an image was a hundred kilobytes. Write to a temporary\n // name unique to this attempt and rename on completion, so a download that\n // dies midway never leaves a truncated file the next run would trust as\n // complete, and two pages fetching the same asset at once (the gate bounds\n // concurrency, it doesn't dedupe) never write into each other's file —\n // both publish identical bytes and the last rename wins.\n const part = `${target}.${randomUUID()}${PART_SUFFIX}`;\n try {\n await writeFile(part, res.body);\n } catch (error) {\n await rm(part, { force: true });\n throw error;\n }\n await rename(part, target);\n return file;\n };\n\n const rewrites = new Map<string, string>();\n await Promise.all(\n [...urls].map(async (url) => {\n try {\n const file = await limit(() => download(url));\n rewrites.set(url, `${ctx.assetsBaseUrl}/${file}`);\n } catch (error) {\n // SAFETY: everything thrown in this block is an Error — the manual\n // throws in `download`, and fetch/fs failures.\n diagnostics.push({\n code: \"BLUME_ASSET_FETCH_FAILED\",\n message: `Failed to download asset ${url}: ${(error as Error).message}`,\n severity: \"warning\",\n });\n }\n })\n );\n\n const rewritten = masked\n .replaceAll(MD_IMAGE, (match, alt, url) => {\n const local = rewrites.get(url);\n return local ? `` : match;\n })\n .replaceAll(HTML_VIDEO_SRC, (match, open, url, close) => {\n const local = rewrites.get(url);\n return local ? `${open}${local}${close}` : match;\n })\n .replaceAll(FENCE_TOKEN, (token, index) => fences[Number(index)] ?? token);\n\n return { diagnostics, markdown: rewritten };\n};\n",
|
|
40
41
|
"import { existsSync, watch as fsWatch, statSync } from \"node:fs\";\nimport type { Dirent } from \"node:fs\";\nimport { readdir, readFile, stat } from \"node:fs/promises\";\n\nimport { basename, isAbsolute, join, relative, resolve } from \"pathe\";\n\nimport { nextFenceState } from \"../code-fences.ts\";\nimport type { FenceState } from \"../code-fences.ts\";\nimport { BlumeError } from \"../diagnostics.ts\";\nimport matter from \"../frontmatter.ts\";\nimport { pageMetaSchema } from \"../schema.ts\";\nimport type { ResolvedI18nConfig, ResolvedVersionsConfig } from \"../schema.ts\";\nimport type { Diagnostic } from \"../types.ts\";\nimport { hashText } from \"./cache.ts\";\nimport type { EntryPlacement } from \"./normalize.ts\";\nimport {\n extractHeadings,\n isStringValue,\n localizedRoute,\n placeEntryRef,\n resolveEntryRoute,\n slugifyPath,\n} from \"./normalize.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\nimport { BLUME_IGNORE_DIRS, ignoringWatchListener } from \"./watch.ts\";\n\n/** Options for the built-in Obsidian vault source. */\nexport interface ObsidianSourceOptions {\n /**\n * The project's default content type (`content.defaultType`), which a note\n * without a `type` resolves to when {@link typeFrontmatterKeys} are picked.\n */\n defaultType?: string;\n /** Vault folder names to skip at any depth, in addition to dot-folders. */\n exclude?: string[];\n /**\n * Frontmatter keys the project declares site-wide beyond Blume's page meta\n * (`frontmatter.extend`). Any other Obsidian property is dropped when a note\n * is lowered, since the strict meta schema would reject it and fail the\n * build.\n */\n frontmatterKeys?: readonly string[];\n /** The project's i18n config, when locale directories place vault notes. */\n i18n?: ResolvedI18nConfig;\n /** Stable source name; namespaces ids and diagnostics. */\n name: string;\n /** Namespaces the source's routes under `/<prefix>/`; e.g. `vault`. */\n prefix?: string;\n /**\n * Frontmatter keys each content type declares (`content.types.<type>.frontmatter`),\n * keyed by type. A note keeps only the keys of its own type — the meta parse\n * merges only that type's schema, so a key another type declares would still\n * reach the strict page schema and fail.\n */\n typeFrontmatterKeys?: Readonly<Record<string, readonly string[]>>;\n /** Vault directory, absolute or relative to `projectRoot`. */\n vault: string;\n /** The project's versions config, when snapshot directories hold notes. */\n versions?: ResolvedVersionsConfig;\n}\n\nconst MARKDOWN_FILE = /\\.md$/iu;\n/** `%%comment%%` on a single line; multi-line comments are not stripped yet. */\nconst OBSIDIAN_COMMENT = /%%.*?%%/gu;\n/**\n * `[[target]]`, `[[target|alias]]`, `[[target#heading]]`, `![[embed]]`. The\n * target and heading are lazy so the `\\|` Obsidian writes for an alias inside\n * a table cell (a bare `|` would end the cell) is read as the alias separator\n * rather than as a backslash ending the target. A target cannot open with `[`:\n * Obsidian reads `[[[Note]]]` as a literal `[`, the link, and a literal `]`,\n * and so does the match once the first bracket is left out of it.\n */\nconst WIKILINK =\n /(?<embed>!)?\\[\\[(?<target>(?:[^\\][|#\\n][^\\]|#\\n]*?)?)(?:#(?<heading>[^\\]|\\n]+?))?(?:\\\\?\\|(?<alias>[^\\]\\n]+))?\\]\\]/gu;\n\n/** A vault note, read and split into frontmatter and body. */\ninterface ParsedNote {\n absPath: string;\n /** The note body, frontmatter stripped and otherwise untouched. */\n content: string;\n data: SourceEntry[\"data\"];\n placement: EntryPlacement;\n /** Vault-relative path, e.g. `guides/Getting Started.md`. */\n rel: string;\n}\n\n/**\n * The key a note name or heading is indexed and looked up under. macOS writes\n * filenames as NFD and editors type NFC, so both sides normalize before\n * casefolding.\n */\nconst indexKey = (value: string): string =>\n value.normalize(\"NFC\").toLowerCase();\n\n/** A Markdown link or image, reduced to its text by {@link headingKey}. */\nconst INLINE_LINK = /!?\\[(?<text>[^\\]]*)\\]\\([^)]*\\)/gu;\n/**\n * Inline formatting Obsidian drops when it autocompletes a heading link:\n * emphasis and strikethrough marks, code-span backticks, and an `_` that opens\n * or closes a word (one inside `snake_case` is text).\n */\nconst INLINE_MARKS = /[*~`]+|(?<![\\p{L}\\p{N}])_+|_+(?![\\p{L}\\p{N}])/gu;\n\n/**\n * The key a heading is indexed and looked up under: its text with inline\n * Markdown stripped, because Obsidian writes `[[Note#Bold heading]]` for a\n * `## **Bold** heading` — and because that is the text the rendered id is\n * slugged from.\n */\nconst headingKey = (text: string): string =>\n indexKey(\n text.replaceAll(INLINE_LINK, \"$<text>\").replaceAll(INLINE_MARKS, \"\")\n );\n\n/**\n * Obsidian's own default properties (the Properties UI writes the plural\n * spellings; older vaults carry the singular ones). They are not Blume\n * frontmatter, so they are dropped even when a project happens to declare a\n * key of the same name. `aliases` is dropped rather than resolved; alias link\n * targets are not supported yet.\n */\nconst OBSIDIAN_NATIVE_KEYS = new Set([\n \"alias\",\n \"aliases\",\n \"cssclass\",\n \"cssclasses\",\n \"tag\",\n \"tags\",\n]);\n\n/** Every key Blume's page meta schema accepts. */\nconst PAGE_META_KEYS = new Set<string>(pageMetaSchema.keyof().options);\n\n/**\n * A note's route input: its locale- and version-stripped path, slugged. Vault\n * filenames are prose (`Getting Started.md`) and the route mapper does not\n * slug, so this does — through {@link slugifyPath}, which keeps a non-Latin\n * name routable.\n */\nconst entrySlugFor = (navPath: string): string =>\n slugifyPath(navPath.replace(MARKDOWN_FILE, \"\"));\n\n/** One note as the wikilink index knows it: where it routes, and its anchors. */\ninterface IndexedNote {\n /** Anchor id per heading, keyed by {@link headingKey}. */\n anchors: Map<string, string>;\n /** The locales the note publishes in — every locale for a shared `$` note. */\n locales: string[];\n /** The note's version-prefixed, locale-agnostic route, prefix included. */\n logicalRoute: string;\n}\n\n/** The wikilink lookup table. */\ninterface LinkIndex {\n /**\n * Bare note names claimed by more than one file, keyed by {@link indexKey},\n * with the diagnostic text naming the claimants. A name some note owns as\n * its exact vault path is not here — Obsidian resolves a path before a name.\n */\n ambiguous: Map<string, string>;\n i18n?: ResolvedI18nConfig;\n notes: Map<string, IndexedNote>;\n}\n\n/** Dead or ambiguous wikilink targets, accumulated across one load. */\ninterface UnresolvedTargets {\n /** Bare names a wikilink resolved through a collision, with the claimants. */\n ambiguous: string[];\n /** `Note#Heading` targets whose note exists but whose heading does not. */\n anchors: string[];\n /** Targets that matched no note in the vault. */\n notes: string[];\n}\n\n/** A note paired with its own index entry, so a rewrite can address itself. */\ninterface IndexedPair {\n note: ParsedNote;\n self: IndexedNote;\n}\n\n/** The wikilink lookup table, plus each note's own entry in it. */\ninterface NoteIndex {\n index: LinkIndex;\n pairs: IndexedPair[];\n}\n\n/** A fresh accumulator. */\nconst noTargets = (): UnresolvedTargets => ({\n ambiguous: [],\n anchors: [],\n notes: [],\n});\n\n/**\n * The href a link from one note to another takes. A shared `Note.$.md`\n * publishes in every locale, so a link to it stays in the linking note's\n * locale rather than jumping to whichever locale is configured first; a target\n * that does not publish in that locale links to the first locale it does. The\n * Markdown pipeline prefixes every root-absolute link with `deployment.base`\n * at render time, so the base is left off here.\n */\nconst hrefBetween = (\n target: IndexedNote,\n from: IndexedNote,\n i18n: ResolvedI18nConfig | undefined\n): string => {\n const own = from.locales[0] ?? \"\";\n const locale = target.locales.includes(own) ? own : (target.locales[0] ?? \"\");\n return localizedRoute(target.logicalRoute, locale, i18n);\n};\n\n/**\n * Every path suffix a wikilink can address a note by: `docs/guides/Setup.md`\n * yields `docs/guides/setup`, `guides/setup`, and `setup`. Obsidian's default\n * \"shortest path when possible\" setting writes any of them into a link, so all\n * of them must resolve.\n */\nconst suffixKeysOf = (rel: string): string[] => {\n const segments = rel.replace(MARKDOWN_FILE, \"\").split(\"/\");\n return segments.map((_, from) => indexKey(segments.slice(from).join(\"/\")));\n};\n\n/** Every run of backticks — the only delimiter a code span has. */\nconst BACKTICK_RUN = /`+/gu;\n\n/** A run of backticks: where it starts and how many. */\ninterface BacktickRun {\n at: number;\n length: number;\n}\n\n/** Whether the character at `at` sits behind an odd number of backslashes. */\nconst isEscaped = (text: string, at: number): boolean => {\n let backslashes = 0;\n for (let i = at - 1; i >= 0 && text[i] === \"\\\\\"; i -= 1) {\n backslashes += 1;\n }\n return backslashes % 2 === 1;\n};\n\n/**\n * The backtick runs that can delimit a code span. A backslash escapes the one\n * backtick after it (CommonMark 2.4), so an escaped run loses its first tick\n * — and drops out entirely when that was its only one.\n */\nconst backtickRuns = (text: string): BacktickRun[] => {\n const runs: BacktickRun[] = [];\n for (const match of text.matchAll(BACKTICK_RUN)) {\n const escaped = isEscaped(text, match.index);\n const at = escaped ? match.index + 1 : match.index;\n const length = escaped ? match[0].length - 1 : match[0].length;\n if (length > 0) {\n runs.push({ at, length });\n }\n }\n return runs;\n};\n\n/** One piece of a line: literal text the rewrite must not touch, or prose. */\ninterface LineChunk {\n literal: boolean;\n text: string;\n}\n\n/** A span of text that is literal: a code span or an HTML comment. */\ninterface LiteralSpan {\n end: number;\n start: number;\n}\n\n/** The index of the next backtick run of exactly `length`, or -1. */\nconst closerAfter = (\n runs: BacktickRun[],\n from: number,\n length: number\n): number => {\n for (let i = from; i < runs.length; i += 1) {\n if (runs[i]?.length === length) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * The first code span opening at or after `from`. A run of N backticks opens\n * a span only if a run of exactly N follows — one regex expresses neither the\n * length match nor that condition — and a run with no closer is literal text\n * that the scan steps over.\n */\nconst nextCodeSpan = (\n runs: BacktickRun[],\n from: number\n): LiteralSpan | null => {\n for (let i = 0; i < runs.length; i += 1) {\n const run = runs[i];\n if (run === undefined || run.at < from) {\n continue;\n }\n const close = closerAfter(runs, i + 1, run.length);\n if (close !== -1) {\n return { end: (runs[close]?.at ?? 0) + run.length, start: run.at };\n }\n }\n return null;\n};\n\nconst COMMENT_OPEN = \"<!--\";\nconst COMMENT_CLOSE = \"-->\";\n\n/**\n * The first HTML comment opening at or after `from`. Obsidian hides one in\n * reading view, so a wikilink inside it is never a link the reader sees; an\n * unclosed `<!--` is literal text (CommonMark 6.6), not a comment to the end.\n */\nconst nextComment = (text: string, from: number): LiteralSpan | null => {\n const start = text.indexOf(COMMENT_OPEN, from);\n if (start === -1) {\n return null;\n }\n const close = text.indexOf(COMMENT_CLOSE, start + COMMENT_OPEN.length);\n return close === -1 ? null : { end: close + COMMENT_CLOSE.length, start };\n};\n\n/**\n * Split prose into literal and rewritable chunks. Code spans and HTML comments\n * have equal precedence and the leftmost wins (CommonMark 6.6): a `<!--`\n * inside a code span is code, and a backtick inside a comment is comment. The\n * scan runs over a whole run of prose rather than a line, because either may\n * hold newlines while an unclosed opener is literal text.\n */\nconst splitLiterals = (text: string): LineChunk[] => {\n const runs = backtickRuns(text);\n const chunks: LineChunk[] = [];\n let cursor = 0;\n for (;;) {\n const code = nextCodeSpan(runs, cursor);\n const comment = nextComment(text, cursor);\n const span =\n code === null || (comment !== null && comment.start < code.start)\n ? comment\n : code;\n if (span === null) {\n break;\n }\n chunks.push(\n { literal: false, text: text.slice(cursor, span.start) },\n { literal: true, text: text.slice(span.start, span.end) }\n );\n cursor = span.end;\n }\n chunks.push({ literal: false, text: text.slice(cursor) });\n return chunks;\n};\n\n/** Rewrite one chunk's wikilinks and strip single-line comments. */\nconst transformChunk = (\n chunk: string,\n index: LinkIndex,\n self: IndexedNote,\n unresolved: UnresolvedTargets\n): string =>\n chunk.replaceAll(OBSIDIAN_COMMENT, \"\").replaceAll(WIKILINK, (...args) => {\n // SAFETY: `String.replaceAll` passes the groups object last whenever the\n // pattern has named groups, and WIKILINK has four.\n const groups = args.at(-1) as Record<string, string | undefined>;\n const target = (groups.target ?? \"\").trim();\n const heading = groups.heading?.trim();\n const label = groups.alias?.trim() || heading || target;\n // Rewriting an embed means serving the attachment, which this source\n // does not do yet.\n if (groups.embed) {\n // SAFETY: the replacer's first argument is always the matched substring.\n return args[0] as string;\n }\n // `[[#Heading]]` addresses the note it sits in; an empty target with no\n // heading is not a link at all.\n if (target === \"\") {\n if (heading === undefined) {\n // SAFETY: the replacer's first argument is always the matched substring.\n return args[0] as string;\n }\n const ownHref = hrefBetween(self, self, index.i18n);\n // `#^block-id` names a block, not a heading. Blocks render with no\n // anchor to land on, so the link goes to the page itself rather than\n // warning about a heading that never existed. The caret never reaches\n // the label — `[^id]` would read as a GFM footnote reference.\n if (heading.startsWith(\"^\")) {\n return `[${groups.alias?.trim() || heading.slice(1)}](${ownHref})`;\n }\n const own = self.anchors.get(headingKey(heading));\n if (own === undefined) {\n // Same rule as a missing heading in another note: keep the page link,\n // drop only the anchor.\n unresolved.anchors.push(`#${heading}`);\n return `[${label}](${ownHref})`;\n }\n return `[${label}](${ownHref}#${own})`;\n }\n // `[[Note.md]]` is the path form Obsidian also accepts; the index is keyed\n // without the extension.\n const key = indexKey(target.replace(MARKDOWN_FILE, \"\"));\n const note = index.notes.get(key);\n if (note === undefined) {\n unresolved.notes.push(target);\n return label;\n }\n const clash = index.ambiguous.get(key);\n if (clash !== undefined) {\n unresolved.ambiguous.push(clash);\n }\n const href = hrefBetween(note, self, index.i18n);\n if (heading === undefined) {\n return `[${label}](${href})`;\n }\n // A block reference links to its note without an anchor; block ids are\n // generated noise (`^a1b2c3`), so an unaliased one reads as the note name.\n if (heading.startsWith(\"^\")) {\n return `[${groups.alias?.trim() || target}](${href})`;\n }\n const anchor = note.anchors.get(headingKey(heading));\n if (anchor === undefined) {\n // The note is real, so keep the link and drop only the anchor — landing\n // on the page beats degrading the whole link to plain text.\n unresolved.anchors.push(`${target}#${heading}`);\n return `[${label}](${href})`;\n }\n return `[${label}](${href}#${anchor})`;\n });\n\n/**\n * Rewrite a run of prose, leaving inline code spans (`` `[[x]]` ``) and HTML\n * comments (`<!-- [[x]] -->`) verbatim.\n */\nconst transformProse = (\n text: string,\n index: LinkIndex,\n self: IndexedNote,\n unresolved: UnresolvedTargets\n): string =>\n splitLiterals(text)\n .map((chunk) =>\n chunk.literal\n ? chunk.text\n : transformChunk(chunk.text, index, self, unresolved)\n )\n .join(\"\");\n\n/** An indented code block's marker: four spaces or a tab (CommonMark 4.4). */\nconst INDENTED_CODE = /^(?: {4}|\\t)/u;\n/** A list item opener (CommonMark 5.2), which makes later indentation prose. */\nconst LIST_ITEM = /^ {0,3}(?:[-+*]|\\d{1,9}[.)])(?: |$)/u;\n\n/** How many leading whitespace characters a line carries. */\nconst indentOf = (line: string): number =>\n line.length - line.trimStart().length;\n\n/**\n * Whether a list is open after `line`: an item opens one, and it stays open\n * until a non-blank line that is neither an item nor indented.\n */\nconst listAfter = (line: string, inList: boolean): boolean => {\n if (line.trim() === \"\") {\n return inList;\n }\n if (LIST_ITEM.test(line)) {\n return true;\n }\n return line.startsWith(\" \") || line.startsWith(\"\\t\") ? inList : false;\n};\n\n/**\n * The fence state after `line`. Outside a list, a line indented four or more\n * spaces is never a fence delimiter: it is indented code or a continuation\n * line. Inside a list item the content indent is the item's, so a fence\n * there is written four spaces deep (`1. step` then ` ```js`) and must\n * still open. Once a fence is open only a run at most three spaces deeper\n * than it (CommonMark 4.5) closes it; a deeper run is content.\n */\nconst fenceAfter = (\n line: string,\n fence: FenceState,\n fenceIndent: number,\n inList: boolean\n): FenceState => {\n const canDelimit =\n fence === null\n ? inList || !INDENTED_CODE.test(line)\n : indentOf(line) <= fenceIndent + 3;\n return canDelimit ? nextFenceState(line, fence) : fence;\n};\n\n/**\n * Transform an Obsidian body to Blume-ready Markdown: wikilinks become route\n * links and `%%comments%%` are stripped, while fenced, indented, and inline\n * code pass through so a note documenting the syntax survives. Callouts stay\n * blockquotes.\n */\nconst transformBody = (\n body: string,\n index: LinkIndex,\n self: IndexedNote,\n unresolved: UnresolvedTargets\n): string => {\n let fence: FenceState = null;\n // The indent the open fence was written at: a closing fence may sit up to\n // three spaces deeper (CommonMark 4.5), and a deeper run is content.\n let fenceIndent = 0;\n // An indented code block opens only after a blank line (CommonMark: it\n // cannot interrupt a paragraph) and outside a list (a loose item's indented\n // continuation paragraph is prose), then runs while lines stay indented or\n // blank. A list stays open until a non-indented line that is not an item.\n let afterBlank = true;\n let indentedCode = false;\n let inList = false;\n const out: string[] = [];\n let prose: string[] = [];\n const flush = (): void => {\n if (prose.length > 0) {\n out.push(transformProse(prose.join(\"\\n\"), index, self, unresolved));\n prose = [];\n }\n };\n for (const line of body.split(\"\\n\")) {\n const blank = line.trim() === \"\";\n if (fence === null && indentedCode) {\n if (blank || INDENTED_CODE.test(line)) {\n out.push(line);\n afterBlank = blank;\n continue;\n }\n indentedCode = false;\n }\n inList = listAfter(line, inList);\n if (\n fence === null &&\n afterBlank &&\n !(blank || inList) &&\n INDENTED_CODE.test(line)\n ) {\n flush();\n indentedCode = true;\n out.push(line);\n afterBlank = false;\n continue;\n }\n const next: FenceState = fenceAfter(line, fence, fenceIndent, inList);\n if (fence !== null || next !== null) {\n if (fence === null) {\n fenceIndent = indentOf(line);\n }\n flush();\n fence = next;\n out.push(line);\n afterBlank = blank;\n continue;\n }\n if (blank) {\n // A code span cannot cross a blank line (CommonMark 6.1), so each prose\n // run flushes at one — a stray backtick stays confined to its paragraph\n // instead of pairing with another paragraph's and swallowing the links\n // between them.\n flush();\n out.push(line);\n afterBlank = true;\n continue;\n }\n prose.push(line);\n afterBlank = false;\n }\n flush();\n return out.join(\"\\n\");\n};\n\n/**\n * Fill a note's anchors: the id the renderer emits for each heading, keyed by\n * {@link headingKey}. The ids are whatever {@link extractHeadings} assigns —\n * the same pass fills the page manifest from the staged body, so a\n * `[#custom-id]` pin and the `setup-1` a later collision gets are honored\n * rather than re-slugged. When no heading holds anything the rewrite changes,\n * the raw body's headings are the staged body's; otherwise the body is lowered\n * once more so the headings are scanned exactly as they ship. A link inside a\n * heading is rewritten here before the other notes' anchors are known, so its\n * own anchor is left off; that only moves the manifest id of a heading that\n * itself holds a heading link, which the docs already flag as unaddressable.\n */\nconst fillAnchors = (pair: IndexedPair, index: LinkIndex): void => {\n const raw = extractHeadings(pair.note.content);\n const rewritten = raw.some(\n (heading) =>\n transformProse(heading.text, index, pair.self, noTargets()) !==\n heading.text\n );\n const headings = rewritten\n ? extractHeadings(\n transformBody(pair.note.content, index, pair.self, noTargets())\n )\n : raw;\n for (const heading of headings) {\n const key = headingKey(heading.text);\n // Obsidian points a repeated-heading link at the first match; the manifest\n // scan has already disambiguated the later ones (`setup-1`).\n if (!pair.self.anchors.has(key)) {\n pair.self.anchors.set(key, heading.slug);\n }\n }\n};\n\n/**\n * Obsidian addresses `[[Name]]` by note name, not only by path; index each note\n * under every suffix of its vault-relative path, bare basename included. A key\n * two notes share resolves to the first in vault order — Obsidian disambiguates\n * by the linking note's location, which a rewrite cannot know — except that a\n * note's exact full path always wins for its own key, the way Obsidian resolves\n * a link as a path before a name. Only a bare-name collision is recorded, and\n * only so a link that actually resolves through it can warn; a longer shared\n * suffix is already the author's disambiguation.\n */\nconst buildLinkIndex = (\n notes: ParsedNote[],\n options: Pick<ObsidianSourceOptions, \"i18n\" | \"prefix\" | \"versions\">\n): NoteIndex => {\n const entries = new Map<string, IndexedNote>();\n const indexed = (note: ParsedNote): IndexedNote => {\n const cached = entries.get(note.rel);\n if (cached) {\n return cached;\n }\n // The route the pipeline will assign, from the same resolver\n // `normalizeEntry` uses — keyed by the same ref, slug, and frontmatter\n // `slug` the staged entry carries, so the two cannot disagree.\n const route = resolveEntryRoute(\n { ref: note.rel, slug: entrySlugFor(note.placement.navPath) },\n \".md\",\n isStringValue(note.data.slug) ? note.data.slug : undefined,\n options\n );\n const built: IndexedNote = {\n anchors: new Map(),\n locales: route.locales,\n logicalRoute: route.logicalRoute,\n };\n entries.set(note.rel, built);\n return built;\n };\n const claims = new Map<string, [ParsedNote, ...ParsedNote[]]>();\n for (const note of notes) {\n for (const key of suffixKeysOf(note.rel)) {\n const claimed = claims.get(key);\n if (claimed) {\n claimed.push(note);\n } else {\n claims.set(key, [note]);\n }\n }\n }\n const exactKeys = new Set(\n notes.map((note) => indexKey(note.rel.replace(MARKDOWN_FILE, \"\")))\n );\n const index: LinkIndex = {\n ambiguous: new Map(),\n i18n: options.i18n,\n notes: new Map(),\n };\n for (const [key, claimants] of claims) {\n const [first, ...rest] = claimants;\n if (rest.length > 0 && !key.includes(\"/\") && !exactKeys.has(key)) {\n index.ambiguous.set(\n key,\n `${key} (${claimants.map((note) => note.rel).join(\", \")})`\n );\n }\n index.notes.set(key, indexed(first));\n }\n const pairs = notes.map((note) => {\n const self = indexed(note);\n // Set last, over any name or suffix claim another note holds on this key:\n // an exact vault-relative path is never ambiguous.\n index.notes.set(indexKey(note.rel.replace(MARKDOWN_FILE, \"\")), self);\n return { note, self };\n });\n // Anchors need every href in place (a heading may hold a wikilink), so they\n // fill in after the routes.\n for (const pair of pairs) {\n fillAnchors(pair, index);\n }\n return { index, pairs };\n};\n\n/**\n * An explicit frontmatter title wins, then the filename — how Obsidian titles\n * notes. `index` names a route rather than a note, so an untitled one falls\n * through to Blume's own derivation instead of publishing as \"index\".\n */\nconst titleFor = (\n rel: string,\n frontmatterTitle: SourceEntry[\"data\"][string]\n): string | undefined => {\n if (isStringValue(frontmatterTitle)) {\n return frontmatterTitle;\n }\n const noteName = basename(rel).replace(MARKDOWN_FILE, \"\");\n return noteName.toLowerCase() === \"index\" ? undefined : noteName;\n};\n\n/**\n * The declared keys a note keeps: the site-wide ones plus those of its own\n * content type, resolved the way the meta parse resolves it (`type` falling\n * back to the project default). A non-string `type` fails the strict parse\n * later regardless, so which per-type list it picks never matters.\n */\nconst keptKeysFor = (\n data: SourceEntry[\"data\"],\n options: Pick<\n ObsidianSourceOptions,\n \"defaultType\" | \"frontmatterKeys\" | \"typeFrontmatterKeys\"\n >\n): Set<string> => {\n const entryType = isStringValue(data.type) ? data.type : options.defaultType;\n const typeKeys =\n entryType === undefined\n ? []\n : (options.typeFrontmatterKeys?.[entryType] ?? []);\n return new Set([...(options.frontmatterKeys ?? []), ...typeKeys]);\n};\n\n/**\n * Lower one vault note to a staged Markdown entry, keyed by the same route\n * input the link index used when rewriting links to it. Frontmatter keeps\n * what Blume's page meta accepts plus what the project declares for the note's\n * type; every other Obsidian property (Dataview fields, Templater dates,\n * `publish`, …) is dropped rather than failing the strict schema.\n */\nconst noteToEntry = (\n pair: IndexedPair,\n index: LinkIndex,\n options: Pick<\n ObsidianSourceOptions,\n \"defaultType\" | \"frontmatterKeys\" | \"typeFrontmatterKeys\"\n >,\n unresolved: UnresolvedTargets\n): SourceEntry => {\n const { note } = pair;\n const title = titleFor(note.rel, note.data.title);\n const keep = keptKeysFor(note.data, options);\n const data = Object.fromEntries(\n Object.entries(note.data).filter(\n ([key]) =>\n !OBSIDIAN_NATIVE_KEYS.has(key) &&\n (PAGE_META_KEYS.has(key) || keep.has(key))\n )\n );\n const merged = title === undefined ? data : { ...data, title };\n const text = transformBody(note.content.trim(), index, pair.self, unresolved);\n const raw = matter.stringify(`${text}\\n`, merged);\n return {\n body: { format: \"md\", text },\n data: merged,\n hash: hashText(raw),\n raw,\n ref: note.rel,\n slug: entrySlugFor(note.placement.navPath),\n sourcePath: note.absPath,\n };\n};\n\n/**\n * Read and split one note, or null when it vanished between the walk and the\n * read. Obsidian renames and deletes notes while a dev server watches the\n * vault, and one file disappearing mid-load must not fail the whole reload.\n * Any other read failure still throws.\n */\nconst readNote = async (\n vaultDir: string,\n rel: string,\n options: Pick<ObsidianSourceOptions, \"i18n\" | \"versions\">\n): Promise<ParsedNote | null> => {\n const absPath = join(vaultDir, rel);\n try {\n const { content, data } = matter(await readFile(absPath, \"utf-8\"));\n return {\n absPath,\n content,\n data,\n // Version outermost, then locale, the way `normalizeEntry` reads the\n // ref — the slug is built from what remains, so the pipeline's own\n // re-prefixing does not stack a second `fr/` or `v1.0/` onto the route.\n placement: placeEntryRef(rel, \".md\", options),\n rel,\n };\n } catch (error) {\n // SAFETY: a rejected `readFile` always yields a Node system error, whose\n // `code` is the only field read here.\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return null;\n }\n throw error;\n }\n};\n\n/** A directory entry with symlinks resolved to what they point at. */\ninterface VaultEntry {\n directory: boolean;\n file: boolean;\n name: string;\n}\n\n/**\n * A dot-name is never content: Obsidian's own `.obsidian/` and `.trash/`, and\n * the caches plugins keep in dot-folders. The walk and the watcher apply the\n * same rule, so a write into one of them neither publishes nor rescans.\n */\nconst isHidden = (name: string): boolean => name.startsWith(\".\");\n\n/**\n * Classify one directory entry, following a symlink to what it points at the\n * way the filesystem source's glob does — a vault that symlinks a shared\n * folder in must publish it, not report every link into it as a missing\n * note. A link that cannot be followed (dangling, or a loop) is left to the\n * read when it names a note: a missing target is then the same vanished file\n * a mid-load delete produces, and anything else is the real failure it is.\n */\nconst classify = async (dir: string, entry: Dirent): Promise<VaultEntry> => {\n if (!entry.isSymbolicLink()) {\n return {\n directory: entry.isDirectory(),\n file: entry.isFile(),\n name: entry.name,\n };\n }\n try {\n const target = await stat(join(dir, entry.name));\n return {\n directory: target.isDirectory(),\n file: target.isFile(),\n name: entry.name,\n };\n } catch {\n return {\n directory: false,\n file: MARKDOWN_FILE.test(entry.name),\n name: entry.name,\n };\n }\n};\n\n/**\n * Vault order, the way Obsidian's file explorer lists a folder: subfolders\n * first, then notes, each case-insensitively and numeric-aware (`Note 2`\n * before `Note 10`), with a code-point tiebreak so the order is total.\n */\nconst byVaultOrder = (a: VaultEntry, b: VaultEntry): number =>\n Number(b.directory) - Number(a.directory) ||\n a.name.localeCompare(b.name, \"en\", { numeric: true, sensitivity: \"base\" }) ||\n (a.name < b.name ? -1 : 1);\n\n/** Recursively list vault-relative `.md` paths, skipping dot/excluded dirs. */\nconst walkVault = async (\n dir: string,\n root: string,\n exclude: ReadonlySet<string>\n): Promise<string[]> => {\n const found: string[] = [];\n const listed = await readdir(dir, { withFileTypes: true });\n const entries = await Promise.all(\n listed\n .filter((entry) => !(isHidden(entry.name) || exclude.has(entry.name)))\n .map((entry) => classify(dir, entry))\n );\n for (const entry of entries.toSorted(byVaultOrder)) {\n const full = join(dir, entry.name);\n if (entry.directory) {\n // oxlint-disable-next-line no-await-in-loop -- vault trees are shallow; parallelizing complicates ordering for no measurable win.\n found.push(...(await walkVault(full, root, exclude)));\n } else if (entry.file && MARKDOWN_FILE.test(entry.name)) {\n found.push(relative(root, full));\n }\n }\n return found;\n};\n\n/** The first few dead targets, deduplicated, for a diagnostic message. */\nconst sample = (targets: string[]): string =>\n [...new Set(targets)].slice(0, 5).join(\", \");\n\n/** The warnings one load raises: dead notes, then dead headings. */\nconst unresolvedDiagnostics = (\n name: string,\n unresolved: UnresolvedTargets\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n if (unresolved.notes.length > 0) {\n diagnostics.push({\n code: \"BLUME_WIKILINK_UNRESOLVED\",\n message: `Source \"${name}\" found ${unresolved.notes.length} wikilink(s) to a missing note (${sample(unresolved.notes)}); rendered as plain text.`,\n severity: \"warning\",\n suggestion:\n \"Create the missing note, or fix the link target in Obsidian — note names are matched case-insensitively across the whole vault.\",\n });\n }\n if (unresolved.ambiguous.length > 0) {\n const names = new Set(unresolved.ambiguous).size;\n diagnostics.push({\n code: \"BLUME_WIKILINK_AMBIGUOUS\",\n message: `Source \"${name}\" found ${unresolved.ambiguous.length} wikilink(s) to ${names} note name(s) claimed by more than one file (${sample(unresolved.ambiguous)}); each resolves to the first note in vault order.`,\n severity: \"warning\",\n suggestion:\n \"Rename one of the notes, or link to the full vault-relative path (`[[folder/Note]]`) so the target is unambiguous.\",\n });\n }\n if (unresolved.anchors.length > 0) {\n diagnostics.push({\n code: \"BLUME_WIKILINK_UNRESOLVED\",\n message: `Source \"${name}\" found ${unresolved.anchors.length} wikilink(s) to a missing heading (${sample(unresolved.anchors)}); linked to the page without an anchor.`,\n severity: \"warning\",\n suggestion:\n \"Fix the heading text in the link, or add the heading to the target note.\",\n });\n }\n return diagnostics;\n};\n\n/**\n * The built-in Obsidian vault source: read a vault directly — no export step,\n * no generated files in the user's repo — lowering Obsidian's dialect to\n * Blume-ready Markdown at load time.\n *\n * Staged, since the body is rewritten before Blume sees it; `sourcePath` still\n * points at the note, so diagnostics and relative image checks name the real\n * file. A wikilink Blume cannot resolve degrades rather than failing the build.\n */\nexport const obsidianSource = (\n options: ObsidianSourceOptions,\n ctx: SourceContext\n): ContentSource => {\n const vaultDir = resolve(ctx.projectRoot, options.vault);\n // The never-content directories every filesystem scan skips, so a vault\n // rooted at the project (`vault: \".\"`) doesn't publish dependency READMEs\n // or build output — and so the scan and the watcher agree on what is\n // content.\n const exclude = new Set([...BLUME_IGNORE_DIRS, ...(options.exclude ?? [])]);\n\n const load = async (): Promise<SourceLoadResult> => {\n const files = await walkVault(vaultDir, vaultDir, exclude);\n const read = await Promise.all(\n files.map((rel) => readNote(vaultDir, rel, options))\n );\n const notes = read.filter((note): note is ParsedNote => note !== null);\n // Resolving `[[Note#H]]` needs the target's route and headings, so every\n // note is parsed and indexed before any body is rewritten.\n const { index, pairs } = buildLinkIndex(notes, options);\n const unresolved = noTargets();\n const entries = pairs.map((pair) =>\n noteToEntry(pair, index, options, unresolved)\n );\n return {\n diagnostics: unresolvedDiagnostics(options.name, unresolved),\n entries,\n };\n };\n\n // The note as written, for the SPI's lazy read. The lowered body is what\n // `load` stages, and the pipeline reads that copy; this serves the vault\n // file itself, the way the filesystem source does, without pinning a second\n // copy of every note for the life of a dev server.\n const read = async (ref: string): Promise<string> => {\n const absPath = resolve(vaultDir, ref);\n // Lexical containment only — `..` and sibling paths are refused, but a\n // symlink inside the vault is followed wherever it points, the way\n // `walkVault` and the filesystem source follow theirs. Vault symlinks are\n // the author's own and are trusted; the Obsidian source docs say so.\n const rel = relative(vaultDir, absPath);\n if (rel.startsWith(\"..\") || isAbsolute(rel)) {\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n file: absPath,\n message: `Source \"${options.name}\" cannot read \"${ref}\": it resolves outside the vault.`,\n severity: \"error\",\n suggestion: \"Reference notes by their vault-relative path.\",\n });\n }\n return await readFile(absPath, \"utf-8\");\n };\n\n const validate = (): void => {\n // `existsSync` alone also accepts a regular file, which `validate` would\n // wave through and `load` would then fail on with a raw ENOTDIR.\n const stats = statSync(vaultDir, { throwIfNoEntry: false });\n if (stats?.isDirectory()) {\n return;\n }\n const problem = stats ? \"is not a directory\" : \"does not exist\";\n throw new BlumeError({\n code: \"BLUME_SOURCE_MISCONFIGURED\",\n file: vaultDir,\n message: `Source \"${options.name}\" points at \"${options.vault}\", which ${problem}.`,\n severity: \"error\",\n suggestion:\n \"Set `vault` to your Obsidian vault directory, relative to the project root.\",\n });\n };\n\n // Obsidian rewrites `.obsidian/workspace.json` as you move a pane and moves\n // a deleted note into `.trash/`; plugins keep caches in dot-folders of their\n // own. The walk publishes none of them, so a write there must not trigger a\n // rescan either. See {@link ignoringWatchListener}.\n const watch = (onChange: () => void): (() => void) => {\n if (!existsSync(vaultDir)) {\n return () => {\n // Nothing to dispose when the vault doesn't exist yet.\n };\n }\n const watcher = fsWatch(\n vaultDir,\n { recursive: true },\n ignoringWatchListener(onChange, exclude, isHidden)\n );\n return () => watcher.close();\n };\n\n return {\n // The vault is a real on-disk tree, so exposing it lets git last-modified\n // bound its log pathspec to the notes. Folder-meta discovery still skips\n // it — that scan is guarded on `staged`.\n contentRoot: vaultDir,\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n validate,\n watch,\n };\n};\n",
|
|
41
42
|
"import { join } from \"pathe\";\n\nimport { BlumeError } from \"../diagnostics.ts\";\nimport matter from \"../frontmatter.ts\";\nimport {\n hashText,\n loadWithCache,\n pollingWatch,\n snapshotCache,\n} from \"./cache.ts\";\nimport { slugify, slugifyPath } from \"./normalize.ts\";\nimport { portableTextToMarkdown } from \"./portable-text.ts\";\nimport type { PortableTextBlock } from \"./portable-text.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"./types.ts\";\n\n/** The slice of `@sanity/client` this adapter relies on (so it's mockable). */\nexport interface SanityClientLike {\n fetch: <T = unknown>(query: string) => Promise<T>;\n}\n\n/** Field paths mapping a Sanity document onto Blume meta + body. */\nexport interface SanityFieldMap {\n /** Frontmatter title; default `title`. */\n title?: string;\n /** Frontmatter description; default `description`. */\n description?: string;\n /** Route slug (dot path); default `slug.current`. */\n slug?: string;\n /** Portable Text body field; default `body`. */\n body?: string;\n /** Last-modified ISO date; default `_updatedAt`. */\n lastModified?: string;\n}\n\nexport interface SanitySourceOptions {\n name: string;\n prefix?: string;\n projectId: string;\n dataset: string;\n /** Sanity API version (a date); default `2024-01-01`. */\n apiVersion?: string;\n /** GROQ query selecting the documents to import. */\n query: string;\n fields?: SanityFieldMap;\n /** Custom Portable Text block serializers, keyed by `_type`. */\n serializers?: Record<string, (block: PortableTextBlock) => string>;\n /** Read token for private datasets; defaults to `SANITY_TOKEN`. */\n token?: string;\n /** Opt-in dev polling interval (seconds); omit to freeze for the session. */\n pollInterval?: number;\n /** Injected for tests; otherwise built from `@sanity/client`. */\n client?: SanityClientLike;\n}\n\nconst IMAGE_REF = /^image-(?<id>[a-f0-9]+)-(?<dims>\\d+x\\d+)-(?<ext>\\w+)$/u;\n\n/** A value in a fetched document: arbitrary JSON the GROQ query returned. */\ntype SanityValue =\n | string\n | number\n | boolean\n | null\n | SanityValue[]\n | { [key: string]: SanityValue };\n\n/** A document as the GROQ query returns it. */\ninterface SanityDocument {\n [key: string]: SanityValue;\n}\n\n/** The frontmatter fields this adapter maps from a document. */\ninterface SanityFrontmatter {\n description?: string;\n title?: string;\n}\n\n/**\n * A node a dot path can descend into. Arrays pass too (matching their runtime\n * string-key indexing, e.g. `items.0`), so the predicate types them as the\n * keyed form both traverse through.\n */\nconst isTraversable = (\n value: SanityValue | undefined\n): value is SanityDocument => typeof value === \"object\" && value !== null;\n\n/** Resolve a dot path (`slug.current`) against a document. */\nconst getPath = (\n doc: SanityDocument,\n path: string\n): SanityValue | undefined => {\n let current: SanityValue | undefined = doc;\n for (const key of path.split(\".\")) {\n if (isTraversable(current)) {\n current = current[key];\n } else {\n return;\n }\n }\n return current;\n};\n\nconst isStringValue = (value: SanityValue | undefined): value is string =>\n typeof value === \"string\";\n\nconst asString = (value: SanityValue | undefined): string | undefined =>\n isStringValue(value) ? value : undefined;\n\n/** Build a Sanity CDN URL from an image asset `_ref`. */\nconst imageUrlFromRef = (\n ref: string,\n projectId: string,\n dataset: string\n): string | null => {\n const match = ref.match(IMAGE_REF);\n if (!match?.groups) {\n return null;\n }\n const { id, dims, ext } = match.groups;\n return `https://cdn.sanity.io/images/${projectId}/${dataset}/${id}-${dims}.${ext}`;\n};\n\n/** The `createClient` config slice this adapter passes. */\ninterface SanityClientConfig {\n apiVersion: string;\n dataset: string;\n perspective: \"previewDrafts\" | \"published\";\n projectId: string;\n token: string | undefined;\n useCdn: boolean;\n}\n\nconst resolveClient = async (\n options: SanitySourceOptions,\n preview: boolean\n): Promise<SanityClientLike> => {\n if (options.client) {\n return options.client;\n }\n let createClient: (config: SanityClientConfig) => SanityClientLike;\n try {\n // SAFETY: `@sanity/client` is an optional dependency; its `createClient`\n // accepts a superset of this config slice and returns a client exposing\n // the `fetch` method this adapter uses.\n ({ createClient } = (await import(\"@sanity/client\")) as {\n createClient: (config: SanityClientConfig) => SanityClientLike;\n });\n } catch {\n throw new BlumeError({\n code: \"BLUME_SOURCE_SDK_MISSING\",\n message: `Source \"${options.name}\" needs \"@sanity/client\". Install it (e.g. \\`npm install @sanity/client\\`).`,\n severity: \"error\",\n });\n }\n return createClient({\n apiVersion: options.apiVersion ?? \"2024-01-01\",\n dataset: options.dataset,\n // Preview reads draft documents through the API; published builds use the CDN.\n perspective: preview ? \"previewDrafts\" : \"published\",\n projectId: options.projectId,\n token: options.token ?? process.env.SANITY_TOKEN,\n useCdn: !preview,\n });\n};\n\n/**\n * Sanity content source. Runs a GROQ query, maps each document's fields to Blume\n * frontmatter and its Portable Text body to Markdown, and stages the result.\n */\nexport const sanitySource = (\n options: SanitySourceOptions,\n ctx?: SourceContext\n): ContentSource => {\n const fields = options.fields ?? {};\n // When constructed directly (custom-source SPI) without a context, cache under\n // a name-derived dir relative to the project; the built-in type passes a ctx.\n const cache = snapshotCache(\n ctx?.cacheDir ?? join(\".blume\", \"cache\", options.name)\n );\n let snapshot = new Map<string, SourceEntry>();\n\n const toEntry = (doc: SanityDocument): SourceEntry => {\n const slugValue =\n asString(getPath(doc, fields.slug ?? \"slug.current\")) ??\n asString(doc._id) ??\n \"untitled\";\n // Fall back to the unique `_id` when a slug (e.g. a non-ASCII `slug.current`)\n // slugifies to empty, so distinct documents don't all collapse to the same\n // `untitled.md` ref and silently overwrite each other. Path-aware: a\n // `guides/setup` slug keeps its `/` (per-segment slugging) instead of\n // mashing into `guidessetup`.\n const slug =\n slugifyPath(slugValue) || slugify(asString(doc._id) ?? \"\") || \"untitled\";\n\n const data: SanityFrontmatter = {};\n const title = asString(getPath(doc, fields.title ?? \"title\"));\n const description = asString(\n getPath(doc, fields.description ?? \"description\")\n );\n if (title) {\n data.title = title;\n }\n if (description) {\n data.description = description;\n }\n\n // SAFETY: the configured body field holds Portable Text blocks; a value of\n // any other shape fails the `Array.isArray` check below and yields an\n // empty body, and the serializer tolerates malformed blocks.\n const blocks = (getPath(doc, fields.body ?? \"body\") ??\n []) as PortableTextBlock[];\n const markdown = Array.isArray(blocks)\n ? portableTextToMarkdown(blocks, {\n imageUrl: (block) => {\n // SAFETY: `asset` on an image block is Sanity's asset reference\n // object; any other shape yields no `_ref` and the image is\n // skipped.\n const ref = (block.asset as { _ref?: string } | undefined)?._ref;\n return ref\n ? imageUrlFromRef(ref, options.projectId, options.dataset)\n : null;\n },\n serializers: options.serializers,\n })\n : \"\";\n\n const raw = matter.stringify(markdown, data);\n return {\n body: { format: \"md\", text: markdown },\n // Spread into a fresh literal: `SourceEntry.data` wants an\n // index-signature type, which the named interface lacks.\n data: { ...data },\n hash: hashText(raw),\n lastModified: asString(getPath(doc, fields.lastModified ?? \"_updatedAt\")),\n raw,\n ref: `${slug}.md`,\n };\n };\n\n const load = async (\n refresh = ctx?.refresh ?? true\n ): Promise<SourceLoadResult> => {\n const result = await loadWithCache(\n options.name,\n cache,\n async () => {\n const client = await resolveClient(options, ctx?.preview ?? false);\n const docs = await client.fetch<SanityDocument[]>(options.query);\n return docs.map(toEntry);\n },\n refresh\n );\n snapshot = new Map(result.entries.map((entry) => [entry.ref, entry]));\n return result;\n };\n\n const read = async (ref: string): Promise<string> => {\n const cached = snapshot.get(ref);\n if (cached) {\n return cached.raw ?? cached.body.text;\n }\n const all = await cache.read();\n return all.find((e) => e.ref === ref)?.raw ?? \"\";\n };\n\n return {\n load,\n name: options.name,\n prefix: options.prefix,\n read,\n staged: true,\n watch: options.pollInterval\n ? pollingWatch(\n () => load(true),\n options.pollInterval,\n () => load()\n )\n : undefined,\n };\n};\n",
|
|
42
43
|
"/**\n * A minimal Portable Text → Markdown serializer. Covers the standard block,\n * list, and mark types Sanity emits; custom block/mark types fall through to a\n * user-supplied serializer or are skipped with a noted comment. Output is\n * Markdown text that flows through Blume's normal pipeline.\n */\n\n/**\n * A field value on a Portable Text node: the arbitrary JSON the CMS query\n * returned (custom blocks carry whatever fields the studio schema defines).\n * Spans and mark defs appear as members so the block's typed fields conform\n * to its index signature.\n */\nexport type PortableTextValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | PortableTextSpan\n | PortableTextMarkDef\n | PortableTextValue[]\n | { [key: string]: PortableTextValue };\n\n/** A single Portable Text node (block, image, or a custom type). */\nexport interface PortableTextBlock {\n _type: string;\n _key?: string;\n style?: string;\n listItem?: string;\n level?: number;\n children?: PortableTextSpan[];\n markDefs?: PortableTextMarkDef[];\n [key: string]: PortableTextValue;\n}\n\ninterface PortableTextSpan {\n _type: string;\n text?: string;\n marks?: string[];\n}\n\ninterface PortableTextMarkDef {\n _key: string;\n _type: string;\n href?: string;\n}\n\nexport interface PortableTextOptions {\n /** Resolve an image block to a URL (the adapter knows project/dataset). */\n imageUrl?: (block: PortableTextBlock) => string | null;\n /** Custom block-type serializers, keyed by `_type`; return Markdown/MDX. */\n serializers?: Record<string, (block: PortableTextBlock) => string>;\n}\n\nconst HEADING_STYLES = new Map([\n [\"h1\", \"# \"],\n [\"h2\", \"## \"],\n [\"h3\", \"### \"],\n [\"h4\", \"#### \"],\n [\"h5\", \"##### \"],\n [\"h6\", \"###### \"],\n]);\n\n// Markdown/raw-HTML structure characters. Portable Text spans are *plain\n// text* — formatting arrives as marks, never as syntax in the text — so a\n// literal `*`, `_`, `[`, backtick, `~`, or `<` typed in the CMS must render\n// as itself. Unescaped, it opened emphasis or a code span mid-paragraph, and\n// `<` let CMS prose inject raw HTML into the rendered page. CommonMark\n// backslash-escapes every ASCII punctuation character, so `\\*` is always the\n// literal asterisk.\nconst MARKDOWN_SPECIALS = /[\\\\`*_[\\]~<]/gu;\n\nconst escapeText = (text: string): string =>\n text.replaceAll(MARKDOWN_SPECIALS, String.raw`\\$&`);\n\n/** Wrap a span's text in Markdown for its marks (decorators + link defs). */\nconst renderSpan = (\n span: PortableTextSpan,\n defs: Map<string, PortableTextMarkDef>\n): string => {\n // Code spans stay verbatim: their text is literal inside the backticks,\n // and backslash escapes would render as backslashes.\n const isCode = span.marks?.includes(\"code\") ?? false;\n let text = isCode ? (span.text ?? \"\") : escapeText(span.text ?? \"\");\n if (!span.marks || span.marks.length === 0) {\n return text;\n }\n // Decorators wrap inline; a link def wraps last so its label keeps emphasis.\n let link: PortableTextMarkDef | undefined;\n for (const mark of span.marks) {\n switch (mark) {\n case \"strong\": {\n text = `**${text}**`;\n break;\n }\n case \"em\": {\n text = `*${text}*`;\n break;\n }\n case \"code\": {\n text = `\\`${text}\\``;\n break;\n }\n case \"strike-through\": {\n text = `~~${text}~~`;\n break;\n }\n default: {\n const def = defs.get(mark);\n if (def?._type === \"link\") {\n link = def;\n }\n }\n }\n }\n return link?.href ? `[${text}](${link.href})` : text;\n};\n\n/** Render the inline children of a block to a single Markdown string. */\nconst renderChildren = (block: PortableTextBlock): string => {\n const defs = new Map(\n (block.markDefs ?? []).map((def) => [def._key, def] as const)\n );\n return (block.children ?? []).map((span) => renderSpan(span, defs)).join(\"\");\n};\n\n/** Whether an image block's `alt` field is usable alt text (CMS JSON may hold anything). */\nconst isAltText = (value: PortableTextValue): value is string =>\n typeof value === \"string\";\n\nconst renderBlock = (\n block: PortableTextBlock,\n options: PortableTextOptions\n): string => {\n const custom = options.serializers?.[block._type];\n if (custom) {\n return custom(block);\n }\n if (block._type === \"image\") {\n const url = options.imageUrl?.(block);\n const alt = isAltText(block.alt) ? block.alt : \"\";\n return url ? `` : \"\";\n }\n if (block._type !== \"block\") {\n return `<!-- unsupported Portable Text block: ${block._type} -->`;\n }\n\n const inline = renderChildren(block);\n if (block.listItem) {\n const indent = \" \".repeat(Math.max(0, (block.level ?? 1) - 1));\n const marker = block.listItem === \"number\" ? \"1.\" : \"-\";\n return `${indent}${marker} ${inline}`;\n }\n if (block.style === \"blockquote\") {\n return `> ${inline}`;\n }\n return `${HEADING_STYLES.get(block.style ?? \"normal\") ?? \"\"}${inline}`;\n};\n\n/** Serialize a Portable Text array into a Markdown string. */\nexport const portableTextToMarkdown = (\n blocks: PortableTextBlock[],\n options: PortableTextOptions = {}\n): string => {\n const lines = blocks.map((block) => renderBlock(block, options));\n // List items are single-newline separated; everything else gets a blank line.\n const out: string[] = [];\n for (let i = 0; i < lines.length; i += 1) {\n const line = lines[i] ?? \"\";\n const prevList = Boolean(blocks[i - 1]?.listItem);\n const thisList = Boolean(blocks[i]?.listItem);\n if (i > 0) {\n out.push(prevList && thisList ? \"\\n\" : \"\\n\\n\");\n }\n out.push(line);\n }\n return `${out.join(\"\")}\\n`;\n};\n"
|
|
43
44
|
],
|
|
44
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAM,gBAAgB,IAAI,IACxB,CAAC,GAAG,OAAO,KAAK,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,CACnE;AAGO,IAAM,cAAc,CACzB,WAEA,OAAO,SAAS;AAGX,IAAM,cAAc,CAAC,SAC1B,KAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI;AAcnC,IAAM,wBAAwB,CACnC,SACkB;AAAA,EAClB,IAAI,KAAK,mBAAmB,MAAM;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,kBAAkB,KAAK;AAAA;AAe9B,IAAM,eAAe,CAAC,MAAc,SACzC,SAAS,KAAK,iBAAiB,KAAK,0BAA0B,KAAK,IAAI;AAMlE,IAAM,gBAAgB,CAC3B,cACA,MACA,SACW;AAAA,EACX,MAAM,SAAS,aAAa,MAAM,IAAI;AAAA,EACtC,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,OAAO,iBAAiB,MAAM,SAAS,GAAG,SAAS;AAAA;AAS9C,IAAM,eAAe,CAAC,OAAiB,SAA6B;AAAA,EAIzE,MAAM,QAAQ,MAAM,IAAI,YAAY;AAAA,EACpC,MAAM,UAAU,KAAK,QAAQ,KAC3B,CAAC,WACC,OAAO,SAAS,KAAK,iBAAiB,OAAO,KAAK,YAAY,MAAM,KACxE;AAAA,EACA,IAAI,SAAS;AAAA,IACX,OAAO,EAAE,QAAQ,QAAQ,MAAM,MAAM,MAAM,MAAM,CAAC,EAAE;AAAA,EACtD;AAAA,EACA,OAAO,EAAE,QAAQ,KAAK,eAAe,MAAM,MAAM;AAAA;AAa5C,IAAM,kBAAkB,CAC7B,KACA,KACA,SACG;AAAA,EACH,MAAM,OAAO,IAAI,MAAM,GAAG,IAAI,SAAS,IAAI,MAAM;AAAA,EAOjD,IAAI,KAAK,SAAS,IAAI,GAAG;AAAA,IACvB,MAAM,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,IACtC,OAAO;AAAA,MACL,SAAS,KAAK,QAAQ,IAAI,CAAC,YAAW,QAAO,IAAI;AAAA,MACjD,SACE,KAAK,WAAW,QACZ,aAAa,OAAO,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,IACnD;AAAA,IACR;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,WAAW,OAAO;AAAA,IACzB,MAAM,UAAU,KAAK,YAAY,GAAG;AAAA,IAKpC,IAAI,UAAU,KAAK,YAAY,GAAG,GAAG;AAAA,MAGnC,MAAM,SAAS,KAAK,MAAM,UAAU,CAAC,EAAE,YAAY;AAAA,MACnD,MAAM,UAAU,KAAK,QAAQ,KAC3B,CAAC,YAAW,QAAO,KAAK,YAAY,MAAM,MAC5C;AAAA,MACA,IAAI,SAAS;AAAA,QACX,OAAO;AAAA,UACL,SAAS,CAAC,QAAQ,IAAI;AAAA,UACtB,SAAS,GAAG,KAAK,MAAM,GAAG,OAAO,IAAI;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,SAAS,CAAC,KAAK,aAAa,GAAG,SAAS,IAAI;AAAA,EACvD;AAAA,EAEA,QAAQ,QAAQ,SAAS,aAAa,IAAI,MAAM,GAAG,GAAG,IAAI;AAAA,EAC1D,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,EAAE;AAAA;AAc/C,IAAM,mBAAmB,CAC9B,KACA,KACA,QACA,SACW;AAAA,EACX,IAAI,KAAK,WAAW,OAAO;AAAA,IACzB,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,SAAS,IAAI,MAAM;AAAA,IAC/C,MAAM,UAAU,KAAK,YAAY,GAAG;AAAA,IACpC,IAAI,UAAU,KAAK,YAAY,GAAG,GAAG;AAAA,MACnC,MAAM,SAAS,KAAK,MAAM,UAAU,CAAC,EAAE,YAAY;AAAA,MACnD,IAAI,KAAK,QAAQ,KAAK,CAAC,UAAU,MAAM,KAAK,YAAY,MAAM,MAAM,GAAG;AAAA,QACrE,OAAO,KAAK,MAAM,GAAG,OAAO;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,OAAO,GAAG,QAAQ,SAAS;AAAA,EAC7B;AAAA,EACA,OAAO,GAAG,UAAU;AAAA;AASf,IAAM,kBAAkB,CAC7B,OACA,MACA,aACiB;AAAA,EACjB,MAAM,aAAa,IAAI,IACrB,KAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,KAAK,YAAY,CAAC,CACxD;AAAA,EACA,MAAM,cAAc,IAAI,IAAI,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;AAAA,EAC3E,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,WAAW,QAAQ,OAAO;AAAA,IAKxB,MAAM,QAAQ,KAAK,OAAO,IAAI,MAAM,GAAG;AAAA,IACvC,MAAM,SACJ,MAAM,MAAM,YAAY,IAAI,MAAM,EAAE,IAAI,MAAM,KAAK,MAAM,KACxD,YAAY;AAAA,IACf,IACE,SACA,CAAC,KAAK,IAAI,KAAK,KACf,cAAc,IAAI,KAAK,KACvB,CAAC,WAAW,IAAI,KAAK,GACrB;AAAA,MACA,KAAK,IAAI,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,WAAW,qCAAqC,6DAA6D,KAAK,8BAA8B;AAAA,QACzJ,UAAU;AAAA,QACV,YAAY,gBAAgB;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;ACvNT,IAAM,sBAAsB,CAAC,YAAoB,WAC/C,GAAG,iBAAmB;AAQxB,IAAM,uBAAuB,CAC3B,OACA,YACA,WACuB;AAAA,EACvB,MAAM,MAAM,oBAAoB,YAAY,MAAM;AAAA,EAClD,MAAM,WAAW,MAAM,IAAI,GAAG;AAAA,EAC9B,IAAI,UAAU;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAA2B,CAAC;AAAA,EAClC,MAAM,IAAI,KAAK,IAAI;AAAA,EACnB,OAAO;AAAA;AAIF,IAAM,mBAAmB;AAQzB,IAAM,mBAAmB,CAC9B,MACA,WAEA,CAAC,KAAK,KAAK,OAAO,YACjB,CAAC,KAAK,KAAK,QAAQ,UAAU,OAAO,OAAO,SAAS;AAavD,IAAM,mBAAmB,CAAC,SACxB,KAAK,KAAK,IAAI,eAAe,KAAK;AAEpC,IAAM,sBAAsB,CAC1B,OACA,MACA,iBACA,UACA,2BACyB;AAAA,EACzB,MAAM,WAAW,sBAAsB,IAAI;AAAA,EAC3C,IAAI,CAAC,UAAU;AAAA,IACb,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,gBAAgB,IAAI,IACxB,MAAM,MAAM,QAAQ,CAAC,SACnB,KAAK,WAAW,WAAW,CAAC,CAAC,KAAK,gBAAgB,IAAI,CAAU,IAAI,CAAC,CACvE,CACF;AAAA,EACA,MAAM,SAA+B,CAAC;AAAA,EACtC,aAAa,UAAU,KAAK,SAAS;AAAA,IACnC,IAAI,SAAS,UAAU;AAAA,MACrB;AAAA,IACF;AAAA,IACA,MAAM,UAAU,IAAI,IAClB,MAAM,MAAM,QAAQ,CAAC,SACnB,KAAK,WAAW,OAAO,CAAC,KAAK,cAAc,IAAI,CAAC,CAClD,CACF;AAAA,IACA,YAAY,KAAK,WAAW,eAAe;AAAA,MACzC,IAAI,QAAQ,IAAI,GAAG,GAAG;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,OAAO,aAAa,UAAU,cAAc,KAAK,MAAM,IAAI,CAAC;AAAA,MAKlE,MAAM,oBAAwC,yBAC1C,qBAAqB,wBAAwB,OAAO,YAAY,IAAI,IACpE,CAAC;AAAA,MACL,IAAI,wBAAwB;AAAA,QAC1B,kBAAkB,KAAK,EAAE,MAAM,SAAS,OAAO,QAAQ,CAAC;AAAA,MAC1D;AAAA,MACA,OAAO,KAAK;AAAA,QACV,YAAY,gBAAgB,IAAI,GAAG,KAAK,CAAC;AAAA,QACzC,YAAY,OAAO,cAAc;AAAA,QACjC,aAAa,OAAO;AAAA,QACpB,aAAa,iBAAiB,MAAM;AAAA,QACpC,OAAO,OAAO,KAAK;AAAA,QACnB,SAAS,OAAO;AAAA,QAChB,SAAS,OAAO,WAAW,OAAO,OAAO;AAAA,QACzC,UAAU;AAAA,QACV,QAAQ,OAAO,KAAK,QAAQ;AAAA,QAC5B,IAAI,OAAO;AAAA,QACX,WAAW;AAAA,QACX,cAAc,OAAO;AAAA,QACrB,QAAQ;AAAA,QACR;AAAA,QACA,QAAQ,OAAO;AAAA,QACf,YAAY,OAAO;AAAA,QACnB,OAAO,OAAO;AAAA,QACd,SAAS,OAAO;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,gBAAgB,CAAC,YAIT;AAAA,EACnB,QAAQ,SAAS,QAAQ,UAAU;AAAA,EACnC,MAAM,gBAAgB,OAAO,OAAO,aAAa;AAAA,EACjD,QAAQ,SAAS;AAAA,EAIjB,MAAM,kBAAkB,IAAI;AAAA,EAC5B,IAAI,MAAM;AAAA,IACR,WAAW,QAAQ,MAAM,OAAO;AAAA,MAC9B,MAAM,OAAO,gBAAgB,IAAI,KAAK,cAAc,KAAK,CAAC;AAAA,MAC1D,KAAK,KAAK,EAAE,QAAQ,KAAK,QAAQ,MAAM,KAAK,MAAM,CAAC;AAAA,MACnD,gBAAgB,IAAI,KAAK,gBAAgB,IAAI;AAAA,IAC/C;AAAA,EACF;AAAA,EAMA,MAAM,yBAAyB,OAAO,WAClC,IAAI,MACJ;AAAA,EACJ,IAAI,wBAAwB;AAAA,IAC1B,WAAW,QAAQ,MAAM,OAAO;AAAA,MAC9B,qBACE,wBACA,KAAK,YACL,KAAK,MACP,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,SAAS,KAAK,QAAQ,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,SAA+B,MAAM,MAAM,IAAI,CAAC,UAAU;AAAA,IAC9D,YAAY,gBAAgB,IAAI,KAAK,cAAc,KAAK,CAAC;AAAA,IACzD,YAAY,KAAK,cAAc;AAAA,IAC/B,aAAa,KAAK;AAAA,IAClB,aAAa,iBAAiB,IAAI;AAAA,IAClC,OAAO,KAAK,KAAK;AAAA,IACjB,SAAS,KAAK;AAAA,IACd,SAAS,KAAK,WAAW,KAAK,OAAO;AAAA,IACrC,QAAQ,KAAK,KAAK,QAAQ;AAAA,IAC1B,IAAI,KAAK;AAAA,IACT,WAAW,iBAAiB,iBAAiB,MAAM,MAAM;AAAA,IACzD,cAAc,KAAK;AAAA,IACnB,QAAQ,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,IACX,QAAQ,KAAK;AAAA,IACb,YAAY,KAAK;AAAA,IACjB,OAAO,KAAK;AAAA,IACZ,SAAS,KAAK;AAAA,IACd,mBAAmB,yBACf,qBACE,wBACA,KAAK,YACL,KAAK,MACP,IACA,CAAC;AAAA,EACP,EAAE;AAAA,EAEF,IAAI,MAAM;AAAA,IACR,OAAO,KACL,GAAG,oBACD,OACA,MACA,iBACA,OAAO,UACP,sBACF,CACF;AAAA,EACF;AAAA,EAKA,IAAI,0BAA0B,OAAO,UAAU;AAAA,IAC7C,MAAM,OAAO,IAAI,IACf,OAAO,SAAS,SAAS,IAAI,CAAC,SAAS,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAC1E;AAAA,IACA,WAAW,QAAQ,uBAAuB,OAAO,GAAG;AAAA,MAClD,KAAK,KACH,CAAC,GAAG,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,EAAE,OAAO,KAAK,EACjE;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,EAElD,OAAO;AAAA,IACL,cAAc,gBAAgB;AAAA,IAC9B,aAAa,QAAQ;AAAA,IACrB,QAAQ,OAAO,WAAW;AAAA,IAC1B,aAAa,QAAQ;AAAA,IACrB;AAAA,IACA,SAAS;AAAA,EACX;AAAA;;;AChPF,uBAAS,yBAAY;;;ACMrB,IAAM,aACJ;AAEF,IAAM,aAAa;AAGZ,IAAM,cAAc,CAAC,UAA2B,WAAW,KAAK,KAAK;AAGrE,IAAM,cAAc,CAAC,UAA2B,WAAW,KAAK,KAAK;AAGrE,IAAM,cAAc,CAAC,UAC1B,YAAY,KAAK,KAAK,YAAY,KAAK;;;ACVzC;AAGA;AAMA,IAAM,cAAc,cAAc,YAAY,GAAG;AAGjD,IAAM,UAAU,CAAC,QAA6B,YAAY,GAAG;AAE7D,IAAM,OAAO;AAAA,EACX,QAAQ,QAAQ,iCAAiC;AACnD;AAGA,IAAM,cAAc;AAGpB,IAAM,cAAc;AAAA,EAClB,QAAQ;AACV;AAQA,IAAM,WAAW,CAAI,KAAwB,QAC3C,OAAO,OAAO,KAAK,GAAG,IAAI,IAAI,OAAO;AAWvC,IAAM,YAAY,CAAC,SACjB,KACG,KAAK,EACL,YAAY,EACZ,WAAW,YAAY,GAAG;AAE/B,IAAM,UAAU,CAAC,SAAiB,aAA0C;AAAA,EAC1E,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EAClC,MAAM,OAAO,OAAO,YAAY,KAAK,QAAQ;AAAA,EAC7C,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,YAAY,SAAS,UAAU,MAAM,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC/D,OAAO,EAAE,MAAM,MAAM,UAAU,SAAS,WAAW,QAAQ;AAAA;AAOtD,IAAM,cAAc,CAAC,SAAsC;AAAA,EAChE,MAAM,aAAa,UAAU,IAAI;AAAA,EACjC,MAAM,QAAQ,WAAW,QAAQ,GAAG;AAAA,EACpC,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,UAAU,SAAS,aAAa,WAAW,MAAM,GAAG,KAAK,CAAC;AAAA,IAChE,OAAO,UAAU,QAAQ,SAAS,WAAW,MAAM,QAAQ,CAAC,CAAC,IAAI;AAAA,EACnE;AAAA,EACA,OAAO,QAAQ,aAAa,UAAU;AAAA;AASjC,IAAM,UAAU,CAAC,SAA0B,YAAY,IAAI,MAAM;;;AC7ExE,IAAM,mBACJ;AAGF,IAAM,eAAe,CAAC,UACpB,MAAM,QAAQ,CAAC,SACb,KAAK,SAAS,UAAU,CAAC,MAAM,GAAG,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CACxE;AAGF,IAAM,eAAe,CACnB,eACsC;AAAA,EACtC,MAAM,QAA2C,CAAC;AAAA,EAClD,MAAM,OAAO,CAAC,MAA0B,UAAwB;AAAA,IAC9D,IAAI,MAAM;AAAA,MACR,MAAM,KAAK,EAAE,MAAM,MAAM,CAAC;AAAA,IAC5B;AAAA;AAAA,EAEF,WAAW,OAAO,WAAW,MAAM;AAAA,IACjC,KAAK,IAAI,MAAM,QAAQ,IAAI,QAAQ;AAAA,IACnC,WAAW,QAAQ,IAAI,SAAS,CAAC,GAAG;AAAA,MAClC,KAAK,KAAK,MAAM,aAAa,KAAK,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,WAAW,YAAY,WAAW,WAAW;AAAA,IAC3C,WAAW,QAAQ,SAAS,OAAO;AAAA,MACjC,KAAK,KAAK,MAAM,aAAa,KAAK,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,WAAW,UAAU;AAAA,IACtC,KAAK,KAAK,MAAM,kBAAkB,KAAK,QAAQ;AAAA,EACjD;AAAA,EACA,MAAM,WAAW,CAAC,WAAW,OAAO;AAAA,EACpC,WAAW,WAAW,UAAU;AAAA,IAC9B,WAAW,QAAQ,aAAa,OAAO,GAAG;AAAA,MACxC,KAAK,KAAK,MAAM,IAAI,KAAK,QAAQ;AAAA,IACnC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,yBAAyB,CAC7B,OACA,eACiB;AAAA,EACjB,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,aAAa,MAAM,WAAW,OAAO;AAAA,IACnC,IAAI,YAAY,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG;AAAA,MACxD;AAAA,IACF;AAAA,IACA,KAAK,IAAI,IAAI;AAAA,IAGb,MAAM,UAAU,KAAK,UAAU,EAAE,WAAW,GAAG,IAC3C,gBAAgB,UAAU,sEAC1B,iBAAiB,UAAU;AAAA,IAC/B,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,mBAAmB,CAAC,eAC/B,uBAAuB,aAAa,UAAU,GAAG,gBAAgB;AAM5D,IAAM,6BAA6B,CACxC,YACiB;AAAA,EACjB,MAAM,QAAQ,QAAQ,QAAQ,CAAC,SAC7B,KAAK,OACD,CAAC,EAAE,MAAM,KAAK,MAAM,OAAO,iBAAiB,KAAK,SAAS,CAAC,IAC3D,CAAC,CACP;AAAA,EACA,OAAO,uBAAuB,OAAO,gBAAgB;AAAA;AAIvD,IAAM,kBAAkB,CAAC,QAAqB,SAC5C,OAAO,IAAI,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,UAAU,MAAM,WAAW,GAAG,OAAO,CAAC;AAQvE,IAAM,qBAAqB,CAChC,YACA,WACiB;AAAA,EACjB,MAAM,UAA6C;AAAA,IACjD,GAAG,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,OAAO,MAAM,IAAI,KAAK,EAAE;AAAA,IACtE,GAAG,WAAW,UAAU,QAAQ,CAAC,aAC/B,SAAS,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,KAAK,EAAE,CACvE;AAAA,IACA,GAAG,WAAW,SAAS,IAAI,CAAC,UAAU;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,IACb,EAAE;AAAA,IACF,IAAI,WAAW,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY;AAAA,MAC7C,OAAO,OAAO;AAAA,MACd,MAAM,OAAO;AAAA,IACf,EAAE;AAAA,IACF,GAAI,WAAW,MACX,CAAC,EAAE,OAAO,WAAW,IAAI,OAAO,MAAM,WAAW,IAAI,KAAK,CAAC,IAC3D,CAAC;AAAA,EACP;AAAA,EACA,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,aAAa,OAAO,UAAU,SAAS;AAAA,IAGrC,IAAI,CAAC,eAAe,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG;AAAA,MACpE;AAAA,IACF;AAAA,IACA,IAAI,CAAC,gBAAgB,QAAQ,KAAK,MAAM,GAAG,EAAE,MAAM,IAAI,GAAG;AAAA,MACxD,KAAK,IAAI,IAAI;AAAA,MACb,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,qBAAqB,oBAAoB;AAAA,QAClD,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,4BAA4B,CAAC,eAAyC;AAAA,EAC1E,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,aAAa,CAAC,OAAkB,UAAwB;AAAA,IAC5D,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,QAAQ,OAAO;AAAA,MACxB,OAAO,IAAI,KAAK,QAAQ,OAAO,IAAI,KAAK,KAAK,KAAK,KAAK,CAAC;AAAA,IAC1D;AAAA,IACA,YAAY,OAAO,UAAU,QAAQ;AAAA,MACnC,IAAI,QAAQ,GAAG;AAAA,QACb,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,4BAA4B,kBAAkB,eAAe;AAAA,UACtE,UAAU;AAAA,UACV,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,KAAK,SAAS,SAAS;AAAA,QACzB,WAAW,KAAK,UAAU,UAAU,KAAK,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA;AAAA,EAEF,MAAM,WAAkD;AAAA,IACtD,EAAE,OAAO,WAAW,SAAS,OAAO,mBAAmB;AAAA,EACzD;AAAA,EACA,aAAa,OAAO,WAAW,UAAU;AAAA,IACvC,WAAW,OAAO,KAAK;AAAA,EACzB;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,6BAA6B,CACjC,YACA,UACiB;AAAA,EACjB,MAAM,SAAS,IAAI,IACjB,MAAM,QAAQ,CAAC,SAAU,KAAK,KAAK,QAAQ,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAE,CACrE;AAAA,EACA,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,WAAW,CAAC,WAAW,OAAO;AAAA,EACpC,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,WAAW,UAAU;AAAA,IAC9B,WAAW,QAAQ,aAAa,OAAO,GAAG;AAAA,MACxC,IACE,KAAK,SAAS,UACd,OAAO,IAAI,KAAK,MAAM,KACtB,CAAC,KAAK,IAAI,KAAK,MAAM,GACrB;AAAA,QACA,KAAK,IAAI,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUF,IAAM,uBAAuB,CAClC,YACA,UACiB;AAAA,EACjB,GAAG,0BAA0B,UAAU;AAAA,EACvC,GAAG,2BAA2B,YAAY,KAAK;AACjD;;;ACzOA;AAmBA,IAAM,iBAAiB;AACvB,IAAM,eAAe;AACrB,IAAM,aAAa;AAOZ,IAAM,cAAc,CAAC,OAAe,SACzC,SAAS,OAAO,UAAU,QAAQ,MAAM,WAAW,GAAG,OAAO;AAaxD,IAAM,YAAY,CAAC,KAAa,SACrC,YAAY,MAAM,IAAI,IAAI;AAE5B,IAAM,WAAW,CAAC,YAChB,QACG,QAAQ,gBAAgB,EAAE,EAC1B,MAAM,UAAU,EAChB,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AAEb,IAAM,eAAe,CAAC,YAA4B;AAAA,EAChD,MAAM,QAAQ,QAAQ,MAAM,cAAc,GAAG,QAAQ;AAAA,EACrD,OAAO,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC,IAAI,OAAO;AAAA;AAIpD,IAAM,aAAa,CAAC,QAAwB;AAAA,EAC1C,MAAM,QAAQ,IAAI,MAAM,YAAY,GAAG,QAAQ;AAAA,EAC/C,QAAQ,SAAS,KAAK,QAAQ,gBAAgB,EAAE;AAAA;AAQlD,IAAM,cAAc,CAAC,SACnB,KAAK,QAAQ,gBAAgB,EAAE,MAAM;AAGvC,IAAM,SAAS,CAAC,aACd,SAAS,QAAQ,QAAQ,QAAQ,GAAG,EAAE;AAQxC,IAAM,UAAU,CAAC,YACf,OAAO,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,OAAO;AA0C7C,IAAM,cAAc,CAClB,KACA,MACA,OACA,WACkB;AAAA,EAClB,UAAU,CAAC;AAAA,EACX,OAAO,IAAI;AAAA,EACX;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,cAAc,CAClB,QACA,eACiB;AAAA,EACjB,MAAM,WAAW,OAAO,MAAM,IAAI,UAAU;AAAA,EAC5C,IAAI,UAAU;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,OAAO,OAAO,GAAG,OAAO,QAAQ,eAAe;AAAA,EAC5D,MAAM,QAAQ,YACZ,WAAW,UAAU,GACrB,MACA,SAAS,WAAW,MAAM,YAAY,GAAG,QAAQ,SAAS,UAAU,GACpE,aAAa,UAAU,CACzB;AAAA,EACA,OAAO,MAAM,IAAI,YAAY,KAAK;AAAA,EAClC,OAAO,SAAS,KAAK,KAAK;AAAA,EAC1B,OAAO;AAAA;AAST,IAAM,YAAY,CAAC,MAAkB,aAAgC;AAAA,EACnE,IAAI,KAAK,KAAK,QAAQ,UAAU,WAAW;AAAA,IACzC,OAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,OAAO,iBAAiB,KAAK;AAAA,EACjE;AAAA,EACA,IAAI,YAAY,OAAO,QAAQ,CAAC,GAAG;AAAA,IACjC,OAAO,EAAE,OAAO,OAAO,mBAAmB,iBAAiB,MAAM;AAAA,EACnE;AAAA,EAMA,IAAI,KAAK,gBAAgB,aAAa;AAAA,IACpC,MAAM,MAAM,KAAK,KAAK,QAAQ,KAAK,KAAK,WAAW;AAAA,IACnD,MAAM,OAAO,MAAM,KAAK,MAAM,GAAG,IAAI,OAAO;AAAA,IAC5C,IAAI,CAAC,OAAO,MAAM,IAAI,GAAG;AAAA,MACvB,OAAO,EAAE,OAAO,CAAC,MAAM,iBAAiB,MAAM;AAAA,IAChD;AAAA,EACF;AAAA,EAGA,MAAM,QAAQ,aAAa,QAAQ;AAAA,EACnC,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB,KAAK,gBAAgB,eAAe,OAAO,SAAS,KAAK;AAAA,EAC5E;AAAA;AAQF,IAAM,UAAU,CAAC,MAAc,eAA+B;AAAA,EAC5D,IAAI,CAAC,YAAY;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO,GAAG,cAAc,SAAS;AAAA;AAO1C,IAAM,kBAAkB,CACtB,OACA,YACA,YACA,YACA,kBACA,iBACS;AAAA,EAIT,MAAM,OACJ,WAAW,IAAI,QAAQ,MAAM,MAAM,UAAU,CAAC,KAC9C,WAAW,IAAI,QAAQ,MAAM,MAAM,gBAAgB,CAAC;AAAA,EAItD,MAAM,UAAU,aAAa,IAAI,MAAM,IAAI,KAAK,MAAM;AAAA,EACtD,IAAI,MAAM;AAAA,IACR,MAAM,QAAQ,KAAK,SAAS,MAAM;AAAA,IAClC,MAAM,OAAO,KAAK,QAAQ,MAAM;AAAA,IAChC,MAAM,QAAQ,KAAK,SAAS,MAAM;AAAA,IAClC,MAAM,YAAY,KAAK,aAAa,MAAM;AAAA,IAE1C,IAAI,KAAK,OAAO;AAAA,MACd,MAAM,OAAO,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,MACzD,WAAW,SAAS,MAAM,UAAU;AAAA,QAClC,MAAM,WAAW,KAAK,IAAI,MAAM,GAAG;AAAA,QACnC,IAAI,aAAa,WAAW;AAAA,UAC1B,MAAM,QAAQ;AAAA,UACd,IAAI,MAAM,SAAS,QAAQ;AAAA,YACzB,MAAM,kBAAkB;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,SAAS,MAAM,UAAU;AAAA,IAClC,IAAI,MAAM,SAAS,SAAS;AAAA,MAC1B,gBACE,OACA,YACA,YACA,YACA,kBACA,YACF;AAAA,IACF;AAAA,EACF;AAAA;AAwBF,IAAM,+BAA+B,CACnC,MACA,YACA,YACA,YACA,YACA,qBAC2B;AAAA,EAC3B,IAAI,CAAC,KAAK,KAAK,SAAS,KAAK,YAAY,eAAe,IAAI;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,MAAM,OACJ,WAAW,IAAI,QAAQ,YAAY,UAAU,CAAC,KAC9C,WAAW,IAAI,QAAQ,YAAY,gBAAgB,CAAC;AAAA,EACtD,IAAI,CAAC,MAAM,SAAS,KAAK,UAAU,KAAK,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,KAAK,cAAc,KAAK;AAAA,IAC9B,SAAS,eAAe,KAAK,uBAAuB,KAAK,2CAA2C,KAAK,+FAA+F,KAAK;AAAA,IAC7M,UAAU;AAAA,IACV,YAAY,kDAAkD,KAAK;AAAA,EACrE;AAAA;AAqBF,IAAM,mCAAmC,CACvC,OACA,oBACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,CAAC,KAAK,KAAK,QAAQ,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,MAAM,UAAU,YAAY,QAAQ,KAAK,OAAO,CAAC;AAAA,IACjD,IAAI,iBAAiB;AAAA,MACnB,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK,cAAc,KAAK;AAAA,QAC9B,SAAS,IAAI,KAAK;AAAA,QAClB,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,WAAW,CAAC,KAAK,QAAQ,SAAS,GAAG,GAAG;AAAA,MAC1C,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK,cAAc,KAAK;AAAA,QAC9B,SAAS,IAAI,KAAK;AAAA,QAClB,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,MAAM,KAAK,cAAc,KAAK;AAAA,MAC9B,SAAS,IAAI,KAAK;AAAA,MAClB,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,kBAAkB,CAAC,SACvB,KAAK,SAAS,WAAW,KAAK;AAWhC,IAAM,4BAA4B,CAAC,UAAuC;AAAA,EACxE,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,CAAC,OAAO,SAAS,KAAK,KAAK,KAAK,CAAC,gBAAgB,IAAI,GAAG;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AAAA,IACnC,IAAI,MAAM;AAAA,MACR,KAAK,KAAK,IAAI;AAAA,IAChB,EAAO;AAAA,MACL,QAAQ,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;AAAA;AAAA,EAElC;AAAA,EACA,MAAM,cAA4B,CAAC;AAAA,EACnC,YAAY,OAAO,SAAS,SAAS;AAAA,IACnC,IAAI,KAAK,SAAS,GAAG;AAAA,MACnB,MAAM,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,QAAQ;AAAA,MAClD,MAAM,OACJ,MAAM,SAAS,IACX,GAAG,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,UAAU,MAAM,GAAG,EAAE,MACpD,MAAM,KAAK,OAAO;AAAA,MACxB,MAAM,OAAO,KAAK,SAAS,IAAI,aAAa;AAAA,MAI5C,MAAM,OAAO,KAAK,KAChB,CAAC,SAA8B,KAAK,SAAS,MAC/C,GAAG;AAAA,MACH,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN;AAAA,QACA,SAAS,GAAG,QAAQ,sBAAsB;AAAA,QAC1C,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,YAAY,CAAC,OAAsB,gBAAoC;AAAA,EAC3E,YAAY,KAAK,GAAG,0BAA0B,KAAK,CAAC;AAAA,EACpD,MAAM,KAAK,CAAC,GAAG,MAAM;AAAA,IACnB,IAAI,EAAE,UAAU,EAAE,OAAO;AAAA,MACvB,OAAO,EAAE,QAAQ,EAAE;AAAA,IACrB;AAAA,IACA,OAAO,EAAE,MAAM,cAAc,EAAE,KAAK;AAAA,GACrC;AAAA,EACD,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,KAAK,SAAS,SAAS;AAAA,MACzB,UAAU,KAAK,UAAU,WAAW;AAAA,IACtC;AAAA,EACF;AAAA;AAcF,IAAM,aAAa,CACjB,OACA,SACA,UACS;AAAA,EACT,MAAM,SAAS,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,OAAO;AAAA,EAC3D,IAAI,SAAS,OAAO,KAAK,CAAC,WAAW,MAAM,WAAW,aAAa,MAAM,GAAG;AAAA,IAC1E,MAAM,QAAQ,MAAM,OAAO,CAAC,SAAS,KAAK,SAAS,MAAM;AAAA,IACzD,MAAM,OAAO,GAAG,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM;AAAA,EACnD;AAAA,EACA,WAAW,SAAS,QAAQ;AAAA,IAC1B,WAAW,MAAM,UAAU,SAAS,KAAK;AAAA,EAC3C;AAAA;AASF,IAAM,mBAAmB,CACvB,OACA,UACA,YACS;AAAA,EACT,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,KAAK,SAAS,SAAS;AAAA,MACzB;AAAA,IACF;AAAA,IACA,IAAI,KAAK,cAAc,aAAa,SAAS,IAAI,KAAK,SAAS,GAAG;AAAA,MAChE,WAAW,KAAK,UAAU,SAAS,IAAI;AAAA,IACzC;AAAA,IACA,iBAAiB,KAAK,UAAU,UAAU,OAAO;AAAA,EACnD;AAAA;AAGF,IAAM,YAAY,CAAC,MAAmB,YAAqC;AAAA,EACzE,IAAI,KAAK,SAAS,QAAQ;AAAA,IACxB,OAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,YAAY,KAAK,cAAc;AAAA,MAC/B,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,UAAU,OAAO,OAAO,CAAC;AAAA,IAChE,WAAW,KAAK;AAAA,IAChB,SAAS,KAAK,WAAW;AAAA,IACzB,MAAM,KAAK;AAAA,IACX,MAAM;AAAA,IACN,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,EACb;AAAA;AAIF,IAAM,yBAAyB,CAC7B,OACA,YACA,YACA,YACA,kBACA,SACA,UACA,cAA4B,CAAC,MACf;AAAA,EACd,MAAM,OAAO,YAAY,IAAI,IAAI,IAAI,CAAC;AAAA,EAItC,MAAM,eAAe,IAAI;AAAA,EAEzB,WAAW,QAAQ,OAAO;AAAA,IAExB,MAAM,QAAQ,KAAK,QAAQ,MAAM,GAAG;AAAA,IACpC,MAAM,WAAW,MAAM,GAAG,EAAE,KAAK,KAAK;AAAA,IACtC,MAAM,OAAO,OAAO,QAAQ;AAAA,IAC5B,MAAM,OAAO,MAAM,MAAM,GAAG,EAAE;AAAA,IAI9B,IAAI,YAAY,IAAI,GAAG;AAAA,MACrB,MAAM,aAAa,6BACjB,MACA,KAAK,KAAK,GAAG,GACb,YACA,YACA,YACA,gBACF;AAAA,MACA,IAAI,YAAY;AAAA,QACd,YAAY,KAAK,UAAU;AAAA,MAC7B;AAAA,MAKA,IAAI,KAAK,KAAK,QAAQ,WAAW,CAAC,KAAK,UAAU;AAAA,QAC/C,aAAa,IAAI,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,QAAQ,OAAO;AAAA,MAC5D;AAAA,IACF;AAAA,IAEA,IAAI,KAAK,KAAK,QAAQ,QAAQ;AAAA,MAC5B;AAAA,IACF;AAAA,IASA,MAAM,gBAAgB,KAAK,MAAM,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAC1D,MAAM,cAAc,YAAY,IAAI,IAChC,gBACA,cAAc,MAAM,GAAG,EAAE;AAAA,IAC7B,MAAM,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,aAAa,KAAK,GAAG,CAAC,EAAE;AAAA,IACpE,MAAM,SAAS,KAAK,IAAI,GAAG,YAAY,SAAS,aAAa;AAAA,IAE7D,IAAI,SAAS;AAAA,IACb,IAAI,WAAW;AAAA,IACf,WAAW,OAAO,MAAM;AAAA,MACtB,SAAS,YAAY,QAAQ,GAAG;AAAA,MAChC,IAAI,CAAC,aAAa,KAAK,GAAG,GAAG;AAAA,QAC3B,YAAY;AAAA,MACd;AAAA,MACA,OAAO,cAAc,IAAI,YAAY,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG;AAAA,IAClE;AAAA,IAEA,QAAQ,OAAO,oBAAoB,UAAU,MAAM,QAAQ;AAAA,IAC3D,OAAO,SAAS,KAAK;AAAA,MACnB,OAAO,KAAK,KAAK,QAAQ;AAAA,MACzB,YAAY,KAAK,KAAK,cAAc;AAAA,MACpC,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK;AAAA,MACX,MAAM,KAAK,KAAK,QAAQ;AAAA,MACxB,KAAK,WAAW,IAAI;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,KAAK,KAAK,QAAQ,SAAS,KAAK;AAAA,MACvC;AAAA,MACA;AAAA,MACA,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,gBACE,MACA,YACA,YACA,YACA,kBACA,YACF;AAAA,EACA,UAAU,KAAK,UAAU,WAAW;AAAA,EACpC,WAAW,KAAK,UAAU,SAAS,IAAI;AAAA,EACvC,iBAAiB,KAAK,UAAU,UAAU,OAAO;AAAA,EACjD,OAAO,KAAK,SAAS,IAAI,CAAC,UAAU,UAAU,OAAO,OAAO,CAAC;AAAA;AAG/D,IAAM,eAAe,CAAC,QAAwB;AAAA,EAC5C,IAAI,QAAQ,SAAS;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY,IAAI,WAAW,GAAG,IAAI,MAAM,IAAI;AAAA,EAIlD,MAAM,aAAa,UAAU,QAAQ,SAAS,EAAE;AAAA,EAChD,MAAM,UAAU,WAAW,SAAS,QAAQ,IACxC,WAAW,MAAM,GAAG,CAAC,SAAS,MAAM,IACpC;AAAA,EAEJ,OAAO,YAAY,KAAK,MAAM;AAAA;AAGhC,IAAM,cAAc,CAClB,KACA,SACA,aACuB;AAAA,EACvB,IAAI,CAAC,KAAK;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,aAAa,aAAa,GAAG;AAAA,EAGnC,OAAO,QAAQ,IAAI,UAAU,GAAG,SAAS,aAAa,UAAU,UAAU;AAAA;AAI5E,IAAM,YAAY,CAAC,SACjB,OAAO,SAAS;AAOlB,IAAM,mBAAmB,CACvB,MACA,SACA,aACmB;AAAA,EACnB,IAAI,UAAU,IAAI,GAAG;AAAA,IACnB,MAAM,OAAO,QAAQ,IAAI,aAAa,IAAI,CAAC;AAAA,IAC3C,IAAI,CAAC,MAAM;AAAA,MACT,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,OAAO,KAAK,KAAK,QAAQ;AAAA,MACzB,YAAY,KAAK,KAAK,cAAc;AAAA,MACpC,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK,KAAK,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN,OAAO,KAAK,KAAK,QAAQ,SAAS,KAAK;AAAA,MACvC,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACb,MAAM,OAAO,QAAQ,IAAI,aAAa,KAAK,IAAI,CAAC;AAAA,IAChD,OAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,YAAY,MAAM,KAAK,cAAc;AAAA,MACrC,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,QAAQ,MAAM,MAAM;AAAA,MACpB,OAAO,MAAM,SAAS,aAAa,UAAU,aAAa,KAAK,IAAI,CAAC;AAAA,IACtE;AAAA,EACF;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACb,OAAO;AAAA,MACL,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,QAAQ;AAAA,MACR,OAAO,aAAa,UAAU,KAAK,IAAI;AAAA,IACzC;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAIT,IAAM,qBAAqB,CACzB,OACA,SACA,SACA,aACc;AAAA,EACd,MAAM,QAAmB,CAAC;AAAA,EAC1B,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,OAAO;AAAA,MAClC,MAAM,KAAK;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,UAAU,mBAAmB,KAAK,OAAO,SAAS,SAAS,QAAQ;AAAA,QACnE,WAAW,KAAK;AAAA,QAChB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK,WAAW;AAAA,QACzB,MAAM,KAAK;AAAA,QACX,MAAM;AAAA,QACN,OAAO,KAAK;AAAA,QACZ,OAAO,YAAY,KAAK,MAAM,SAAS,QAAQ;AAAA,MACjD,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,MAAM,OAAO,iBAAiB,MAAM,SAAS,QAAQ;AAAA,IACrD,IAAI,MAAM;AAAA,MACR,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAST,IAAM,iBAAiB,CAAC,SAAoB,SAAyB;AAAA,EACnE,IAAI;AAAA,EACJ,MAAM,OAAO,CAAC,UAA8B;AAAA,IAC1C,WAAW,QAAQ,OAAO;AAAA,MACxB,QAAQ,UAAU;AAAA,MAClB,IAAI,UAAU,MAAM;AAAA,QAClB,OAAO;AAAA,MACT;AAAA,MACA,IACE,UAAU,aACV,UAAU,aACV,MAAM,WAAW,GAAG,OAAO,GAC3B;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,MACA,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,QAAQ,GAAG;AAAA,QAChD,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,OAAO,KAAK,OAAO,IAAI,OAAQ,SAAS;AAAA;AAU1C,IAAM,eAAe,CAAC,MAAgB,YACpC,KAAK,IAAI,CAAC,QAAQ;AAAA,EAChB,MAAM,OAAO,IAAI,QAAQ,eAAe,SAAS,IAAI,IAAI;AAAA,EACzD,OAAO,SAAS,IAAI,OAAO,MAAM,KAAK,KAAK,KAAK;AAAA,CACjD;AAiBH,IAAM,kBAAkB,CACtB,UACA,YAOc;AAAA,EACd,MAAM,UAAU,QAAQ,WAAW,CAAC;AAAA,EACpC,MAAM,MAAM,QAAQ,OAAO;AAAA,EAC3B,MAAM,WAAW,QAAQ,YAAY,CAAC;AAAA,EACtC,MAAM,YAAY,QAAQ,aAAa,CAAC;AAAA,EACxC,MAAM,OAAO,QAAQ,QAAQ,CAAC;AAAA,EAC9B,IAAI,CAAC,UAAU;AAAA,IACb,OAAO,EAAE,SAAS,KAAK,UAAU,WAAW,KAAK;AAAA,EACnD;AAAA,EACA,MAAM,aAAa,CAA6B,UAAgB;AAAA,OAC3D;AAAA,IACH,MAAM,aAAa,UAAU,KAAK,IAAI;AAAA,EACxC;AAAA,EACA,MAAM,aAAa,CAA6B,UAAgB;AAAA,OAC3D;AAAA,IACH,MAAM,aAAa,UAAU,KAAK,IAAI;AAAA,EACxC;AAAA,EACA,OAAO;AAAA,IACL,SAAS,QAAQ,IAAI,UAAU;AAAA,IAC/B,KAAK,MAAM,WAAW,GAAG,IAAI;AAAA,IAC7B,UAAU,SAAS,IAAI,UAAU;AAAA,IACjC,WAAW,UAAU,IAAI,CAAC,cAAc;AAAA,SACnC;AAAA,MACH,OAAO,SAAS,MAAM,IAAI,UAAU;AAAA,IACtC,EAAE;AAAA,IACF,MAAM,KAAK,IAAI,CAAC,QAAQ;AAAA,MACtB,MAAM,UAAkB;AAAA,WACnB;AAAA,QACH,OAAO,IAAI,OAAO,IAAI,UAAU;AAAA,QAChC,MAAM,aAAa,UAAU,IAAI,IAAI;AAAA,MACvC;AAAA,MACA,IAAI,IAAI,MAAM;AAAA,QACZ,QAAQ,OAAO,aAAa,UAAU,IAAI,IAAI;AAAA,MAChD;AAAA,MACA,OAAO;AAAA,KACR;AAAA,EACH;AAAA;AAIK,IAAM,kBAAkB,CAC7B,OACA,YAgDe;AAAA,EACf,MAAM,WAAW,QAAQ,YAAY;AAAA,EACrC,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,aAAa,QAAQ,cAAc;AAAA,EACzC,MAAM,mBAAmB,QAAQ,oBAAoB;AAAA,EACrD,MAAM,mBAAmB,QAAQ,oBAAoB,IAAI;AAAA,EAKzD,QAAQ,SAAS,KAAK,UAAU,WAAW,SAAS,gBAClD,UACA,OACF;AAAA,EACA,MAAM,UAAU,IAAI,IAClB,MAAM,IAAI,CAAC,SAAS;AAAA,IAClB,QAAQ,eAAe,KAAK,iBAAiB,KAAK;AAAA,IAClD;AAAA,EACF,CAAC,CACH;AAAA,EAKA,IAAI,YAAY,CAAC,QAAQ,cAAc;AAAA,IACrC,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,OAAO,cAAc,UAAU,KAAK,KAAK;AAAA,MAC/C,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG;AAAA,QACtB,QAAQ,IAAI,MAAM,IAAI;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAAA,EAYA,MAAM,cAAc,aAAa,UAAU,QAAQ,iBAAiB,GAAG;AAAA,EAKvE,MAAM,cAAc,QAAQ,eAAe,CAAC;AAAA,EAC5C,YAAY,KACV,GAAG,iCAAiC,OAAO,QAAQ,QAAQ,OAAO,CAAC,CACrE;AAAA,EAEA,IAAI,QAAQ,SAAS;AAAA,IACnB,MAAM,WAAU,mBACd,QAAQ,SACR,SACA,SACA,QACF;AAAA,IACA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,MAAM,aAAa,MAAM,QAAO;AAAA,IAClC;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,uBACd,OACA,QAAQ,YACR,kBACA,YACA,kBACA,SACA,IAAI,IACF,KAAK,QAAQ,CAAC,QAAS,UAAU,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAE,CACvE,GACA,WACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,MAAM,aAAa,MAAM,OAAO;AAAA,EAClC;AAAA;;;ACn8BK,IAAM,eAAe;AAmDrB,IAAM,gBAAgB,CAC3B,OACA,aACoB;AAAA,EACpB,OAAO,SAAS;AAAA,EAChB,IAAI,SAAS,SAAS,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,KAAK,GAAG;AAAA,IACtE,OAAO,EAAE,MAAM,MAAM,MAAM,CAAC,GAAG,SAAS,MAAM;AAAA,EAChD;AAAA,EACA,OAAO,EAAE,MAAM,OAAO,SAAS,GAAG;AAAA;AAQ7B,IAAM,mBAAmB,CAC9B,KACA,aACuB;AAAA,EACvB,QAAQ,SAAS,SAAS,cAAc,IAAI,MAAM,GAAG,GAAG,QAAQ;AAAA,EAChE,OAAO,EAAE,MAAM,KAAK,KAAK,GAAG,GAAG,QAAQ;AAAA;AAQlC,IAAM,kBAAkB,CAC7B,cACA,YACW;AAAA,EACX,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,OAAO,iBAAiB,MAAM,IAAI,YAAY,IAAI,UAAU;AAAA;AA0BvD,IAAM,sBAAsB,CACjC,OACA,aACiB;AAAA,EAKjB,MAAM,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;AAAA,EACzE,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,WAAW,QAAQ,OAAO;AAAA,IAGxB,OAAO,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG;AAAA,IACzC,IACE,SACA,CAAC,KAAK,IAAI,KAAK,KACf,aAAa,KAAK,KAAK,KACvB,CAAC,WAAW,IAAI,KAAK,GACrB;AAAA,MACA,KAAK,IAAI,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,WAAW,sCAAsC,6FAA6F;AAAA,QACvJ,UAAU;AAAA,QACV,YAAY,cAAc;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;ACvIT,IAAM,gBAAgB,CAAC,UAAwB;AAAA,EAC7C,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,cAA4B,CAAC;AAAA,EACnC,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,WAAW,OAAO,IAAI,KAAK,KAAK;AAAA,IACtC,IAAI,UAAU;AAAA,MACZ,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK,cAAc,KAAK;AAAA,QAC9B,SAAS,wBAAwB,KAAK,UAAU,gBAAgB,KAAK;AAAA,QACrE,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,OAAO,IAAI,KAAK,OAAO,KAAK,EAAE;AAAA,EAChC;AAAA,EACA,OAAO,EAAE,aAAa,OAAO;AAAA;AAQ/B,IAAM,iBAAiB,CACrB,MACA,MACA,UACA,eACA,MACA,aACiB;AAAA,EACjB,IAAI,EAAE,YAAY,SAAS,WAAW;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,cAAc,CAAC;AAAA,EAC/D,MAAM,SAAuB,CAAC;AAAA,EAC9B,YAAY,KAAK,WAAW,eAAe;AAAA,IACzC,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG;AAAA,MACrB,OAAO,KAAK;AAAA,WACP;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,aAAa,UAAU,cAAc,KAAK,MAAM,IAAI,CAAC;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM;AAAA;AAS5B,IAAM,gBAAgB,CAAC,UACrB,OAAO,UAAU;AAEnB,IAAM,eAAe,CACnB,OACA,QACA,kBACW;AAAA,EACX,IAAI,cAAc,KAAK,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EACA,OACE,MAAM,YACL,kBAAkB,YAAY,YAAY,MAAM,mBACjD,OAAO,OAAO,KAAK,EAAE,MACrB;AAAA;AAKJ,IAAM,mBAAmB,CACvB,MACA,QACA,mBAEC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS;AAAA,KACtB;AAAA,EACH,OAAO,IAAI,OAAO,IAAI,CAAC,UAAU;AAAA,OAC5B;AAAA,IACH,OAAO,aAAa,KAAK,OAAO,QAAQ,aAAa;AAAA,EACvD,EAAE;AAAA,EACF,OAAO,aAAa,IAAI,OAAO,QAAQ,aAAa;AACtD,EAAE;AAQJ,IAAM,wBAAwB,CAC5B,MACA,OACA,UACA,eACA,SACA,MACA,aACA,UAAU,OACK;AAAA,EAQf,MAAM,eAAe,CAAC,SACpB,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,IAAI,IACzC,cAAc,MAAM,MAAM,IAAI,IAC9B;AAAA,EACN,MAAM,OAAO,iBACX,QAAQ,WAAW,MACnB,MACA,KAAK,aACP,EAAE,IAAI,CAAC,QAAQ;AAAA,IACb,MAAM,YAAY;AAAA,SACb;AAAA,MACH,OAAO,IAAI,OAAO,IAAI,CAAC,UAAU;AAAA,WAC5B;AAAA,QACH,MAAM,aAAa,KAAK,IAAI;AAAA,MAC9B,EAAE;AAAA,MACF,MAAM,aAAa,IAAI,IAAI;AAAA,IAC7B;AAAA,IACA,IAAI,UAAU,MAAM;AAAA,MAClB,UAAU,OAAO,aAAa,UAAU,IAAI;AAAA,IAC9C;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EACD,MAAM,OAAO,MAAM,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI;AAAA,EACxD,MAAM,cAAc,eAClB,MACA,MACA,UACA,eACA,MACA,QAAQ,YAAY,EACtB;AAAA,EAMA,MAAM,YACJ,KAAK,WAAW,SAAS,SAAS,KAAK,gBAAgB,OAAO;AAAA,EAIhE,MAAM,eAAe,CAA6B,UAAgB;AAAA,OAC7D;AAAA,IACH,MAAM,aAAa,KAAK,IAAI;AAAA,EAC9B;AAAA,EACA,QAAQ,SAAS,KAAK,aAAa,QAAQ;AAAA,EAE3C,OAAO,gBAAgB,aAAa;AAAA,IAClC,SAAS,SAAS,IAAI,YAAY;AAAA,IAClC,UAAU,QAAQ,YAAY;AAAA,IAC9B,KAAK,MAAM,aAAa,GAAG,IAAI;AAAA,IAC/B;AAAA,IACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,IACpC,UAAU,UAAU,IAAI,YAAY;AAAA,IACpC,YAAY,QAAQ;AAAA,IAIpB,eAAe,cAAc,gBAAgB,KAAK,OAAO,GAAG,MAAM,IAAI;AAAA,IACtE,YAAY,CAAC,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IACzD,cAAc;AAAA,IACd,WAAW,QAAQ,WAAW;AAAA,IAC9B,kBAAkB,QAAQ;AAAA,IAG1B,kBAAkB;AAAA,IAIlB,SAAS,UAAU,YAAY,QAAQ,WAAW,QAAQ;AAAA,IAC1D;AAAA,EACF,CAAC;AAAA;AAQH,IAAM,sBAAsB,CAC1B,OACA,SACA,MACA,aACA,UAAU,OACP;AAAA,EAGH,MAAM,WAAW,sBAAsB,IAAI;AAAA,EAC3C,MAAM,gBAAgB,IAAI;AAAA,EAC1B,IAAI,UAAU;AAAA,IACZ,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,KAAK,WAAW,UAAU;AAAA,QAC5B,cAAc,IAAI,KAAK,gBAAgB,IAAI;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAOA,MAAM,qBAAiD,CAAC;AAAA,EACxD,MAAM,OAAO,IAAI;AAAA,EACjB,aAAa,UAAU,KAAK,SAAS;AAAA,IACnC,MAAM,oBAAkC,CAAC;AAAA,IACzC,mBAAmB,QAAQ,sBACzB,MACA,OACA,UACA,eACA,SACA,MACA,mBACA,OACF;AAAA,IACA,WAAW,cAAc,mBAAmB;AAAA,MAC1C,MAAM,MAAM,GAAG,WAAW;AAAA,EAAS,WAAW,QAAQ;AAAA,EAAO,WAAW;AAAA,MACxE,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAAA,QAClB,KAAK,IAAI,GAAG;AAAA,QACZ,YAAY,KAAK,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,aAAyB,mBAAmB,KAAK,kBAAkB;AAAA,IACvE,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS,CAAC;AAAA,IACV,MAAM,CAAC;AAAA,EACT;AAAA,EACA,OAAO,EAAE,YAAY,mBAAmB;AAAA;AAI1C,IAAM,yBAAyB,CAC7B,IACA,cACA,SACA,gBACG;AAAA,EACH,QAAQ,SAAS;AAAA,EACjB,IAAI,MAAM;AAAA,IACR,OAAO,oBAAoB,cAAc,SAAS,MAAM,aAAa,EAAE,EACpE;AAAA,EACL;AAAA,EACA,OAAO;AAAA,IACL,IAAI,gBAAgB,cAAc;AAAA,MAChC,SAAS,QAAQ,WAAW;AAAA,MAC5B,UAAU,QAAQ,YAAY;AAAA,MAC9B,KAAK,QAAQ,WAAW;AAAA,MACxB;AAAA,MACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,MACpC,UAAU,QAAQ,WAAW;AAAA,MAC7B,YAAY,QAAQ;AAAA,MACpB,eAAe,gBAAgB,KAAK,EAAE;AAAA,MACtC,YAAY;AAAA,MACZ,WAAW,QAAQ,WAAW;AAAA,MAC9B,kBAAkB,QAAQ;AAAA,MAC1B,kBAAkB;AAAA,MAGlB,MAAM,iBAAiB,QAAQ,WAAW,MAAM,EAAE;AAAA,IACpD,CAAC;AAAA,EACH;AAAA;AAIK,IAAM,oBAAoB,CAC/B,OACA,YACiB;AAAA,EACjB,QAAQ,aAAa,WAAW,cAAc,KAAK;AAAA,EACnD,QAAQ,SAAS;AAAA,EAKjB,MAAM,eAAe,QAAQ,WACzB,MAAM,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,IAC1C;AAAA,EAIJ,IAAI,qBAAiD,CAAC;AAAA,EACtD,IAAI;AAAA,EACJ,IAAI,MAAM;AAAA,KACP,EAAE,YAAY,mBAAmB,IAAI,oBACpC,cACA,SACA,MACA,WACF;AAAA,EACF,EAAO;AAAA,IACL,aAAa,gBAAgB,cAAc;AAAA,MACzC,SAAS,QAAQ,WAAW;AAAA,MAC5B,UAAU,QAAQ,YAAY;AAAA,MAC9B,KAAK,QAAQ,WAAW;AAAA,MACxB;AAAA,MACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,MACpC,UAAU,QAAQ,WAAW;AAAA,MAC7B,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ,WAAW;AAAA,MAC9B,kBAAkB,QAAQ;AAAA,MAC1B,SAAS,QAAQ,WAAW,QAAQ;AAAA,MAGpC,MAAM,iBAAiB,QAAQ,WAAW,MAAM,EAAE;AAAA,IACpD,CAAC;AAAA;AAAA,EAGH,MAAM,sBAAkE,CAAC;AAAA,EACzE,aAAa,QAAQ,QAAQ,UAAU,YAAY,CAAC,GAAG;AAAA,IACrD,oBAAoB,MAAM,uBACxB,IACA,MAAM,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,GAC1C,SACA,WACF;AAAA,EACF;AAAA,EAKA,YAAY,KACV,GAAG,iBAAiB,UAAU,GAC9B,GAAG,qBAAqB,YAAY,YAAY,CAClD;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;AC/XF;AAEA,6BAAkB;;;ACUlB,IAAM,aAAa;AAUZ,IAAM,iBAAiB,CAAC,MAAc,UAAkC;AAAA,EAC7E,MAAM,UAAU,KAAK,UAAU;AAAA,EAC/B,MAAM,MAAM,QAAQ,MAAM,UAAU,GAAG,QAAQ;AAAA,EAC/C,IAAI,QAAQ,WAAW;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,QAAQ,MAAM,IAAI,MAAM;AAAA,EACrC,MAAM,YAAY,IAAI,WAAW,GAAG,IAAK,MAAiB;AAAA,EAC1D,IAAI,UAAU,MAAM;AAAA,IAKlB,IAAI,cAAc,OAAO,KAAK,SAAS,GAAG,GAAG;AAAA,MAC3C,OAAO;AAAA,IACT;AAAA,IACA,OAAO,EAAE,WAAW,QAAQ,IAAI,OAAO;AAAA,EACzC;AAAA,EAGA,OAAO,MAAM,cAAc,aACzB,IAAI,UAAU,MAAM,UACpB,KAAK,KAAK,MAAM,KACd,OACA;AAAA;;;AC9CN;AACA;;;ACDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBO,IAAM,cAAc,YAAY,SACrC,cACA,UACA,WACA,SACA,UACA,MACF;;;ADJA,IAAM,aAAa;AAAA,EAKjB,OAAO,CAAC,UACL,KAAK,OAAO,EAAE,QAAQ,YAAY,CAAC,KAAK,CAAC;AAAA,EAC5C,WAAW,CAAC,SAAkC,KAAK,IAAI;AACzD;AAEA,IAAM,iBAAiB,CACrB,aAKC;AAAA,KACI;AAAA,EACH,SAAS;AAAA,IACP,MAAM;AAAA,OACH,SAAS;AAAA,EACd;AACF;AAaF,IAAM,yBAAyB,CAAC,UAA2B;AAAA,EACzD,OAAO,QAAQ,IAAI,UAAU,MAAM,MAAM,UAAU,CAAC;AAAA,EACpD,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,WAAW,aAAa,OAAO,KAAK,MAAM,IAAI;AAAA,IAChD,OAAO;AAAA,EACT;AAAA,EAGA,OAAO,CAAC,MAAM,SAAS;AAAA,MAAS,CAAC;AAAA;AAgBnC,IAAM,cAAc,CAAC,UAAiD;AAAA,EACpE,MAAM,OAAqB;AAAA,IACzB,SAAS;AAAA,IACT,MAAM,CAAC;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,MAAM;AAAA,IAEN,WAAW,MAAc;AAAA,EAC3B;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,gBAAgB,CAAC,UACrB,OAAO,UAAU;AAMnB,IAAM,SAAS,OAAO,OACpB,CAAC,OAAoB,YACnB,cAAc,KAAK,KAAK,uBAAuB,KAAK,IAChD,YAAY,KAAK,IACjB,WAAW,OAAO,eAAe,OAAO,CAAC,GAC/C,YACA;AAAA,EACE,MAAM,CAAC,UAAuB,YAC5B,WAAW,KAAK,UAAU,eAAe,OAAO,CAAC;AAAA,EAKnD,WAAW,CACT,MACA,MACA,YAEA,WAAW,UACT,cAAc,IAAI,IAAI,EAAE,SAAS,KAAK,IAAI,MAC1C,MACA,eAAe,OAAO,CACxB;AACJ,CACF;AAEA,IAAe;;;AEnIf;AAEA;AACA,oBAAS;;;ACsBF,IAAM,iBAAiB;AAUvB,IAAM,aAAa,CAAC,SAAwB,OAAqB;AAAA,EACtE,QAAQ,YAAY,QAAQ;AAAA;AAI9B,IAAM,SACJ;AAuBK,IAAM,sBAAsB,CACjC,MACA,iBACmB;AAAA,EACnB,IAAI,YAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SACM,QAAQ,OAAO,KAAK,SAAS,EACjC,OAAO,QACP,QAAQ,OAAO,KAAK,SAAS,GAC7B;AAAA,IACA,MAAM,aAAa,MAAM,OAAO,WAAW,MAAM,OAAO;AAAA,IACxD,MAAM,QACJ,eAAe,YACX,GAAG,MAAM,OAAO,QAAQ,UACxB,IAAI;AAAA,IAEV,IAAI,MAAM,OAAO,YAAY,aAAa,eAAe,KAAK,GAAG;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,YAAY,UAAU,MAAM,GAAG,MAAM,KAAK;AAAA,IAC1C,IAAI,eAAe,WAAW;AAAA,MAG5B,QAAQ,MAAM,OAAO,SAAS,YAAY,SAAS;AAAA,IACrD,EAAO;AAAA,MACL,OAAO;AAAA;AAAA,EAEX;AAAA,EACA,OAAO,EAAE,IAAI,MAAM,WAAW,IAAI;AAAA;;;ADxEpC,IAAM,kBAAiB;AACvB,IAAM,gBAAe;AACrB,IAAM,cAAa;AAGnB,IAAM,qBAAqB,CAAC,YAC1B,QAAQ,QAAQ,iBAAgB,EAAE;AAGpC,IAAM,aAAa,CAAC,YAClB,QAAQ,MAAM,aAAY,GAAG,QAAQ,SAAS;AAczC,IAAM,WAAU,CAAC,SACtB,KACG,UAAU,KAAK,EACf,YAAY,EACZ,KAAK,EACL,WAAW,4BAA4B,EAAE,EACzC,WAAW,YAAY,GAAG,EAC1B,WAAW,QAAQ,GAAG,EACtB,WAAW,WAAW,EAAE;AAQtB,IAAM,cAAc,CAAC,SAC1B,KAAK,MAAM,GAAG,EAAE,IAAI,QAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAGvD,IAAM,YAAY,CAAC,UACjB,MACG,MAAM,WAAU,EAChB,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AAWb,IAAM,kBAAkB,CAAC,YACvB,QAAQ,WAAW,eAAe,EAAE;AAGtC,IAAM,kBAAkB,CACtB,MACA,UACA,WACS;AAAA,EAGT,IAAI,SAAS,IAAI;AAAA,IACf;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,WAAW,IAAI;AAAA,EAC7B,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO,KAAK,KAAK;AAAA,IACjB;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,mBAAmB,IAAI;AAAA,EACrC,IAAI,UAAU,SAAS;AAAA,IACrB;AAAA,EACF;AAAA,EACA,MAAM,OAAO,gBAAgB,KAAK;AAAA,EAElC,IAAI,SAAS,IAAI;AAAA,IACf;AAAA,EACF;AAAA,EACA,SAAS,KAAK,IAAI;AAAA;AAepB,IAAM,WAAW,CAAC,iBAAsC;AAAA,EACtD,MAAM,aAAa,aAAa,MAC9B,GACA,aAAa,SAAS,SAAQ,YAAY,EAAE,MAC9C;AAAA,EACA,MAAM,WAAW,WAAW,MAAM,GAAG;AAAA,EAErC,MAAM,WAAqB,CAAC;AAAA,EAC5B,MAAM,SAAmB,CAAC;AAAA,EAE1B,WAAW,QAAQ,UAAU;AAAA,IAC3B,gBAAgB,MAAM,UAAU,MAAM;AAAA,EACxC;AAAA,EAEA,MAAM,QAAQ,SAAS,WAAW,IAAI,MAAM,IAAI,SAAS,KAAK,GAAG;AAAA,EACjE,OAAO,EAAE,QAAQ,OAAO,SAAS;AAAA;AAMnC,IAAM,cAAc;AAIpB,IAAM,mBAAmB;AAKzB,IAAM,sBAAsB;AAC5B,IAAM,iBACJ;AACF,IAAM,qBAAqB;AAY3B,IAAM,cAAc;AAGpB,IAAM,eAAe;AAWrB,IAAM,0BAA0B,CAAC,SAAiB;AAAA,EAChD,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,IAAI,CAAC,aAAa,KAAK,MAAM,MAAM,EAAE,GAAG;AAAA,IACtC,OAAO,EAAE,OAAO,QAAQ,EAAE;AAAA,EAC5B;AAAA,EAKA,KAAK,MAAM,MAAM,IAAI,KAAK,MAAM,IAAI;AAAA,IAClC,OAAO,EAAE,OAAO,QAAQ,EAAE;AAAA,EAC5B;AAAA,EACA,MAAM,QAAQ,MAAM,UAClB,CAAC,MAAM,UAAU,QAAQ,KAAK,mBAAmB,KAAK,IAAI,CAC5D;AAAA,EACA,OAAO,UAAU,KACb,EAAE,OAAO,QAAQ,EAAE,IACnB,EAAE,OAAO,MAAM,MAAM,QAAQ,CAAC,GAAG,QAAQ,QAAQ,EAAE;AAAA;AASzD,IAAM,oBACJ;AASF,IAAM,UACJ;AAIK,IAAM,eAAe;AACrB,IAAM,cAAc;AA4C3B,IAAM,kBAAkB,CACtB,MACA,OACA,UACS;AAAA,EACT,MAAM,MAAM,KAAK,QAAQ,KAAK,KAAK;AAAA,EACnC,IAAI,QAAQ,IAAI;AAAA,IACd,MAAM,YAAY;AAAA,IAClB;AAAA,EACF;AAAA,EACA,MAAM,YAAY;AAAA,EAClB,IAAI,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,aAAa,GAAG,GAAG;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,MAAM,eAAe;AAAA;AAsBvB,IAAM,sBAAsB;AAa5B,IAAM,iBACJ;AAgBF,IAAM,sBAAsB,CAAC,UAA0C;AAAA,EACrE,MAAM,SAAS,IAAI;AAAA,EACnB,IAAI,QAAoB;AAAA,EACxB,YAAY,OAAO,SAAS,MAAM,QAAQ,GAAG;AAAA,IAC3C,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,IACvC,IAAI,UAAU,QAAQ,SAAS,MAAM;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM,SAAS,KAAK,MAAM,cAAc,GAAG;AAAA,IAC3C,IAAI,QAAQ,UAAU,aAAa,OAAO,MAAM,KAAK,MAAM,IAAI;AAAA,MAC7D;AAAA,IACF;AAAA,IACA,MAAM,cAAc,OAAO,QAAQ;AAAA,IACnC,IAAI,gBAAgB,OAAO,MAAM,QAAQ,MAAM,IAAI,KAAK,MAAM,IAAI;AAAA,MAChE;AAAA,IACF;AAAA,IACA,OAAO,IAAI,OAAO,MAAM,KAAK,EAAE,WAAW,SAAS,GAAG,EAAE,YAAY,CAAC;AAAA,EACvE;AAAA,EACA,OAAO;AAAA;AAmBT,IAAM,YAAY,CAChB,OACA,KACA,SACA,iBACmB;AAAA,EACnB,MAAM,YAAY,IAAI,WAAW,qBAAqB,SAAS;AAAA,EAC/D,MAAM,UAAU,oBAAoB,WAAW,YAAY;AAAA,EAC3D,MAAM,OAAO,QAAQ,KAAK,KAAK;AAAA,EAC/B,IAAI,SAAS,OAAO,QAAQ,OAAO,aAAa,QAAQ,QAAQ,YAAY;AAAA,IAC1E,OAAO;AAAA,MACL,SAAS,EAAE,OAAO,MAAM,QAAQ,KAAK,SAAS,GAAG,MAAM,UAAU;AAAA,MACjE,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,OAAO,WAAW;AAAA,IAC5B,WAAW,SAAS,QAAQ,EAAE;AAAA,IAC9B,OAAO,EAAE,SAAS,EAAE,OAAO,MAAM,QAAQ,IAAI,KAAK,GAAG,QAAQ,KAAK;AAAA,EACpE;AAAA,EACA,OAAO,EAAE,SAAS,EAAE,OAAO,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,MAAM;AAAA;AAI7E,IAAM,cAAc,CAClB,UACA,OACA,SACA,SACS;AAAA,EACT,SAAS,KAAK,QAAQ,OAAO;AAAA,EAC7B,MAAM,MAAM,KAAK,EAAE,MAAM,QAAQ,QAAQ,OAAO,CAAC;AAAA;AAInD,IAAM,kBAAkB,CACtB,MACA,MACA,UACS;AAAA,EACT,MAAM,KAAK,KAAK,MAAM,iBAAiB,GAAG,QAAQ;AAAA,EAClD,IAAI,OAAO,WAAW;AAAA,IACpB,MAAM,aAAa,KAAK,EAAE,IAAI,KAAK,CAAC;AAAA,EACtC;AAAA;AAIF,IAAM,kBAAkB,CACtB,MACA,OACA,SACA,UACA,iBACS;AAAA,EAET,MAAM,YAAY,KAAK,KAAK,WAAW,aAAa,EAAE,CAAC;AAAA,EACvD,MAAM,MAAM,KAAK,MAAM,WAAW;AAAA,EAClC,IAAI,KAAK,QAAQ;AAAA,IACf,MAAM,QAAQ,IAAI,OAAO,QAAQ,UAAU;AAAA,IAC3C,MAAM,QAAQ,IAAI,OAAO,QAAQ,IAAI,KAAK;AAAA,IAC1C,YACE,UACA,OACA,UAAU,OAAO,MAAM,SAAS,YAAY,GAC5C,MAAM,IACR;AAAA,IACA,gBAAgB,MAAM,MAAM,MAAM,KAAK;AAAA,IACvC,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,MAAM,SAAS,KAAK,MAAM,gBAAgB;AAAA,EAC1C,IAAI,QAAQ,UAAU,MAAM,UAAU,SAAS,GAAG;AAAA,IAGhD,MAAM,QAAQ,OAAO,OAAO,QAAQ,WAAW,GAAG,IAAI,IAAI;AAAA,IAC1D,MAAM,OAAO,MAAM,UAAU,KAAK,GAAG,EAAE,KAAK;AAAA,IAG5C,YACE,UACA,OACA,UAAU,OAAO,MAAM,SAAS,YAAY,GAC5C,MAAM,OAAO,CACf;AAAA,IACA,gBAAgB,MAAM,MAAM,gBAAgB,KAAK;AAAA,IACjD,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,IACE,KAAK,KAAK,MAAM,MAChB,eAAe,KAAK,IAAI,KACxB,oBAAoB,KAAK,IAAI,GAC7B;AAAA,IACA,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,IAAI,MAAM,UAAU,WAAW,GAAG;AAAA,IAChC,MAAM,iBAAiB,MAAM;AAAA,EAC/B;AAAA,EACA,MAAM,UAAU,KAAK,KAAK,KAAK,CAAC;AAAA;AAIlC,IAAM,kBAAkB,CACtB,MACA,OACA,SACA,UACA,iBACS;AAAA,EACT,MAAM,OAAO,eAAe,MAAM,MAAM,KAAK;AAAA,EAG7C,IAAI,MAAM,UAAU,QAAQ,SAAS,MAAM;AAAA,IACzC,MAAM,QAAQ;AAAA,IACd,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EAKA,MAAM,UAAU,KAAK,UAAU;AAAA,EAC/B,IAAI,MAAM,WAAW;AAAA,IACnB,gBAAgB,SAAS,GAAG,KAAK;AAAA,IACjC,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,IAAI,YAAY,KAAK,OAAO,GAAG;AAAA,IAC7B,gBAAgB,SAAS,UAAU,QAAQ,KAAK;AAAA,IAChD,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,IAAI,MAAM,cAAc,GAAG;AAAA,IACzB,IAAI,aAAa,KAAK,IAAI,GAAG;AAAA,MAC3B,MAAM,eAAe;AAAA,IACvB;AAAA,IACA,MAAM,YAAY,CAAC;AAAA,IACnB;AAAA,EACF;AAAA,EACA,gBAAgB,MAAM,OAAO,SAAS,UAAU,YAAY;AAAA;AAgCvD,IAAM,WAAW,CAAC,SAA2B;AAAA,EAClD,MAAM,WAAsB,CAAC;AAAA,EAC7B,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAA0B;AAAA,IAC9B,aAAa,CAAC;AAAA,IACd,cAAc,CAAC;AAAA,IACf,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW,CAAC;AAAA,IACZ,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,WAAW;AAAA,IACX,OAAO,CAAC;AAAA,EACV;AAAA,EAEA,QAAQ,OAAO,WAAW,wBAAwB,IAAI;AAAA,EACtD,MAAM,gBAAgB,oBAAoB,KAAK;AAAA,EAC/C,MAAM,eAAe,CAAC,UACpB,cAAc,IAAI,MAAM,YAAY,CAAC;AAAA,EACvC,YAAY,OAAO,SAAS,MAAM,QAAQ,GAAG;AAAA,IAC3C,MAAM,OAAO,QAAQ,SAAS;AAAA,IAC9B,gBAAgB,MAAM,OAAO,SAAS,UAAU,YAAY;AAAA,EAC9D;AAAA,EAEA,MAAM,UAAU,IAAI;AAAA,EAIpB,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,CAAI,EAAE,WAAW,cAAc,GAAG;AAAA,EACxE,WAAW,SAAS,OAAO,SAAS,OAAO,GAAG;AAAA,IAC5C,MAAM,KAAK,MAAM,QAAQ,UAAU,MAAM,QAAQ,OAAO,MAAM,QAAQ;AAAA,IACtE,IAAI,OAAO,WAAW;AAAA,MACpB,QAAQ,IAAI,EAAE;AAAA,IAChB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,SAAS,CAAC,GAAG,OAAO;AAAA,IACpB,cAAc,MAAM;AAAA,IACpB;AAAA,IACA,OAAO,MAAM;AAAA,EACf;AAAA;AAGK,IAAM,kBAAkB,CAAC,SAC9B,SAAS,IAAI,EAAE;AAOjB,IAAM,UACJ;AAGK,IAAM,WACX;AAGK,IAAM,iBAAiB,CAC5B,SACA,QACA,UACW,QAAQ,SAAS,KAAK,OAAO,UAAU,KAAK,OAAO;AAShE,IAAM,eAAe,CACnB,MACA,YACA,OACA,UACe;AAAA,EACf,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,EAEvC,IAAI,UAAU,QAAQ,SAAS,MAAM;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,SAAS,KAAK,WAAW,aAAa,CAAC,SAC3C,IAAI,OAAO,KAAK,MAAM,CACxB;AAAA,EACA,WAAW,SAAS,OAAO,SAAS,OAAO,GAAG;AAAA,IAC5C,MAAM,SAAS,MAAM,QAAQ;AAAA,IAC7B,IAAI,WAAW,aAAa,MAAM,UAAU,WAAW;AAAA,MACrD;AAAA,IACF;AAAA,IAIA,MAAM,eAAe,eAAe,MAAM,IAAI,QAAQ,MAAM,QAAQ,KAAK;AAAA,IACzE,MAAM,QAAkB;AAAA,MACtB,QAAQ,MAAM,QAAQ,eAAe;AAAA,MACrC,MAAM;AAAA,MACN;AAAA,IACF;AAAA,IAIA,IAAI,OAAO,MAAM,QAAQ,OAAO,KAAK;AAAA,MACnC,MAAM,QAAQ;AAAA,IAChB;AAAA,IACA,MAAM,KAAK,KAAK;AAAA,IAGhB,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG,eAAe,KAAK,MAAM;AAAA,IAC1D,WAAW,SAAS,MAAM,SAAS,QAAQ,GAAG;AAAA,MAC5C,MAAM,cAAc,MAAM,QAAQ;AAAA,MAClC,IAAI,gBAAgB,aAAa,MAAM,UAAU,WAAW;AAAA,QAC1D;AAAA,MACF;AAAA,MACA,MAAM,KAAK;AAAA,QACT,QACE,MAAM,QACN,MAAM,QACN,eAAe,MAAM,IAAI,aAAa,MAAM,QAAQ,KAAK,IACzD;AAAA,QACF,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,eAAe,CAAC,MAAc,aAAa,MAAkB;AAAA,EACxE,MAAM,QAAoB,CAAC;AAAA,EAC3B,IAAI,QAAoB;AAAA,EACxB,IAAI,aAAa;AAAA,EAEjB,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,cAAc;AAAA,IACd,QAAQ,aAAa,MAAM,YAAY,OAAO,KAAK;AAAA,EACrD;AAAA,EAEA,OAAO;AAAA;AAOT,IAAM,gBAAgB;AACtB,IAAM,WAAW;AASjB,IAAM,cAAc,CAClB,MACA,OACA,SACe;AAAA,EACf,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,EAEvC,IAAI,UAAU,QAAQ,SAAS,MAAM;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAK,WAAW,aAAa,EAAE,EAAE,WAAW,eAAe,EAAE;AAAA,EAC3E,WAAW,SAAS,MAAM,SAAS,QAAQ,GAAG;AAAA,IAC5C,MAAM,MAAM,MAAM,QAAQ;AAAA,IAC1B,IAAI,KAAK;AAAA,MACP,KAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,uBAAuB,CAAC,SAA2B;AAAA,EAC9D,MAAM,OAAO,IAAI;AAAA,EACjB,IAAI,QAAoB;AAAA,EACxB,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,QAAQ,YAAY,MAAM,OAAO,IAAI;AAAA,EACvC;AAAA,EACA,OAAO,CAAC,GAAG,IAAI;AAAA;AASV,IAAM,qBAAqB,CAChC,KACA,SAEA,MAAM,KAAK,IAAI,GAAG,IAAI,MAAM;AAAA,CAAI,EAAE,SAAS,KAAK,MAAM;AAAA,CAAI,EAAE,MAAM,IAAI;AAQxE,IAAM,qBAAqB,CACzB,OACA,SACA,eAEA,MAAM,IAAI,CAAC,SAAS;AAAA,EAClB,MAAM,SAAS,QAAQ,KAAK,OAAO;AAAA,EACnC,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAqB,KAAK,MAAM,MAAM,OAAO,KAAK;AAAA,EACxD,IAAI,OAAO,SAAS,YAAY;AAAA,IAC9B,SAAS,OAAO,OAAO;AAAA,EACzB;AAAA,EACA,OAAO;AAAA,CACR;AAGH,IAAM,gBAAgB,CAAC,UACrB,MAAM,YAAY,MAAM,SAAS,SAAS,SAAS,IAC/C,MAAM,SAAS,WACf;AAQN,IAAM,aAAa,CAAC,UAClB,MAAM,WACF,mBACE,aAAa,MAAM,SAAS,IAAI,GAChC,MAAM,SAAS,SACf,MAAM,UACR,IACA,aACE,MAAM,KAAK,MACX,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI,CAC/C;AAWN,IAAM,yBAAyB,CAC7B,OACA,SACA,eAEA,QAAQ,IAAI,GAAG,IAAI,WAAW;AAAA,EAC5B,MAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAAA,EAC9C,MAAM,OAAO,MAAM,cAAc,GAAG,cAAc,MAAM;AAAA,EACxD,MAAM,YAAY,WAAW,aAAa,OAAO,SAAS,MAAM;AAAA,EAChE,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM,QAAQ,QAAQ;AAAA,IACtB,MACE,QAAQ,QAAQ,OAAO,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,IACtE,SAAS,YACL,OAAO,8DAA8D,gDACrE,OAAO;AAAA,IACX,UAAU;AAAA,IACV,YAAY,aAAa,+BAA+B;AAAA,EAC1D;AAAA,CACD;AAEH,IAAM,cAAc,CAClB,MACA,UACA,OACW;AAAA,EACX,IAAI,KAAK,OAAO;AAAA,IACd,OAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,eAAe,SAAS,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,SAAS;AAAA,EACrE,IAAI,cAAc;AAAA,IAChB,OAAO,aAAa;AAAA,EACtB;AAAA,EACA,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,EACpC,OAAO,UAAU,mBAAmB,KAAK,QAAQ,SAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;AAAA;AAItE,IAAM,cAAc,CAAC,UAA0B,SAAS,OAAO,GAAG;AAG3D,IAAM,gBAAgB,CAC3B,UACoB,OAAO,UAAU;AAGvC,IAAM,aAAa,CAAC,QAA4B,SAAyB;AAAA,EACvE,MAAM,QAAQ,SAAS,YAAY,MAAM,IAAI;AAAA,EAC7C,OAAO,QAAQ,GAAG,SAAS,SAAS;AAAA;AAgC/B,IAAM,gBAAgB,CAC3B,KACA,KACA,QACmB;AAAA,EACnB,QAAQ,SAAS,SAAS,IAAI,WAC1B,iBAAiB,KAAK,IAAI,QAAQ,IAClC,EAAE,MAAM,KAAK,SAAS,GAAG;AAAA,EAC7B,QAAQ,SAAS,YAAY,IAAI,OAC7B,gBAAgB,MAAM,KAAK,IAAI,IAAI,IACnC,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,KAAK;AAAA,EACnC,OAAO,EAAE,SAAS,SAAS,QAAQ;AAAA;AAsC9B,IAAM,oBAAoB,CAC/B,OACA,KACA,iBACA,QACe;AAAA,EACf,QAAQ,SAAS,SAAS,YAAY,cAAc,MAAM,KAAK,KAAK,GAAG;AAAA,EACvE,MAAM,YAAY,mBAAmB,MAAM;AAAA,EAC3C,MAAM,OAAO,YAAY,YAAY,SAAS,IAAI;AAAA,EAClD,MAAM,aAAa,WAAW,IAAI,QAAQ,OAAO,GAAG,OAAO,QAAQ,OAAO;AAAA,EAC1E,QAAQ,UAAU,QAAQ,OAAO,eAAe,SAAS,UAAU;AAAA,EACnE,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,cAAc,gBAAgB,YAAY,OAAO;AAAA,IACjD,SAAS,WAAW,IAAI,QAAQ,OAAO;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;AAIK,IAAM,iBAAiB,CAC5B,cACA,QACA,SACY,OAAO,cAAc,cAAc,QAAQ,IAAI,IAAI;AAejE,IAAM,eAAe,CACnB,YAEA,OAAO,YAAY,YAAY,YAAY;AAE7C,IAAM,cAAc,CAAC,QACnB,OAAO,QAAQ;AAGjB,IAAM,cAAa,CACjB,YACoB;AAAA,EACpB,MAAM,MAAM,aAAa,OAAO,IAAI,QAAQ,MAAM;AAAA,EAClD,OAAO,YAAY,GAAG,IAAI,OAAO,GAAG,IAAI;AAAA;AAY1C,IAAM,qBAAqB,CACzB,MACA,WACwB;AAAA,EACxB,MAAM,SAA4C,CAAC;AAAA,EACnD,MAAM,SAA2B,CAAC;AAAA,EAClC,YAAY,KAAK,WAAW,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,MAAM,UAAU,OAAO,aAAa,SAAS,KAAK,IAAI;AAAA,IACtD,IAAI,mBAAmB,SAAS;AAAA,MAC9B,OAAO,KAAK;AAAA,QACV,SAAS;AAAA,QACT,MAAM,CAAC,GAAG;AAAA,MACZ,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,WAAW,WAAW;AAAA,MAChC,OAAO,KACL,GAAG,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,QAChC,SAAS,MAAM;AAAA,QACf,MAAM,CAAC,KAAK,IAAI,MAAM,QAAQ,CAAC,GAAG,IAAI,WAAU,CAAC;AAAA,MACnD,EAAE,CACJ;AAAA,MACA;AAAA,IACF;AAAA,IAGA,IAAI,QAAQ,UAAU,aAAa,OAAO,OAAO,MAAM,GAAG,GAAG;AAAA,MAC3D,OAAO,OAAO,QAAQ;AAAA,IACxB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AAAA,IAClD;AAAA,EACF;AAAA;AAYF,IAAM,iBAAiB,CACrB,OACA,QAGiD;AAAA,EAIjD,MAAM,YAAY,cAAc,MAAM,KAAK,IAAI,IAC3C,MAAM,KAAK,OACX,IAAI;AAAA,EACR,MAAM,aAAa,IAAI,kBAAkB;AAAA,EAGzC,MAAM,SACJ,IAAI,qBAAqB,aACrB,KAAK,IAAI,sBAAsB,WAAW,IAC1C;AAAA,EACN,MAAM,QAAQ,SACV,OAAO,YACL,OAAO,QAAQ,MAAM,IAAI,EAAE,OACzB,EAAE,SAAS,CAAC,OAAO,OAAO,QAAQ,GAAG,CACvC,CACF,IACA,MAAM;AAAA,EAEV,MAAM,SAAS,eAAe,UAAU,KAAK;AAAA,EAC7C,MAAM,eAAe,SAAS,mBAAmB,MAAM,MAAM,MAAM,IAAI;AAAA,EAEvE,IAAI,OAAO,YAAY,cAAc,OAAO,UAAU,OAAO,GAAG;AAAA,IAC9D,OAAO,EAAE,QAAQ,cAAc,QAAQ,MAAM,OAAO,KAAK;AAAA,EAC3D;AAAA,EAKA,MAAM,SACJ,MAAM,QACL,MAAM,cAAc,WAAW,MAAM,UAAU,IAC5C,aAAa,MAAM,YAAY,OAAO,IACtC;AAAA,EACN,MAAM,WAAW;AAAA,IACf,MAAM;AAAA,IACN,MAAM,MAAM,cAAc,GAAG,IAAI,OAAO,QAAQ,MAAM;AAAA,IACtD;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,aAAa;AAAA,MACX,GAAI,OAAO,UAAU,CAAC,IAAI,mBAAmB,OAAO,OAAO,QAAQ;AAAA,MACnE,GAAI,eACA,sBAAsB,aAAa,QAAQ,QAAQ,IACnD,CAAC;AAAA,IACP;AAAA,EACF;AAAA;AAcK,IAAM,iBAAiB,CAC5B,OACA,QACoB;AAAA,EACpB,QAAQ,WAAW,MAAM;AAAA,EACzB,MAAM,MAAM,WAAW,QAAQ,SAAS;AAAA,EAExC,MAAM,SAAS,eAAe,OAAO,GAAG;AAAA,EACxC,IAAI,OAAO,aAAa;AAAA,IACtB,OAAO,EAAE,aAAa,OAAO,aAAa,OAAO,CAAC,EAAE;AAAA,EACtD;AAAA,EAEA,QAAQ,SAAS;AAAA,EAKjB,IAAI,KAAK,QAAQ;AAAA,IACf,KAAK,QAAQ,SAAS;AAAA,EACxB;AAAA,EACA,IAAI,KAAK,SAAS;AAAA,IAChB,KAAK,IAAI,UAAU;AAAA,EACrB;AAAA,EAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,kBAAkB,OAAO,KAAK,KAAK,MAAM;AAAA,IAC3C,MAAM,IAAI;AAAA,IACV,QAAQ,IAAI,OAAO;AAAA,IACnB,UAAU,IAAI;AAAA,EAChB,CAAC;AAAA,EAID,MAAM,WAAW,MAAM,UAAU,QAAQ,MAAM,KAAK;AAAA,EACpD,QAAQ,SAAS,cAAc,aAAa,SAAS,QAAQ;AAAA,EAC7D,QAAQ,WAAW,IAAI;AAAA,EAEvB,MAAM,OAAO;AAAA,IACX;AAAA,IACA,MAAM,SAAS,EAAE,QAAQ,MAAM,MAAM,OAAO,MAAM,KAAK,KAAK,IAAI;AAAA,IAChE,YAAY,SAAS,WAAW;AAAA,IAChC,gBACE,WAAW,QAAQ,qBAAqB,QAAQ,IAAI;AAAA,IACtD,aAAa,KAAK,QAAQ,IAAI;AAAA,IAC9B,QAAQ,OAAO;AAAA,IACf,aAAa,KAAK;AAAA,IAClB,SAAS,MAAM;AAAA,IACf,SAAS,SAAS,GAAG,IAAI,OAAO,QAAQ,MAAM,QAAQ;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAI,GAAG,IAAI,OAAO,QAAQ,MAAM;AAAA,IAChC,UAAU,cAAc,KAAK;AAAA,IAC7B,cAAc,KAAK,gBAAgB,MAAM;AAAA,IACzC,OAAO,WAAW,KAAK;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,EAAE,MAAM,IAAI,OAAO,MAAM,KAAK,MAAM,IAAI;AAAA,IAChD,YAAY,MAAM;AAAA,IAClB,OAAO,YAAY,MAAM,UAAU,OAAO;AAAA,IAC1C,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AAAA,EAOA,MAAM,QAAQ,QAAQ,IAAI,CAAC,YAAY;AAAA,OAClC;AAAA,IACH;AAAA,IACA,OAAO,aACL,IAAI,YAAY,IAChB,eAAe,cAAc,QAAQ,IAAI,IAAI,CAC/C;AAAA,EACF,EAAE;AAAA,EAEF,OAAO;AAAA,IACL,aACE,WAAW,QACP,uBAAuB,OAAO,cAAc,IAAI,OAAO,IAAI,IAC3D,CAAC;AAAA,IACP;AAAA,EACF;AAAA;;;AJzpCF,IAAM,qBAAqB,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AAelD,IAAM,oBACJ;AAGF,IAAM,oBACJ;AAMK,IAAM,uBAAuB,CAAC,SACnC,KAAK,SAAS,UAAU;AAI1B,IAAM,gBAAgB;AAItB,IAAM,oBAAmB;AAGzB,IAAM,qBAAqB;AAAA,EACzB,IAAI,EAAE,OAAO,OAAO,MAAM,OAAO;AAAA,EACjC,KAAK,EAAE,OAAO,OAAO,MAAM,MAAM;AACnC;AAQA,IAAM,sBAAsB,CAC1B,MACA,YACA,cACY;AAAA,EACZ,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,UAAS;AAAA,IACP,MAAM,SAAS,SAAS,WAAW,QAAQ,WAAW;AAAA,IACtD,MAAM,QAAQ,KAAK,QAAQ,QAAQ,MAAM;AAAA,IACzC,IAAI,UAAU,IAAI;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,SAAS,CAAC;AAAA,IACV,SAAS,QAAQ,OAAO;AAAA,EAC1B;AAAA;AAsBK,IAAM,wBAAwB,CACnC,SAC4B;AAAA,EAC5B,MAAM,QAAQ,kBAAkB,KAAK,IAAI;AAAA,EACzC,IAAI,CAAC,OAAO,QAAQ;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,aAAgC,CAAC;AAAA,EACvC,WAAW,SAAS,MAAM,OAAO,SAAS,IAAI,SAAS,iBAAiB,GAAG;AAAA,IACzE,MAAM,OAAO,KAAK,QAAQ;AAAA,IAC1B,MAAM,QAAQ,KAAK,QAAQ,UAAU,KAAK,QAAQ;AAAA,IAClD,IAAI,SAAS,UAAU,OAAO;AAAA,MAC5B,WAAW,OAAO;AAAA,IACpB;AAAA,IACA,IAAI,SAAS,UAAU,OAAO;AAAA,MAC5B,WAAW,OAAO;AAAA,IACpB;AAAA,EACF;AAAA,EACA,OAAO,EAAE,YAAY,QAAQ,MAAM,OAAO,UAAU,GAAG;AAAA;AASlD,IAAM,mBAAmB,CAAC,SAC/B,cAAc,KAAK,IAAI,IAAI,OAAO,sBAAsB,KAAK,KAAK,CAAC;AAwCrE,IAAM,kBACJ;AAEF,IAAM,eAAe,CACnB,MACA,SACA,MACA,MACA,gBACgB,EAAE,MAAM,MAAM,MAAM,SAAS,UAAU,SAAS,WAAW;AAO7E,IAAM,cAAc,CAAC,MAAc,SAA0B;AAAA,EAC3D,MAAM,MAAM,SAAS,MAAM,IAAI;AAAA,EAC/B,OAAO,QAAQ,QAAQ,IAAI,WAAW,KAAK;AAAA;AAY7C,IAAM,qBAAqB,CACzB,QACA,UACA,KACA,SAC6C;AAAA,EAC7C,IAAI,OAAO,WAAW,GAAG,GAAG;AAAA,IAC1B,IAAI,CAAC,IAAI,aAAa;AAAA,MACpB,OAAO;AAAA,QACL,OAAO,aACL,8BACA,kBAAkB,oEAClB,UACA,MACA,oDACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,QAAO,KAAK,IAAI,aAAa,MAAM;AAAA,IACzC,IAAI,YAAY,IAAI,aAAa,KAAI,GAAG;AAAA,MACtC,OAAO;AAAA,QACL,OAAO,aACL,8BACA,kBAAkB,6CAClB,UACA,MACA,sFACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAK;AAAA,EAChB;AAAA,EACA,MAAM,OAAO,QAAQ,QAAQ,QAAQ,GAAG,MAAM;AAAA,EAC9C,IAAI,IAAI,eAAe,YAAY,IAAI,aAAa,IAAI,GAAG;AAAA,IACzD,OAAO;AAAA,MACL,OAAO,aACL,8BACA,kBAAkB,6CAClB,UACA,MACA,oGACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,KAAK;AAAA;AAUhB,IAAM,kBAAkB,CACtB,MACA,SACA,UACW;AAAA,EACX,MAAM,SAAS,KAAK,WAAW,aAAa,CAAC,SAC3C,IAAI,OAAO,KAAK,MAAM,CACxB;AAAA,EACA,IAAI,MAAM;AAAA,EACV,IAAI,SAAS;AAAA,EACb,WAAW,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,IAC7C,MAAM,SAAS,MAAM,QAAQ,UAAU;AAAA,IAGvC,IACE,OAAO,WAAW,GAAG,KACrB,OAAO,WAAW,GAAG,KACrB,IAAI,SAAS,MAAM,GACnB;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,UAAU,SAAS,OAAO,QAAQ,SAAS,MAAM,CAAC;AAAA,IACxD,MAAM,MAAM,QAAQ,WAAW,GAAG,IAAI,UAAU,KAAK;AAAA,IACrD,MAAM,UACH,MAAM,SAAS,KAChB,eAAe,MAAM,IAAI,QAAQ,MAAM,QAAQ,KAAK;AAAA,IACtD,OAAO,KAAK,MAAM,QAAQ,MAAM,IAAI;AAAA,IACpC,SAAS,SAAS,OAAO;AAAA,EAC3B;AAAA,EACA,OAAO,MAAM,KAAK,MAAM,MAAM;AAAA;AAIhC,IAAM,eAAe,CACnB,OACA,SACA,UACa;AAAA,EACb,IAAI,YAAY,OAAO;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,QAAoB;AAAA,EACxB,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IACzB,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,IACvC,MAAM,UAAU,UAAU,QAAQ,SAAS;AAAA,IAC3C,QAAQ;AAAA,IACR,OAAO,UAAU,OAAO,gBAAgB,MAAM,SAAS,KAAK;AAAA,GAC7D;AAAA;AAKH,IAAM,iBAAiB,CACrB,SACA,MACA,eACa;AAAA,EACb,MAAM,OAAO,QAAQ,QAAQ,QAAQ,EAAE;AAAA,EACvC,IAAI,aAAa;AAAA,EACjB,WAAW,OAAO,KAAK,MAAM,MAAM,KAAK,CAAC,GAAG;AAAA,IAC1C,aAAa,KAAK,IAAI,YAAY,IAAI,MAAM;AAAA,EAC9C;AAAA,EACA,MAAM,QAAQ,IAAI,OAAO,KAAK,IAAI,GAAG,aAAa,CAAC,CAAC;AAAA,EACpD,MAAM,MAAM,SAAQ,IAAI;AAAA,EACxB,MAAM,OAAO,WAAW,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI;AAAA,EACtD,MAAM,OAAO,WAAW,OAAO,IAAI,WAAW,SAAS;AAAA,EACvD,OAAO,CAAC,GAAG,QAAQ,OAAO,QAAQ,GAAG,KAAK,MAAM;AAAA,CAAI,GAAG,KAAK;AAAA;AAc9D,IAAM,kBAAkB,OACtB,WACA,UACA,MACA,KACA,UACmD;AAAA,EACnD,MAAM,WAAW,mBAAmB,UAAU,QAAQ,UAAU,KAAK,IAAI;AAAA,EACzE,IAAI,WAAW,UAAU;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,SAAS;AAAA,EACjB,IAAI,MAAM,SAAS,IAAI,GAAG;AAAA,IACxB,OAAO;AAAA,MACL,OAAO,aACL,uBACA,qBAAqB,CAAC,GAAG,OAAO,IAAI,EACjC,IAAI,CAAC,UAAU,SAAS,IAAI,eAAe,QAAQ,IAAI,GAAG,KAAK,CAAC,EAChE,KAAK,MAAM,MACd,UACA,MACA,oDACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAS,MAAM,OAAO;AAAA,IACtC,OAAO,OAAO;AAAA,IACd,OAAO;AAAA,MACL,OAAO,aACL,2BACA,kBAAkB,UAAU,mCAAmC,UAC7D,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,MAEvD,UACA,MACA,eACF;AAAA,IACF;AAAA;AAAA,EAEF,IAAI,SAAS,IAAI,IAAI;AAAA,EAErB,MAAM,YACJ,CAAC,UAAU,WAAW,QACtB,mBAAmB,IAAI,SAAQ,IAAI,EAAE,YAAY,CAAC;AAAA,EACpD,IAAI,CAAC,WAAW;AAAA,IACd,MAAM,SAAQ,eAAe,SAAS,MAAM,UAAU,UAAU;AAAA,IAGhE,OAAO;AAAA,MACL;AAAA,MACA,SAAS,OAAM,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,oBAAO,OAAO;AAAA,EAC7B,MAAM,OAAO,OAAO;AAAA,EACpB,MAAM,iBAAiB,KAAK,IAC1B,GACA,QAAQ,MAAM;AAAA,CAAI,EAAE,SAAS,KAAK,MAAM;AAAA,CAAI,EAAE,MAChD;AAAA,EAIA,MAAM,WAAW,MAAM,YAAY,MAAM,MAAM,gBAAgB,KAAK;AAAA,IAClE,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EAID,MAAM,QAAQ,CAAC,GAAG,SAAS,KAAK;AAAA,EAChC,MAAM,UAAU,CAAC,GAAG,SAAS,OAAO;AAAA,EACpC,OAAO,MAAM,GAAG,EAAE,GAAG,KAAK,MAAM,IAAI;AAAA,IAClC,MAAM,IAAI;AAAA,IACV,QAAQ,IAAI;AAAA,EACd;AAAA,EACA,OAAO,MAAM,IAAI,KAAK,MAAM,IAAI;AAAA,IAC9B,MAAM,MAAM;AAAA,IACZ,QAAQ,MAAM;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,OAAO,aAAa,OAAO,QAAQ,IAAI,GAAG,QAAQ,QAAQ,CAAC;AAAA,IAC3D;AAAA,EACF;AAAA;AAUF,IAAM,cAAc,OAClB,MACA,UACA,YACA,KACA,UAC2B;AAAA,EAC3B,MAAM,cAAc,KAAK,MAAM;AAAA,CAAI;AAAA,EACnC,MAAM,QAAQ,SAAQ,QAAQ,EAAE,YAAY,MAAM;AAAA,EAClD,MAAM,aAAa,mBAAmB,QAAQ,QAAQ;AAAA,EAOtD,IAAI,QAAoB;AAAA,EACxB,IAAI,YAAY;AAAA,EAChB,MAAM,aAAa,YAAY,IAAI,CAAC,MAAM,UAAU;AAAA,IAClD,IAAI,WAAW;AAAA,MACb,YAAY,oBAAoB,MAAM,YAAY,IAAI;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IACA,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,IACvC,MAAM,UAAU,UAAU,QAAQ,SAAS;AAAA,IAC3C,QAAQ;AAAA,IACR,IAAI,SAAS;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IACA,YAAY,oBAAoB,MAAM,YAAY,KAAK;AAAA,IACvD,IAAI,aAAa,CAAC,qBAAqB,IAAI,GAAG;AAAA,MAC5C,OAAO;AAAA,IACT;AAAA,IACA,MAAM,YAAY,QACd,sBAAsB,KAAK,KAAK,CAAC,IACjC,iBAAiB,IAAI;AAAA,IAGzB,IACE,aACA,CAAC,SACD,kBAAiB,KAAK,YAAY,QAAQ,MAAM,EAAE,GAClD;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EAID,MAAM,aAAa,MAAM,QAAQ,IAC/B,WAAW,IAAI,CAAC,WAAW,UACzB,YACI,gBACE,WACA,UACA,aAAa,QAAQ,GACrB,KACA,KACF,IACA,IACN,CACF;AAAA,EAIA,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,UAAwB,CAAC;AAAA,EAC/B,YAAY,OAAO,SAAS,YAAY,QAAQ,GAAG;AAAA,IACjD,MAAM,UAAU,aAAa,QAAQ;AAAA,IACrC,MAAM,WAAW,WAAW;AAAA,IAC5B,IAAI,CAAC,YAAY,WAAW,UAAU;AAAA,MACpC,IAAI,UAAU;AAAA,QACZ,IAAI,OAAO,KAAK,SAAS,KAAK;AAAA,MAChC;AAAA,MACA,MAAM,KAAK,IAAI;AAAA,MACf,QAAQ,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,IACA,MAAM,MAAM,MAAY;AAAA,MACtB,MAAM,KAAK,EAAE;AAAA,MACb,QAAQ,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ,CAAC;AAAA;AAAA,IAEhD,IAAI,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG;AAAA,MACxB,IAAI;AAAA,IACN;AAAA,IACA,MAAM,KAAK,GAAG,SAAS,KAAK;AAAA,IAC5B,QAAQ,KAAK,GAAG,SAAS,OAAO;AAAA,IAChC,IAAI,YAAY,QAAQ,IAAI,KAAK,GAAG;AAAA,MAClC,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,OAAO,EAAE,OAAO,QAAQ;AAAA;AAUnB,IAAM,iBAAiB,OAC5B,MACA,YAQ8B;AAAA,EAC9B,MAAM,MAAqB;AAAA,IACzB,aAAa,QAAQ;AAAA,IACrB,QAAQ,CAAC;AAAA,IACT,UAAU,IAAI;AAAA,EAChB;AAAA,EACA,QAAQ,OAAO,YAAY,MAAM,YAC/B,MACA,QAAQ,YACR,QAAQ,cAAc,GACtB,KACA,CAAC,QAAQ,UAAU,CACrB;AAAA,EACA,OAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,UAAU,CAAC,GAAG,IAAI,QAAQ;AAAA,IAC1B;AAAA,IACA,MAAM,MAAM,KAAK;AAAA,CAAI;AAAA,EACvB;AAAA;AAwCK,IAAM,oBAAoB,CAC/B,UACG;AAAA,EACH,MAAM,QAAkC,CAAC;AAAA,EACzC,WAAW,QAAQ,OAAO;AAAA,IACxB,QAAQ,eAAe;AAAA,IACvB,IAAI,CAAC,YAAY;AAAA,MACf;AAAA,IACF;AAAA,IACA,WAAW,WAAW,KAAK,YAAY,CAAC,GAAG;AAAA,MACzC,MAAM,YAAY,MAAM,YAAY,CAAC;AAAA,MACrC,MAAM,WAAW;AAAA,MACjB,IAAI,CAAC,UAAU,SAAS,UAAU,GAAG;AAAA,QACnC,UAAU,KAAK,UAAU;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;AMnnBT;AAEA,qBAAS;AAiBT,IAAM,oBAAoB,IAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,SAAS,MACb,OAAO,YACL,OAAO,QAAQ,QAAQ,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAC3E;AAGK,IAAM,4BAA4B,CACvC,UACyB;AAAA,EACzB,IAAI,UAAU,OAAO;AAAA,IACnB,OAAO,EAAE,SAAS,OAAO,QAAQ,MAAM;AAAA,EACzC;AAAA,EACA,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO,EAAE,SAAS,MAAM,QAAQ,MAAM;AAAA,EACxC;AAAA,EACA,OAAO,EAAE,SAAS,MAAM,QAAQ,MAAM,KAAK;AAAA;AAStC,IAAM,cAAc,CAAC,WAAwC;AAAA,EAClE,MAAM,QAAQ,IAAI;AAAA,EAClB,IAAI,UAAyB;AAAA,EAC7B,WAAW,QAAQ,OAAO,MAAM;AAAA,CAAI,GAAG;AAAA,IACrC,IAAI,KAAK,WAAW,MAAI,GAAG;AAAA,MACzB,UAAU,KAAK,MAAM,CAAC;AAAA,IACxB,EAAO,SAAI,QAAQ,WAAW,CAAC,MAAM,IAAI,IAAI,GAAG;AAAA,MAC9C,MAAM,IAAI,MAAM,OAAO;AAAA,IACzB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AASF,IAAM,oBAAoB,CAAC,SAAgC;AAAA,EAChE,IAAI;AAAA,IACF,OAAO,aAEL,OACA,CAAC,MAAM,MAAM,aAAa,iBAAiB,GAE3C,EAAE,UAAU,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAC1E,EAAE,KAAK;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAaJ,IAAM,uBAAuB,CAClC,MACA,cACA,aACA,mBACwB;AAAA,EAMxB,IAAI,YAAY,WAAW,KAAK,aAAa,WAAW,GAAG;AAAA,IACzD,OAAO,IAAI;AAAA,EACb;AAAA,EAGA,MAAM,UACJ,mBAAmB,YAAY,kBAAkB,IAAI,IAAI;AAAA,EAC3D,IAAI,YAAY,MAAM;AAAA,IACpB,OAAO,IAAI;AAAA,EACb;AAAA,EACA,IAAI;AAAA,IACF,MAAM,SAAS,aAEb,OACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,GACA,EAAE,UAAU,SAAS,KAAK,OAAO,GAAG,WAAW,MAAM,OAAO,KAAK,CACnE;AAAA,IACA,MAAM,aAAa,YAAY,MAAM;AAAA,IACrC,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,cAAc,aAAa;AAAA,MACpC,MAAM,MAAM,WAAW,IAAI,UAAS,SAAS,UAAU,CAAC;AAAA,MACxD,IAAI,KAAK;AAAA,QACP,OAAO,IAAI,YAAY,GAAG;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO,IAAI;AAAA;AAAA;AASR,IAAM,yBAAyB,CAAC,SAA0B;AAAA,EAC/D,IAAI;AAAA,IACF,OACE,aAEE,OACA,CAAC,MAAM,MAAM,aAAa,yBAAyB,GAEnD;AAAA,MACE,UAAU;AAAA,MACV,KAAK,OAAO;AAAA,MACZ,OAAO,CAAC,UAAU,QAAQ,QAAQ;AAAA,IACpC,CACF,EAAE,KAAK,MAAM;AAAA,IAEf,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAYJ,IAAM,6BAA6B,CACxC,MACA,iBACiB;AAAA,EACjB,IAAI,iBAAiB,KAAK,CAAC,uBAAuB,IAAI,GAAG;AAAA,IACvD,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS,sEAAsE;AAAA,MAC/E,UAAU;AAAA,MACV,YACE;AAAA,IACJ;AAAA,EACF;AAAA;;;AClMF,8BAAmB,sBAAS;AAC5B;AASA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACF;AAWA,IAAM,gBAAgB,CACpB,QAEA,OAAO,QAAQ;AAGjB,IAAM,cAAc,OAAO,QACzB,cAAc,GAAG,IAAI,MAAM,IAAI,IAAI;AAgBrC,IAAM,aAAa,CAAC,QAA4B,QAAwB;AAAA,EACtE,MAAM,QAAQ,SAAS,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/C,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,OAAO,MAAM,GAAG,SAAS,QAAQ;AAAA;AAwB5B,IAAM,qBAAqB,OAChC,SACA,UAGI,CAAC,MAKD;AAAA,EACJ,MAAM,OAA2B,MAAM,QAAQ,OAAO,IAClD,UACA,CAAC,EAAE,MAAM,QAAQ,CAAC;AAAA,EACtB,MAAM,aAAa,IAAI,IAAI,QAAQ,UAAU;AAAA,EAC7C,MAAM,cAAc,IAAI,IAAI,QAAQ,WAAW;AAAA,EAE/C,MAAM,QAAO,mBAAmB;AAAA,EAChC,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,cAA4B,CAAC;AAAA,EAInC,MAAM,YAAY,MAAM,QAAQ,IAC9B,KAAK,IAAI,OAAO,WAAW;AAAA,IACzB,MAAM,QAAQ,MAAM,KAAK,YAAY;AAAA,MACnC,UAAU;AAAA,MACV,KAAK,OAAO;AAAA,MAGZ,QAAQ,CAAC,sBAAsB,gBAAgB,YAAY;AAAA,MAC3D,WAAW;AAAA,IACb,CAAC;AAAA,IACD,MAAM,SAAS,MAAM,QAAQ,IAC3B,MAAM,IACJ,OACE,SAIG;AAAA,MACH,IAAI;AAAA,QACF,OAAO;AAAA,UACL;AAAA,UACA,IAAI;AAAA,UACJ,OAAO,MAAM,YAAY,MAAM,MAAK,IAAI,CAAC;AAAA,QAC3C;AAAA,QACA,OAAO,OAAO;AAAA,QAGd,OAAO,EAAE,OAAuB,MAAM,IAAI,MAAM;AAAA;AAAA,KAGtD,CACF;AAAA,IACA,OAAO,EAAE,QAAQ,OAAO;AAAA,GACzB,CACH;AAAA,EAEA,aAAa,QAAQ,YAAY,WAAW;AAAA,IAC1C,WAAW,SAAS,QAAQ;AAAA,MAC1B,MAAM,MAAM,UAAS,OAAO,MAAM,SAAQ,MAAM,IAAI,CAAC;AAAA,MAIrD,OAAO,SAAS,QAAQ,IAAI,MAAM,GAAG;AAAA,MACrC,MAAM,UAAU,QAAQ,YAAY,IAAI,IAAI,IAAI,OAAO;AAAA,MACvD,MAAM,eAAe,UAAU,OAAO,CAAC,QAAQ,IAAI,GAAG,IAAI;AAAA,MAC1D,OAAO,eAAe,cAAc;AAAA,MACpC,MAAM,SAAS,cAAc,WAAW,IAAI,UAAU,IAAI,aAAa;AAAA,MACvE,MAAM,QAAQ,SAAS,aAAa,cACjC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACX,MAAM,MAAM,CAAC,SAAS,QAAQ,WAAW,OAAO,QAAQ,IAAI,CAAC,EAC1D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MAEX,IAAI,CAAC,MAAM,IAAI;AAAA,QACb,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,MAAM,MAAM;AAAA,UACZ,SAAS,6BAA6B,MAAM,MAAM;AAAA,UAClD,UAAU;AAAA,QACZ,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,iBAAiB,UAAU,MAAM,KAAK;AAAA,MACrD,IAAI,OAAO,SAAS;AAAA,QAClB,MAAM,SAAS,SAAS,MAAM,IAAI,EAAE,WAAW,SAAS,IACpD,SACA;AAAA,QACJ,OAAO,IAAI,KAAK,OAAO,IAAI;AAAA,MAC7B,EAAO;AAAA,QACL,YAAY,KACV,GAAG,mBAAmB,OAAO,OAAO;AAAA,UAClC,MAAM;AAAA,UACN,MAAM,MAAM;AAAA,QACd,CAAC,CACH;AAAA;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,aAAa,MAAM,OAAO;AAAA;;;AC1LrC,uBAAS,qBAAY,kBAAM;;;ACA3B;AACA,4BAAgB;AAEhB,iBAAS;AAaF,IAAM,WAAW,CAAC,SACvB,WAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAGtD,IAAM,gBAAgB,CAAC,YAC5B,SACE,QACG,IAAI,CAAC,UAAU,GAAG,MAAM,OAAO,MAAM,QAAQ,SAAS,MAAM,KAAK,IAAI,GAAG,EACxE,KAAK,GAAG,CACb;AAaK,IAAM,eACX,CACE,OACA,iBACA,SAEF,CAAC,aAAa;AAAA,EACZ,IAAI,OAAO;AAAA,EACX,IAAI,MAAM;AAAA,IACR,MAAM,eAAe,YAA2B;AAAA,MAC9C,IAAI;AAAA,QACF,QAAQ,YAAY,MAAM,KAAK;AAAA,QAC/B,SAAS,cAAc,OAAO;AAAA,QAC9B,MAAM;AAAA;AAAA,IAIL,aAAa;AAAA,EACpB;AAAA,EACA,MAAM,OAAO,YAA2B;AAAA,IACtC,IAAI;AAAA,MACF,QAAQ,YAAY,MAAM,MAAK;AAAA,MAC/B,MAAM,OAAO,cAAc,OAAO;AAAA,MAClC,IAAI,QAAQ,SAAS,MAAM;AAAA,QACzB,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP,MAAM;AAAA;AAAA,EAIV,MAAM,QAAQ,YAAY,MAAM;AAAA,IACzB,KAAK;AAAA,KACT,kBAAkB,IAAI;AAAA,EACzB,OAAO,MAAM,cAAc,KAAK;AAAA;AAU7B,IAAM,gBAAgB,CAAC,aAAoC;AAAA,EAChE,MAAM,OAAO,MAAK,UAAU,cAAc;AAAA,EAC1C,OAAO;AAAA,IACL,MAAM,YAAY;AAAA,MAChB,IAAI;AAAA,QAIF,OAAO,KAAK,MAAM,MAAM,UAAS,MAAM,OAAO,CAAC;AAAA,QAC/C,MAAM;AAAA,QACN,OAAO,CAAC;AAAA;AAAA;AAAA,IAGZ,OAAO,OAAO,YAAY;AAAA,MACxB,IAAI;AAAA,QACF,MAAM,MAAM,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,QACzC,MAAM,UAAU,MAAM,GAAG,KAAK,UAAU,OAAO;AAAA,GAAO,OAAO;AAAA,QAC7D,MAAM;AAAA;AAAA,EAIZ;AAAA;AASK,IAAM,gBAAgB,OAC3B,MACA,OACA,cACA,UAAU,SACoB;AAAA,EAC9B,IAAI,CAAC,SAAS;AAAA,IACZ,MAAM,SAAS,MAAM,MAAM,KAAK;AAAA,IAChC,IAAI,OAAO,SAAS,GAAG;AAAA,MACrB,OAAO,EAAE,aAAa,CAAC,GAAG,SAAS,OAAO;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,MAAM,UAAU,MAAM,aAAa;AAAA,IACnC,MAAM,MAAM,MAAM,OAAO;AAAA,IACzB,OAAO,EAAE,aAAa,CAAC,GAAG,QAAQ;AAAA,IAClC,OAAO,OAAO;AAAA,IACd,MAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAClC,IAAI,SAAS,SAAS,GAAG;AAAA,MAGvB,MAAM,aAAyB;AAAA,QAC7B,MAAM;AAAA,QACN,SAAS,WAAW,+BAAgC,MAAgB,oBAAoB,SAAS;AAAA,QACjG,UAAU;AAAA,MACZ;AAAA,MACA,OAAO,EAAE,aAAa,CAAC,UAAU,GAAG,SAAS,SAAS;AAAA,IACxD;AAAA,IAEA,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,WAAW,mDAAoD,MAAgB;AAAA,MACxF,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA;;;ACrHE,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKA,IAAM,WAAW;AAGjB,IAAM,gBAAgB;AAEtB,IAAM,mBAAmB;AAWzB,IAAM,kBAAkB,CAAC,eACvB,WACG,QAAQ,eAAe,sBAAsB,EAC7C,QAAQ,kBAAkB,oBAAoB;AAG5C,IAAM,eAAe,CAC1B,QACA,MACA,gBACW;AAAA,EACX,MAAM,SAAS,cAAc,QAAQ,gBAAgB,WAAW,CAAC,IAAI;AAAA,EACrE,OAAO,UAAU,QAAQ,GAAG,UAAU,MAAM;AAAA;AAmFvC,IAAM,SAAS,CACpB,OACA,WAEA,OAAO,OAAO,OAAO,MAAM,IAAI,MAAM,UAAU;AAG1C,IAAM,cAAc,CACzB,MACA,OAEA,OAAO,OAAO,KAAK,YAAY,EAAE,IAAI,KAAK,WAAW,MAAM;AAetD,IAAM,gBAAgB,CAAC,SAAqC;AAAA,EACjE,MAAM,YAAsB,CAAC;AAAA,EAC7B,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,IAAI,KAAK,UAAU;AAAA,MACjB,UAAU,KAAK,KAAK,QAAQ;AAAA,IAC9B;AAAA,IACA,OAAO,EAAE,WAAW,OAAO,WAAW;AAAA,EACxC;AAAA,EACA,IAAI,KAAK,SAAS,YAAY;AAAA,IAG5B,MAAM,UAAW,KAAK,SAA8B,WAAW,CAAC;AAAA,IAChE,WAAW,UAAU,OAAO,OAAO,OAAO,GAAG;AAAA,MAC3C,IAAI,QAAQ,MAAM;AAAA,QAChB,UAAU,KACR,GAAG,OAAO,WAAW,GAAG,OAAO,gBAAgB,KAAK,OAAO,OAAO,OAAO,YAAY,IACvF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAW,OAAO,UAAU;AAAA,EACvC;AAAA,EAMA,MAAM,WAAY,KAAK,SAA8C;AAAA,EACrE,WAAW,UAAU,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,GAAG;AAAA,IAC5D,IAAI,OAAO,KAAK;AAAA,MACd,UAAU,KAAK,OAAO,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,OAAO,EAAE,WAAW,OAAO,WAAW;AAAA;AAMxC,IAAM,cAAc,CAClB,UAC6B,OAAO,UAAU,YAAY,UAAU;AAGtE,IAAM,aAAa,CAAC,QAClB,OAAO,IAAI,SAAS;AAWf,IAAM,aAAa,MAAkC;AAAA,EAC1D,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,QAAQ,IAAI;AAAA,EAClB,OAAO,CAAC,SAAS;AAAA,IACf,MAAM,WAAW,SAAS,IAAI,IAAI;AAAA,IAClC,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,MAAM,OAAO,QAAQ,IAAI,KAAK;AAAA,IAC9B,IAAI,OAAO;AAAA,IACX,SAAS,SAAS,EAAG,MAAM,IAAI,IAAI,GAAG,UAAU,GAAG;AAAA,MACjD,OAAO,GAAG,QAAQ;AAAA,IACpB;AAAA,IACA,MAAM,IAAI,IAAI;AAAA,IACd,SAAS,IAAI,MAAM,IAAI;AAAA,IACvB,OAAO;AAAA;AAAA;AAiCJ,IAAM,qBAAqB,CAChC,WACA,YACuB;AAAA,EACvB,MAAM,aAAgC,CAAC;AAAA,EACvC,MAAM,WAAqB,CAAC;AAAA,EAC5B,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,aAAa,WAAW;AAAA,EAE9B,MAAM,MAAM,CAAC,UAAoC;AAAA,IAC/C,MAAM,UAAU,WAAW,MAAM,GAAG;AAAA,IACpC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,GAAG;AAAA,MAC5B,SAAS,IAAI,MAAM,GAAG;AAAA,MACtB,SAAS,KAAK,MAAM,GAAG;AAAA,IACzB;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,OAAO,KAAK,IAAI,GAAG,GAAG;AAAA,MACpB,MAAM,GAAG,OAAO,MAAM;AAAA,IACxB;AAAA,IACA,KAAK,IAAI,GAAG;AAAA,IACZ,WAAW,KAAK;AAAA,SACX;AAAA,MACH;AAAA,MAEA,OAAO,GAAG,cAAc,MAAM,KAAK,aAAa,WAAW;AAAA,MAC3D;AAAA,IACF,CAAC;AAAA;AAAA,EAGH,MAAM,SAAS,OAA4B;AAAA,IACzC;AAAA,IACA,MAAM,SAAS,IAAI,CAAC,UAAU;AAAA,MAC5B,aAAa,QAAQ,IAAI,IAAI,KAAK;AAAA,MAClC;AAAA,MAGA,MAAM,WAAW,IAAI;AAAA,IACvB,EAAE;AAAA,EACJ;AAAA,EAEA,OAAO,EAAE,KAAK,OAAO;AAAA;AAShB,IAAM,oBAAoB,CAC/B,UACA,cACwB;AAAA,EACxB,MAAM,WAAqB,CAAC;AAAA,EAC5B,MAAM,UAAU,IAAI,KACjB,SAAS,QAAQ,CAAC,GAChB,OAAO,UAAU,EACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,IAAI,eAAe,EAAE,CAAC,CACnD;AAAA,EACA,MAAM,YAAY,mBAAmB,WAAW,OAAO;AAAA,EAEvD,YAAY,MAAM,SAAS,OAAO,QAAQ,SAAS,SAAS,CAAC,CAAC,GAAG;AAAA,IAE/D,IAAI,CAAC,MAAM;AAAA,MACT;AAAA,IACF;AAAA,IACA,IAAI,UAAU,MAAM;AAAA,MAClB,SAAS,KACP,SAAS,mLACX;AAAA,MACA;AAAA,IACF;AAAA,IACA,WAAW,UAAU,cAAc;AAAA,MACjC,MAAM,YAAY,KAAK;AAAA,MACvB,IAAI,CAAC,YAAY,SAAS,GAAG;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,UAAU,IAAI;AAAA,QACZ,YAAY,UAAU,cAAc;AAAA,QACpC,aAAa,UAAU,eAAe;AAAA,QACtC,KAAK,aAAa,QAAQ,MAAM,UAAU,WAAW;AAAA,QACrD;AAAA,QACA,aAAa,UAAU;AAAA,QACvB;AAAA,QACA,SAAS,UAAU,WAAW;AAAA,QAC9B,KAAK,UAAU,OAAO,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,UAAU,OAAO,GAAG,SAAS;AAAA;;;ACtWpC,IAAM,mBAAmB,CAAC,QAAQ,SAAS;AAiFlD,IAAM,kBAAkB,CAAC,UACvB,MAAM,WAAW,MAAM,GAAG,EAAE,WAAW,MAAM,GAAG;AAElD,IAAM,cAAc;AAEpB,IAAM,WAAW,CAAC,UAChB,OAAO,UAAU;AAGZ,IAAM,cAAc,CAAC,YAAkD;AAAA,EAC5E,MAAM,KAAK,YAAY,KAAK,SAAS,QAAQ,EAAE,GAAG,QAAQ;AAAA,EAC1D,OAAO,OAAO,YAAY,YAAY,gBAAgB,EAAE;AAAA;AAQnD,IAAM,iBAAiB,CAC5B,WACA,YACW;AAAA,EACX,MAAM,UAAU,SAAS;AAAA,EACzB,OAAO,SAAS,OAAO,KAAK,YAAY,KAAK,UAAU;AAAA;AAGzD,IAAM,WAAW,CACf,UAEA,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAErE,IAAM,wBACJ;AASF,IAAM,sBAAsB,CAAC,aAAqC;AAAA,EAChE,MAAM,OAAkE;AAAA,IACtE,CAAC,SAAS,UAAU,UAAU;AAAA,IAC9B,CAAC,SAAS,YAAY,YAAY;AAAA,EACpC;AAAA,EACA,YAAY,KAAK,YAAY,MAAM;AAAA,IACjC,IAAI,CAAC,SAAS,GAAG,GAAG;AAAA,MAClB;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,SAAS,aAAa;AAAA,IACpC,YAAY,IAAI,UAAU,OAAO,QAAQ,GAAG,GAAG;AAAA,MAC7C,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,MAAM,IAAI,GAAG;AAAA,QAC7C;AAAA,MACF;AAAA,MACA,MAAM,SAAS,sBAAsB,KAAK,MAAM,IAAI,GAAG;AAAA,MACvD,IAAI,QAAQ,YAAY,SAAS;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,MAAM,WAAW,SAAS,KAAK,IAC3B,MAAM,gBAAgB,OAAO,QAAQ,EAAE,KACvC;AAAA,MAIJ,IAAI,SAAS,QAAQ,KAAK,CAAC,SAAS,SAAS,IAAI,GAAG;AAAA,QAClD,IAAI,MAAM,KAAK,SAAS;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA;AAGF,IAAM,YACJ;AAUK,IAAM,sBAAsB,CACjC,aACqB;AAAA,EACrB,MAAM,eAAe,CACnB,UACkD;AAAA,IAClD,IAAI,CAAC,SAAS,KAAK,GAAG;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,CAAC,SAAS,MAAM,IAAI,GAAG;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,UAAU,KAAK,MAAM,IAAI,GAAG;AAAA,IAC3C,MAAM,UAAU,QAAQ,UACpB,SAAS,aAAa,OAAO,WAC7B;AAAA,IACJ,MAAM,WAAW,UAAU,QAAQ,QAAQ;AAAA,IAC3C,OAAO,SAAS,QAAQ,IAAI,WAAW;AAAA;AAAA,EAGzC,MAAM,cAAc,CAAC,SAAkD;AAAA,IACrE,QAAQ,WAAW;AAAA,IACnB,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,OAAO,KAAK;AAAA,IACZ,MAAM,SAA4C,CAAC;AAAA,IACnD,WAAW,SAAS,QAAQ;AAAA,MAC1B,OAAO,OAAO,QAAQ,aAAa,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,MACjD,IAAI,EAAE,OAAO,OAAO;AAAA,QAClB,KAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA;AAAA,EAGF,WAAW,aAAa,OAAO,OAAO,SAAS,cAAc,CAAC,CAAC,GAAG;AAAA,IAChE,IAAI,SAAS,SAAS,GAAG;AAAA,MACvB,YAAY,SAAS;AAAA,IACvB;AAAA,EACF;AAAA,EACA,MAAM,cAAc;AAAA,IAClB,GAAG,OAAO,OAAO,SAAS,YAAY,CAAC,CAAC;AAAA,IAGxC,GAAG,OAAO,OAAO,SAAS,YAAY,YAAY,CAAC,CAAC;AAAA,EACtD;AAAA,EACA,MAAM,cAAc;AAAA,IAClB,GAAG,YAAY,IAAI,CAAC,YAClB,SAAS,OAAO,IAAI,QAAQ,WAAW,SACzC;AAAA,IACA,SAAS,YAAY;AAAA,EACvB;AAAA,EACA,WAAW,YAAY,aAAa;AAAA,IAClC,IAAI,CAAC,SAAS,QAAQ,GAAG;AAAA,MACvB;AAAA,IACF;AAAA,IACA,WAAW,WAAW,OAAO,OAAO,QAAQ,GAAG;AAAA,MAG7C,IAAI,SAAS,OAAO,KAAK,CAAC,SAAS,QAAQ,IAAI,GAAG;AAAA,QAChD,YAAY,OAAO;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAQF,IAAM,4BAA4B,CACvC,aACqB;AAAA,EACrB,oBAAoB,QAAQ;AAAA,EAC5B,OAAO,oBAAoB,QAAQ;AAAA;AAQrC,IAAM,gBAAgB,CACpB,IACA,WACA,aAC4E;AAAA,EAC5E,MAAM,SAAS,iBAAiB,KAAK,CAAC,MAAM,MAAM,UAAU,MAAM;AAAA,EAClE,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO,cAAc;AAAA,EACvB;AAAA,EACA,MAAM,YAAY,YAAY,UAAU,OAAO;AAAA,EAC/C,MAAM,UAAU,cAAc,YAAY,YAAY,SAAS;AAAA,EAG/D,IAAI,cAAc,aAAa,CAAC,SAAS,OAAO,KAAK,SAAS,QAAQ,IAAI,GAAG;AAAA,IAC3E,OAAO,cAAc;AAAA,EACvB;AAAA,EACA,OAAO,EAAE,QAAQ,SAAS,eAAe,WAAW,OAAO,GAAG,UAAU;AAAA;AAsBnE,IAAM,4BAA4B,CACvC,UACA,cAC6B;AAAA,EAC7B,MAAM,WAAqB,CAAC;AAAA,EAC5B,MAAM,UAAU,IAAI,KACjB,SAAS,MAAM,QAAQ,CAAC,GACtB,OACC,CAAC,QACC,OAAO,KAAK,SAAS,QACzB,EACC,IAAI,CAAC,QAA0B,CAAC,IAAI,MAAM,IAAI,eAAe,EAAE,CAAC,CACrE;AAAA,EACA,MAAM,YAAY,mBAAmB,WAAW,OAAO;AAAA,EACvD,MAAM,WAAW,SAAS,YAAY,CAAC;AAAA,EAEvC,YAAY,IAAI,cAAc,OAAO,QAAQ,SAAS,cAAc,CAAC,CAAC,GAAG;AAAA,IACvE,IAAI,CAAC,SAAS,SAAS,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,IAGA,IAAI,SAAS,UAAU,IAAI,GAAG;AAAA,MAC5B,SAAS,KACP,cAAc,sGAChB;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,OAAO,cAAc,IAAI,WAAW,QAAQ;AAAA,IAClD,IAAI,SAAS,IAAI,GAAG;AAAA,MAClB,SAAS,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAAA,IACA,QAAQ,QAAQ,SAAS,cAAc;AAAA,IACvC,MAAM,MAAM,UAAU,MAAM,KAC1B,CAAC,cACC,OAAO,WAAW,SAAS,QAC/B,GAAG;AAAA,IACH,UAAU,IAAI;AAAA,MACZ;AAAA,MACA,YAAY,UAAU,eAAe;AAAA,MACrC,aAAa,UAAU,eAAe;AAAA,MACtC,KAAK,aAAa,QAAQ,SAAS,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,MAAM;AAAA,MACN,SAAS,UAAU,SAAS,UAAU,WAAW;AAAA,MACjD,KAAK,OAAO;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,KAAK,UAAU,OAAO,GAAG,SAAS;AAAA;;;ACrVpC,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,IAAM,uBAAuB;AAAA,EAClC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,OAAO;AACT;AAyEO,IAAM,yBAAyB,CACpC,WAEA,wBAAwB,KAAK,CAAC,SAAS,SAAS,MAAM;AAGxD,IAAM,wBAAwB;AAAA,EAC5B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AACT;AASO,IAAM,mBAAmB,CAC9B,cACW;AAAA,EAGX,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,UAAU,uBAAuB,MAAM,IACzC,SACA,sBAAsB;AAAA,EAC1B,OAAO,GAAG,WAAW,UAAU;AAAA;AAMjC,IAAM,SAAS,CAAC,GAAmB,MACjC,EAAE,OAAO,EAAE,OAAO,KAAK;AAWlB,IAAM,2BAA2B,CACtC,UACA,cACwB;AAAA,EACxB,MAAM,YAAY,mBAAmB,WAAW,IAAI,GAAK;AAAA,EACzD,MAAM,YAAY,IAAI,IAAI,OAAO,OAAO,SAAS,KAAK,CAAC;AAAA,EAEvD,WAAW,QAAQ,yBAAyB;AAAA,IAC1C,MAAM,WAAW,SAAS,MAAM;AAAA,IAChC,MAAM,OAAO,aAAa,YAAY,YAAY,SAAS,MAAM;AAAA,IACjE,WAAW,SAAS,MAAM,UAAU,CAAC,GAAG;AAAA,MACtC,UAAU,IAAI;AAAA,QACZ,YAAY,MAAM,sBAAsB;AAAA,QACxC,aAAa,MAAM;AAAA,QAGnB,KAAK,aAAa,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,QAC9C,QAAQ;AAAA,QACR,aAAa,MAAM;AAAA,QACnB,MAAM,MAAM;AAAA,QACZ,SAAS;AAAA,QACT,KAAK,qBAAqB;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,WAAW,QAAQ,oBAAoB;AAAA,IACrC,MAAM,UAAU,OAAO,OAAO,SAAS,KAAK,EACzC,OACC,CAAC,SACC,KAAK,SAAS,QAAQ,EAAE,KAAK,WAAW,UAAU,IAAI,KAAK,IAAI,EACnE,EACC,SAAS,MAAM;AAAA,IAClB,WAAW,QAAQ,SAAS;AAAA,MAC1B,UAAU,IAAI;AAAA,QACZ,YAAY;AAAA,QACZ,aAAa,KAAK;AAAA,QAClB,KAAK,aAAa,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,QAC5C,QAAQ;AAAA,QACR,aAAa,KAAK;AAAA,QAClB,MAAM,KAAK;AAAA,QACX,SAAS;AAAA,QACT,KAAK,qBAAqB;AAAA,MAC5B,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,KAAK,UAAU,OAAO,GAAG,UAAU,CAAC,EAAE;AAAA;;;ACzN/C,kBAAS,oBAAO,wBAAU;AAC1B,uBAAS;AAGT;AACA,sBAAS;AACT;AACA,6BAAqB;;;ACMrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCA,IAAM,UAAU,CACd,UACoB;AAAA,EACpB,SAAS,OAAO,IAAI;AAAA,EACpB,MAAM,aAAa,IAAI,EAAE;AAC3B;AAQA,IAAM,iBAAiB,CACrB,UACuB;AAAA,EACvB,MAAM,UAAU,MAAM,SAAS;AAAA,EAC/B,OAAO,UAAU,MAAM,OAAO,IAAI;AAAA;AAGpC,IAAM,aAAa,CACjB,UACsB;AAAA,EACtB,MAAM,QAA2B;AAAA,IAC/B,aAAa,MAAM,eAAe;AAAA,IAClC,MAAM,MAAM;AAAA,IACZ,MAAM,QAAQ,MAAM,IAAI;AAAA,EAC1B;AAAA,EACA,MAAM,UAAU,eAAe,KAAK;AAAA,EACpC,IAAI,YAAY,WAAW;AAAA,IACzB,MAAM,UAAU;AAAA,EAClB;AAAA,EAGA,IACE,MAAM,sBAAsB,QAC5B,MAAM,sBAAsB,WAC5B;AAAA,IACA,MAAM,oBAAoB,MAAM;AAAA,EAClC;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,cAAc,CAAC,UAAsD;AAAA,EACzE,MAAM,QAAoB;AAAA,IACxB,MAAM,MAAM,KAAK,IAAI,UAAU;AAAA,IAC/B,aAAa,MAAM,eAAe;AAAA,IAClC,MAAM,MAAM;AAAA,IACZ,MAAM,QAAQ,MAAM,IAAI;AAAA,EAC1B;AAAA,EACA,IACE,MAAM,sBAAsB,QAC5B,MAAM,sBAAsB,WAC5B;AAAA,IACA,MAAM,oBAAoB,MAAM;AAAA,EAClC;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,aAAa,CAAC,SAClB,KAAK,UAAU,EAAE,IAAI,CAAC,UAAU;AAAA,EAC9B,MAAM,SAA2B;AAAA,IAC/B,aAAa,MAAM,eAAe;AAAA,IAClC,MAAM,MAAM;AAAA,EACd;AAAA,EACA,IACE,MAAM,sBAAsB,QAC5B,MAAM,sBAAsB,WAC5B;AAAA,IACA,OAAO,oBAAoB,MAAM;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,CACR;AAEH,IAAM,YAAY,CAChB,MACA,SACmB;AAAA,EACnB,MAAM,aAAa,KAAK,cAAc,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EACjE,MAAM,MAAsB;AAAA,IAC1B,aAAa,KAAK,eAAe;AAAA,IACjC,QAAQ,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,WAAW;AAAA,IACvD;AAAA,IACA,MAAM,KAAK;AAAA,EACb;AAAA,EACA,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,IAAI,aAAa;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,WAAW,CAAC,UAAkD;AAAA,EAClE,aAAa,KAAK,eAAe;AAAA,EACjC,aAAa,OAAO,OAAO,KAAK,UAAU,CAAC,EAAE,IAAI,UAAU;AAAA,EAC3D,MAAM;AAAA,EACN,MAAM,KAAK;AACb;AAEA,IAAM,WAAW,CAAC,UAA4C;AAAA,EAC5D,aAAa,KAAK,eAAe;AAAA,EACjC,MAAM;AAAA,EACN,MAAM,KAAK;AAAA,EACX,eAAe,KAAK,SAAS,EAAE,IAAI,CAAC,WAAW,OAAO,IAAI;AAC5D;AAEA,IAAM,YAAY,CAAC,SAA4C;AAAA,EAC7D,MAAM,MAAsB;AAAA,IAC1B,aAAa,KAAK,eAAe;AAAA,IACjC,MAAM;AAAA,IACN,MAAM,KAAK;AAAA,EACb;AAAA,EACA,IAAI,KAAK,mBAAmB,QAAQ,KAAK,mBAAmB,WAAW;AAAA,IACrE,IAAI,iBAAiB,KAAK;AAAA,EAC5B;AAAA,EACA,IAAI,sBAAsB,IAAI,GAAG;AAAA,IAC/B,IAAI,UAAU;AAAA,EAChB;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,UAAU,CACd,MACA,WACmB;AAAA,EACnB,IAAI,aAAa,IAAI,GAAG;AAAA,IACtB,OAAO,UAAU,MAAM,QAAQ;AAAA,EACjC;AAAA,EACA,IAAI,gBAAgB,IAAI,GAAG;AAAA,IACzB,MAAM,MAAM,UAAU,MAAM,WAAW;AAAA,IAGvC,MAAM,eAAe,OAClB,mBAAmB,IAAI,EACvB,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI;AAAA,IACtC,IAAI,aAAa,SAAS,GAAG;AAAA,MAC3B,IAAI,gBAAgB;AAAA,IACtB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,kBAAkB,IAAI,GAAG;AAAA,IAC3B,OAAO,SAAS,IAAI;AAAA,EACtB;AAAA,EACA,IAAI,WAAW,IAAI,GAAG;AAAA,IACpB,OAAO;AAAA,MACL,aAAa,KAAK,eAAe;AAAA,MACjC,YAAY,WAAW,IAAI;AAAA,MAC3B,MAAM;AAAA,MACN,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AAAA,EACA,IAAI,YAAY,IAAI,GAAG;AAAA,IACrB,OAAO,SAAS,IAAI;AAAA,EACtB;AAAA,EAGA,OAAO,UAAU,IAAyB;AAAA;AAI5C,IAAM,aAAa,CAAC,WAA2C;AAAA,EAC7D,MAAM,QAAwC,CAAC;AAAA,EAC/C,YAAY,MAAM,SAAS,OAAO,QAAQ,OAAO,WAAW,CAAC,GAAG;AAAA,IAE9D,IAAI,KAAK,WAAW,IAAI,GAAG;AAAA,MACzB;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,QAAQ,MAAM,MAAM;AAAA,EACpC;AAAA,EACA,MAAM,QAAkC,CAAC;AAAA,EACzC,MAAM,QAAQ,OAAO,aAAa;AAAA,EAClC,MAAM,WAAW,OAAO,gBAAgB;AAAA,EACxC,MAAM,eAAe,OAAO,oBAAoB;AAAA,EAChD,IAAI,OAAO;AAAA,IACT,MAAM,QAAQ,MAAM;AAAA,EACtB;AAAA,EACA,IAAI,UAAU;AAAA,IACZ,MAAM,WAAW,SAAS;AAAA,EAC5B;AAAA,EACA,IAAI,cAAc;AAAA,IAChB,MAAM,eAAe,aAAa;AAAA,EACpC;AAAA,EACA,OAAO;AAAA,IACL,MAAM,EAAE,aAAa,OAAO,eAAe,GAAG;AAAA,IAC9C;AAAA,IACA;AAAA,EACF;AAAA;AAUF,IAAM,eAAe,CACnB,UAEA,OAAO,UAAU,YAAY,UAAU,SAAQ,cAAc;AAG/D,IAAM,kBAAkB,CACtB,UAEA,OAAO,UAAU,YAAY,UAAU,SAAQ,UAAU;AAG3D,IAAM,kBAAkB,CAAQ,WAAsC;AAAA,EACpE,IAAI,aAAa,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,gBAAgB,MAAM,KAAK,aAAa,OAAO,IAAI,IACtD,OAAO,OACP;AAAA;AASC,IAAM,uBAAuB,CAAC,SAAkC;AAAA,EACrE,IAAI;AAAA,EACJ,IAAI,SAAS;AAAA,EACb,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,IAAI;AAAA,IACxB,MAAM;AAAA,IACN,SAAS;AAAA;AAAA,EAEX,IAAI,QAAQ;AAAA,IACV,MAAM,gBAAgB,gBAAgB,MAAM;AAAA,IAC5C,IAAI,CAAC,eAAe;AAAA,MAClB,MAAM,IAAI,MACR,8EACF;AAAA,IACF;AAAA,IAIA,OAAO,WACL,kBACE,aACF,CACF;AAAA,EACF;AAAA,EACA,OAAO,WAAW,YAAY,IAAI,CAAC;AAAA;;;ADrQrC,IAAM,WAAW;AAEjB,IAAM,mBAAmB;AACzB,IAAM,eAAe;AACrB,IAAM,kBAAkB;AAGxB,IAAM,oBAAoB;AAC1B,IAAM,YAAY;AAElB,IAAM,mBAAmB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AACpE,IAAM,aAAa;AACnB,IAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAAA;AAaO,MAAM,yBAAyB,MAAM;AAAA,EAC1C,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAqBA,IAAI,iBAAiB;AACrB,IAAM,wBAAwB,YAA2B;AAAA,EAGvD,IAAI,kBAAkB,CAAC,eAAe,KAAK,CAAC,SAAS,QAAQ,IAAI,KAAK,GAAG;AAAA,IACvE;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,QAAQ,mBAAmB,wBAAwB,MAAa;AAAA,IAChE,oBAAoB,IAAI,iBAAmB;AAAA,IAC3C,iBAAiB;AAAA,IACjB,MAAM;AAAA;AAWV,IAAM,eAAe,CAAC,aAA2C;AAAA,EAC/D,MAAM,SAAS,SAAS,QAAQ,IAAI,aAAa;AAAA,EACjD,IAAI,CAAC,QAAQ;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,UAAU,OAAO,MAAM;AAAA,EAC7B,IAAI,OAAO,SAAS,OAAO,GAAG;AAAA,IAC5B,OAAO,UAAU,IAAI,UAAU,YAAY;AAAA,EAC7C;AAAA,EACA,MAAM,QAAQ,KAAK,MAAM,MAAM,IAAI,KAAK,IAAI;AAAA,EAC5C,OAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,QAAQ;AAAA;AAQvD,IAAM,eAAe,OAAO,SAAmC;AAAA,EAC7D,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,MAAM;AAAA,MACjC,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,cAAc;AAAA,MAChB;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,YAAY,QAAQ,gBAAgB;AAAA,IAC9C,CAAC;AAAA,IACD,IAAI,SAAS,IAAI;AAAA,MACf,OAAO,EAAE,MAAM,MAAM,SAAS,KAAK,EAAE;AAAA,IACvC;AAAA,IACA,OAAO;AAAA,MACL,OAAO,IAAI,MAAM,GAAG,WAAW,SAAS,UAAU,SAAS,YAAY;AAAA,MACvE,YAAY,aAAa,QAAQ;AAAA,MACjC,WAAW,iBAAiB,IAAI,SAAS,MAAM;AAAA,IACjD;AAAA,IACA,OAAO,OAAO;AAAA,IAGd,OAAO;AAAA,MACL,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,MAC/D,WAAW;AAAA,IACb;AAAA;AAAA;AAaJ,IAAM,sBAAsB,CAC1B,OACA,eACwB;AAAA,EACxB,MAAM,UAA+B,IAAI,MAAM,MAAM,SAAS;AAAA,IAC5D,OAAO;AAAA,EACT,CAAC;AAAA,EACD,QAAQ,OAAO;AAAA,EACf,QAAQ,aAAa;AAAA,EACrB,OAAO;AAAA;AAIT,IAAM,gBAAgB,OAAO,SAAkC;AAAA,EAC7D,MAAM,sBAAsB;AAAA,EAC5B,OAAO,MAAM,OACX,YAAY;AAAA,IACV,MAAM,UAAU,MAAM,aAAa,IAAI;AAAA,IACvC,IAAI,UAAU,SAAS;AAAA,MACrB,OAAO,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI,CAAC,QAAQ,WAAW;AAAA,MAEtB,MAAM,IAAI,WAAW,QAAQ,KAAK;AAAA,IACpC;AAAA,IACA,MAAM,oBAAoB,QAAQ,OAAO,QAAQ,UAAU;AAAA,KAE7D;AAAA,IACE,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,YAAY;AAAA,IAIZ,iBAAiB,OAAO,YAAY;AAAA,MAGlC,QAAQ,eAAe,QAAQ;AAAA,MAC/B,IAAI,eAAe,aAAa,QAAQ,cAAc,GAAG;AAAA,QACvD,MAAM,MACJ,KAAK,IACH,GACA,KAAK,IAAI,YAAY,iBAAiB,IAAI,QAAQ,UACpD,CACF;AAAA,MACF;AAAA;AAAA,IAEF,SAAS,eAAe;AAAA,EAC1B,CACF;AAAA;AAGF,IAAM,eAAe,CAAC,UAAkB,SACtC,MAAK,UAAU,QAAQ,SAAS,IAAI,SAAS;AAE/C,IAAM,YAAY,OAAO,SAA8C;AAAA,EACrE,IAAI;AAAA,IACF,OAAO,MAAM,UAAS,MAAM,OAAO;AAAA,IACnC,MAAM;AAAA,IACN;AAAA;AAAA;AAIJ,IAAM,aAAa,OACjB,KACA,MACA,SACkB;AAAA,EAClB,IAAI;AAAA,IACF,MAAM,OAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,IACpC,MAAM,WAAU,MAAM,MAAM,OAAO;AAAA,IACnC,MAAM;AAAA;AAMV,IAAM,eAAe,OACnB,MACA,MACA,YACkD;AAAA,EAClD,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG;AAAA,IACxB,MAAM,WAAW,WAAW,IAAI,IAAI,OAAO,MAAK,MAAM,IAAI;AAAA,IAC1D,OAAO,EAAE,MAAM,MAAM,UAAS,UAAU,OAAO,GAAG,UAAU,CAAC,EAAE;AAAA,EACjE;AAAA,EAEA,MAAM,YAAY,QAAQ,WACtB,aAAa,QAAQ,UAAU,IAAI,IACnC;AAAA,EAGJ,IAAI,aAAa,QAAQ,YAAY,OAAO;AAAA,IAC1C,MAAM,SAAS,MAAM,UAAU,SAAS;AAAA,IACxC,IAAI,WAAW,WAAW;AAAA,MACxB,OAAO,EAAE,MAAM,QAAQ,UAAU,CAAC,EAAE;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,cAAc,IAAI;AAAA,IACrC,IAAI,QAAQ,YAAY,WAAW;AAAA,MACjC,MAAM,WAAW,QAAQ,UAAU,WAAW,IAAI;AAAA,IACpD;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,CAAC,EAAE;AAAA,IAC5B,OAAO,OAAO;AAAA,IAEd,IAAI,WAAW;AAAA,MACb,MAAM,SAAS,MAAM,UAAU,SAAS;AAAA,MACxC,IAAI,WAAW,WAAW;AAAA,QAGxB,OAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU;AAAA,YACR,mBAAmB,SAAU,MAAgB;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM;AAAA;AAAA;AAeV,IAAM,gBAAgB,CAAQ,UAC5B,OAAO,UAAU,YAAY,UAAU;AAElC,IAAM,YAAY,OACvB,MACA,MACA,UAA4B,CAAC,MACL;AAAA,EACxB,QAAQ,MAAM,aAAa,MAAM,aAAa,MAAM,MAAM,OAAO;AAAA,EACjE,MAAM,aAAa,WAAU,IAAI;AAAA,EACjC,QAAQ,kBAAkB,QAAQ,UAAU;AAAA,EAE5C,IAAI,CAAC,cAAc,aAAa,GAAG;AAAA,IACjC,MAAM,IAAI,iBACR,GAAG,wEACL;AAAA,EACF;AAAA,EACA,OAAO,EAAE,UAAU,eAAe,SAAS;AAAA;AAsB7C,IAAM,qBAAqB,CACzB,UAEA,OAAO,UAAU,YACjB,UAAU,SACV,cAAc,UACd,OAAO,MAAM,aAAa,YAC1B,MAAM,aAAa;AAEd,IAAM,oBAAoB,OAC/B,MACA,MACA,UAA4B,CAAC,MACG;AAAA,EAChC,QAAQ,MAAM,aAAa,MAAM,aAAa,MAAM,MAAM,OAAO;AAAA,EACjE,MAAM,aAAa,WAAU,IAAI;AAAA,EACjC,IAAI,CAAC,mBAAmB,UAAU,GAAG;AAAA,IACnC,MAAM,IAAI,iBACR,GAAG,4GACL;AAAA,EACF;AAAA,EACA,MAAM,UAAU,WAAW;AAAA,EAC3B,IAAI,WAA6B;AAAA,EACjC,IAAI,CAAC,QAAQ,WAAW,IAAI,GAAG;AAAA,IAI7B,MAAM,WAAqB,CAAC;AAAA,IAC5B,MAAM,eAAe,QAAQ;AAAA,IAC7B,QAAQ,OAAO,IAAI,SAAoB;AAAA,MACrC,SAAS,KAAK,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,CAAC;AAAA;AAAA,IAE1C,IAAI;AAAA,MAIF,WAAW,QACT,UACA,OACF;AAAA,MACA,OAAO,OAAO;AAAA,MAId,MAAM,IAAI,iBACR,GAAG,gDAAiD,MAAgB,WACtE;AAAA,cACA;AAAA,MACA,QAAQ,OAAO;AAAA;AAAA,IAEjB,SAAS,KACP,GAAG,SAAS,IACV,CAAC,YAAY,cAAc,yBAAyB,SACtD,CACF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,UAAU,0BAA0B,QAAQ,GAAG,SAAS;AAAA;AAiB5D,IAAM,mBAAmB,OAC9B,MACA,MACA,UAA4B,CAAC,MACE;AAAA,EAC/B,QAAQ,MAAM,aAAa,MAAM,aAAa,MAAM,MAAM,OAAO;AAAA,EACjE,IAAI;AAAA,IACF,OAAO,EAAE,UAAU,qBAAqB,IAAI,GAAG,SAAS;AAAA,IACxD,OAAO,OAAO;AAAA,IAId,MAAM,IAAI,iBACR,GAAG,uCAAwC,MAAgB,QAAQ,KAAK,IAC1E;AAAA;AAAA;;;AEzaJ;AACA,qBAAS;AACT;;;ACGA,IAAM,eAAe;AAQd,IAAM,gBAAgB,CAAC,SAAyB;AAAA,EACrD,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,OAAO,aAAa,KAAK,OAAO,IAAI,UAAU,GAAG;AAAA;;;AChBnD;AAYO,IAAM,gBAAgB,CAAC,MAAc,QAAwB;AAAA,EAClE,IAAI,MAAM;AAAA,EACV,IAAI,OAAO;AAAA,EACX,MAAM,YAAY,IAAI,KAAK,UAAU,WAAW,EAAE,aAAa,WAAW,CAAC;AAAA,EAC3E,aAAa,OAAO,aAAa,UAAU,QAAQ,IAAI,GAAG;AAAA,IACxD,MAAM,QAAQ,YAAY,OAAO;AAAA,IACjC,IAAI,OAAO,QAAQ,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,QAAQ,QAAQ;AAAA,EACxB;AAAA,EACA,OAAO,KAAK,MAAM,GAAG,GAAG;AAAA;;;ACbnB,IAAM,qBAAqB,CAChC,MACA,cAEA,KAAK,SAAS,YACV,iBAAiB,SAAS,IAC1B,GAAG,UAAU,OAAO,YAAY,KAAK,UAAU;;;AHYrD,IAAM,aAAa;AACnB,IAAM,WAAW,IAAI,IAAI;AAAA,EACvB,CAAC,KAAK,MAAM;AAAA,EACZ,CAAC,KAAK,QAAQ;AAAA,EACd,CAAC,KAAK,QAAQ;AAChB,CAAC;AAID,IAAM,kBAAkB;AACxB,IAAM,cAAc,CAAC,SACnB,KACG,QAAQ,YAAY,CAAC,SAAS,SAAS,IAAI,IAAI,KAAK,IAAI,EACxD,QACC,iBACA,CAAC,YAAY,KAAK,QAAQ,YAAY,CAAC,KAAK,QAAQ,MAAM,CAAC,GAC7D;AAiBJ,IAAM,YAAY,CAAC,SAAqC;AAAA,EACtD,MAAM,QAA4B,CAAC;AAAA,EACnC,MAAM,UAAU,CAAC,SAAsB;AAAA,IACrC,IAAI,KAAK,SAAS,gBAAgB,KAAK,SAAS,QAAQ;AAAA,MAEtD,MAAM,QAAQ,KAAK,UAAU,MAAM,UAAU;AAAA,MAC7C,MAAM,MAAM,KAAK,UAAU,IAAI,UAAU;AAAA,MACzC,MAAM,OAAO,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,UAAU;AAAA,MACxE,IACE,SAAS,MACR,KAAK,SAAS,gBACb,KAAK,WAAW,GAAG,KACnB,KAAK,WAAW,GAAG,IACrB;AAAA,QACA,MAAM,KAAK,CAAC,OAAO,GAAG,CAAC;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,QAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA;AAAA,EAEF,QAAQ,aAAa,IAAI,CAAC;AAAA,EAC1B,OAAO;AAAA;AAIT,IAAM,UAAU,CAAC,SAAyB;AAAA,EACxC,IAAI,MAAM;AAAA,EACV,IAAI,SAAS;AAAA,EACb,YAAY,OAAO,QAAQ,UAAU,IAAI,GAAG;AAAA,IAC1C,OAAO,YAAY,KAAK,MAAM,QAAQ,KAAK,CAAC;AAAA,IAC5C,OAAO,KAAK,MAAM,OAAO,GAAG;AAAA,IAC5B,SAAS;AAAA,EACX;AAAA,EACA,OAAO,MAAM,YAAY,KAAK,MAAM,MAAM,CAAC;AAAA;AA4B7C,IAAM,uBAAuB;AAC7B,IAAM,aAAa;AACnB,IAAM,gBAAgB;AAStB,IAAM,aAAa,CAAC,aAA6B;AAAA,EAC/C,MAAM,OAAO,aAAa,QAAQ;AAAA,EAClC,MAAM,QACJ,KAAK,SAAS,KAAK,CAAC,SAAS,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS;AAAA,EAC3E,OAAO,QAAQ,cAAc,KAAK,EAAE,QAAQ,YAAY,GAAG,EAAE,KAAK,IAAI;AAAA;AAIxE,IAAM,OAAO,CAAC,MAAc,QAAwB;AAAA,EAClD,IAAI,OAAO,GAAG;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAY,IAAI,KAAK,KAAK;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,cAAc,MAAM,MAAM,CAAC;AAAA,EACxC,MAAM,iBAAiB,KAAK,QAAQ,eAAe,EAAE;AAAA,EAGrD,OAAO,GAAG,aAAY,cAAc,KAAK,MAAM,IAAI,iBAAiB;AAAA;AAGtE,IAAM,UAAU,CAAC,SAA8B,KAAK,SAAS,KAAK;AAElE,IAAM,YAAY,CAAC,SAA8B,cAAc,QAAQ,IAAI,CAAC;AAG5E,IAAM,yBAAyB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,OAAO;AACT;AAWA,IAAM,uBAAuB,CAC3B,MACA,WACA,YACW;AAAA,EACX,IAAI,CAAC,QAAQ,QAAQ;AAAA,IACnB,OAAO,KACL,WAAW,UAAU,eAAe,UAAU,OAAO,KAAK,QAAQ,OAClE,oBACF;AAAA,EACF;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,KAAK,SAAS,YAAY;AAAA,IAC5B,UAAU,GAAG,UAAU,uBAAuB,UAAU;AAAA,EAC1D,EAAO,SAAI,KAAK,SAAS,WAAW;AAAA,IAGlC,UAAU,GAAG,UAAU,QAAQ,uBAAuB,UAAU;AAAA,EAClE,EAAO;AAAA,IACL,UAAU,GAAG,UAAU,OAAO,YAAY,KAAK,UAAU;AAAA;AAAA,EAE3D,MAAM,SAAS,qBAAqB,kBAAkB,UAAU,IAAI;AAAA,EACpE,MAAM,QAAQ,KACZ,WAAW,UAAU,eAAe,UAAU,OAAO,GACrD,uBAAuB,aAAY,MAAM,IAAI,CAC/C;AAAA,EACA,OAAO,KAAK,CAAC,OAAO,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,oBAAoB;AAAA;AAI7E,IAAM,kBAAkB,CAAC,aAAqB,cAC5C,YAAY,KAAK,IACb,GAAG,QAAQ,YAAY,KAAK,CAAC;AAAA;AAAA,EAAQ,cACrC;AAEC,IAAM,eAAe,CAC1B,MACA,WACA,cAIiB;AAAA,EACjB,MAAM,SAAS,UAAU,OAAO,YAAY;AAAA,EAC5C,MAAM,UAAU,KAAK,SAAS;AAAA,EAG9B,MAAM,gBAAgB,UAClB,UAAU,OACV,mBAAmB,MAAM,SAAS;AAAA,EACtC,MAAM,QAAQ,UAAU,WAAW;AAAA,EAGnC,MAAM,cACJ,UAAU,YAAY,KAAK,MAAM,UAAU,QAAQ,KAAK,IACpD,KACA,UAAU;AAAA,EAChB,MAAM,QAAqD,CAAC;AAAA,EAC5D,IAAI,WAAW,kBAAkB,OAAO;AAAA,IACtC,MAAM,KAAK,EAAE,SAAS,KAAK;AAAA,EAC7B;AAAA,EACA,IAAI,UAAU,YAAY;AAAA,IACxB,MAAM,aAAa;AAAA,EACrB;AAAA,EACA,MAAM,cAGF,CAAC;AAAA,EACL,IAAI,WAAW,oBAAoB,OAAO;AAAA,IACxC,YAAY,UAAU;AAAA,EACxB;AAAA,EACA,MAAM,MAA+B;AAAA,IACnC,aAAa,qBAAqB,MAAM,WAAW;AAAA,MACjD,QAAQ,WAAW,yBAAyB;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,SAAS;AAAA,IACtB,IAAI,UAAU;AAAA,EAChB;AAAA,EACA,MAAM,UAAuC;AAAA,IAC3C,OAAO,UAAU,WAAW,UAAU;AAAA,EACxC;AAAA,EAMA,IAAI,CAAC,WAAW,uBAAuB,UAAU,MAAM,GAAG;AAAA,IACxD,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,MAAM,OAAO,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM;AAAA,EAC/D,OAAO;AAAA,IACL,MAAM,gBACJ,aACA,sBAAsB,KAAK,aAAa,UAAU,SACpD;AAAA,IACA,MAAM;AAAA,SACD;AAAA,MACH,QAAQ,KAAK,aAAa,KAAK;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MAEA,MAAM;AAAA,IACR;AAAA,EACF;AAAA;AAGK,IAAM,cAAc,CACzB,MACA,cAIiB;AAAA,EAMjB,MAAM,aAAa,OAAO,OAAO,KAAK,UAAU;AAAA,EAGhD,MAAM,WAA6B,CAAC;AAAA,EACpC,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,OAAO,KAAK,MAAM;AAAA,IAC3B,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,GAAG;AAAA,MACxB,MAAM,IAAI,IAAI,IAAI;AAAA,MAClB,SAAS,KAAK,GAAG;AAAA,IACnB;AAAA,EACF;AAAA,EACA,WAAW,aAAa,YAAY;AAAA,IAClC,IAAI,CAAC,MAAM,IAAI,UAAU,OAAO,GAAG;AAAA,MACjC,MAAM,IAAI,UAAU,OAAO;AAAA,MAC3B,SAAS,KAAK;AAAA,QACZ,aAAa;AAAA,QACb,MAAM,UAAU;AAAA,QAChB,MAAM,UAAU;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,MAAM,cAAwB,CAAC;AAAA,EAC/B,WAAW,OAAO,UAAU;AAAA,IAC1B,IAAI,CAAC,WAAW,KAAK,CAAC,cAAc,UAAU,YAAY,IAAI,IAAI,GAAG;AAAA,MACnE;AAAA,IACF;AAAA,IACA,MAAM,cAAc,IAAI,YAAY,KAAK,IACrC,CAAC,QAAQ,IAAI,YAAY,KAAK,CAAC,CAAC,IAChC,CAAC;AAAA,IACL,YAAY,KACV;AAAA,MACE,MAAM,QAAQ,IAAI,IAAI;AAAA,MACtB,GAAG;AAAA,MACH,6BAA6B,KAAK,cAAc,IAAI;AAAA,IACtD,EAAE,KAAK;AAAA;AAAA,CAAM,CACf;AAAA,EACF;AAAA,EACA,MAAM,QAAiD,CAAC;AAAA,EACxD,IAAI,WAAW,kBAAkB,OAAO;AAAA,IACtC,MAAM,KAAK,EAAE,SAAS,KAAK;AAAA,EAC7B;AAAA,EACA,IAAI,WAAW,oBAAoB,OAAO;AAAA,IACxC,MAAM,SAAS,EAAE,SAAS,KAAK;AAAA,EACjC;AAAA,EACA,MAAM,MAA+B;AAAA,IACnC,aACE,KAAK,WAAW,KAAK,WAAW,GAAG,oBAAoB,KACvD,GAAG,UAAU,IAAI;AAAA,EACrB;AAAA,EACA,IAAI,WAAW,SAAS;AAAA,IACtB,IAAI,UAAU;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,gBACE,KAAK,aACL,wBAAwB,KAAK,UAC/B;AAAA,MACA,GAAG;AAAA,IACL,EAAE,KAAK;AAAA;AAAA,CAAM;AAAA,IACb,MAAM;AAAA,SACD;AAAA,MACH;AAAA,MACA,SAAS,EAAE,OAAO,WAAW;AAAA,MAC7B,OAAO,QAAQ,IAAI;AAAA,IACrB;AAAA,EACF;AAAA;;;AInUK,IAAM,kBAAkB,CAC7B,YAEA,UAAU,WAAU,OAAO,SAAS;AAGtC,IAAM,aAAa,CAAC,UAA0B,MAAM,QAAQ,SAAS,EAAE;AAGvE,IAAM,cAAc;AAAA,EAClB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;AAGA,IAAM,gBAAgB;AAAA,EACpB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;AAOA,IAAM,qBAAqB;AAAA,EACzB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;AAOA,IAAM,gBAAgB;AAAA,EACpB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;AAGA,IAAM,oBAAoB;AAAA,EACxB,UACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AACJ;AAGA,IAAM,sBAAsB;AAAA,EAC1B,UACE;AAAA,EACF,SACE;AAAA,EACF,SACE;AACJ;AAEA,IAAM,UAAU,CAAC,UAAwB,QAA6B;AAAA,EACpE,MAAM,MAAM,oBAAO,UAAU,GAAG,SAAS;AAAA,GAAU,SAAS,IAAI;AAAA,EAChE,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,OAAO,MAAM,SAAS,KAAK;AAAA,IAG3C,MAAM,KAAK,SAAS,KAAK;AAAA,IACzB,MAAM,SAAS,GAAG;AAAA,IAClB;AAAA,IACA;AAAA,EACF;AAAA;AAIF,IAAM,cAAc,CAClB,MACA,YACA,cACkB;AAAA,EAClB,MAAM,UAAU,WAAW,IAAI,CAAC,cAC9B,QACE,aAAa,MAAM,WAAW,SAAS,GACvC,GAAG,WAAW,UAAU,KAAK,OAC/B,CACF;AAAA,EAIA,MAAM,OAAO,WAAW,KAAK,KAAK;AAAA,EAClC,QAAQ,KACN,QACE,YAAY,MAAM,SAAS,GAC3B,OAAO,GAAG,mBAAmB,WAC/B,CACF;AAAA,EACA,OAAO;AAAA;AAWT,IAAM,gBAAgB,CACpB,MACA,SAC+B;AAAA,EAC/B,MAAM,OAAO,WAAW,KAAK,KAAK;AAAA,EAClC,OAAO,OAAO,YACZ,KAAK,IAAI,CAAC,QAAQ;AAAA,IAChB,OAAO,GAAG,QAAQ,IAAI,SAAS,IAAI;AAAA,IACnC,EAAE,OAAO,IAAI,KAAK;AAAA,EACpB,CAAC,CACH;AAAA;AAsBF,IAAM,iBAAiB,OACrB,WACA,QAC6B;AAAA,EAC7B,MAAM,UAAU,EAAE,UAAU,IAAI,UAAU,SAAS,IAAI,QAAQ;AAAA,EAC/D,IAAI,UAAU,SAAS,YAAY;AAAA,IACjC,QAAQ,qBAAU,wBAAa,MAAM,kBACnC,UAAU,MACV,IAAI,aACJ,OACF;AAAA,IACA,MAAM,aAAY,0BAA0B,WAAU,UAAU,KAAK;AAAA,IACrE,OAAO;AAAA,MACL;AAAA,MACA,iBAAiB,WAAU;AAAA,MAC3B,YAAY,WAAU;AAAA,MACtB,MAAM,WAAU;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,UAAU,SAAS,WAAW;AAAA,IAChC,QAAQ,qBAAU,wBAAa,MAAM,iBACnC,UAAU,MACV,IAAI,aACJ,OACF;AAAA,IACA,MAAM,aAAY,yBAAyB,WAAU,UAAU,KAAK;AAAA,IACpE,OAAO;AAAA,MACL;AAAA,MACA,iBAAiB,WAAU;AAAA,MAC3B,YAAY,WAAU;AAAA,MACtB,MAAM,WAAU;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ,UAAU,aAAa,MAAM,UACnC,UAAU,MACV,IAAI,aACJ,OACF;AAAA,EACA,MAAM,YAAY,kBAAkB,UAAU,UAAU,KAAK;AAAA,EAC7D,OAAO;AAAA,IACL;AAAA,IACA,iBAAiB,UAAU;AAAA,IAC3B,YAAY,UAAU;AAAA,IACtB,MAAM,UAAU;AAAA,IAChB;AAAA,EACF;AAAA;AAGK,IAAM,gBAAgB,CAC3B,YACA,QACyB;AAAA,EACzB,IAAI,SAAsB,CAAC;AAAA,EAE3B,MAAM,gBAAgB,OACpB,cACqC;AAAA,IAGrC,MAAM,YAAY,YAAY,UAAU;AAAA,IACxC,MAAM,aAAa,cAAc,UAAU;AAAA,IAC3C,IAAI;AAAA,MACF,QAAQ,UAAU,UAAU,YAAY,MAAM,oBAC5C,MAAM,eAAe,WAAW,GAAG;AAAA,MACrC,MAAM,OAAO,SAAS,QAAQ,EAAE,OAAO,UAAU,OAAO,SAAS,GAAG;AAAA,MAMpE,QAAQ,OAAO,oBAAoB,UAAU,QAAQ;AAAA,MACrD,IAAI,QAAwB;AAAA,MAC5B,IAAI,oBAAoB,MAAM;AAAA,QAC5B,QAAQ,aAAa,UAAU,UAAU,aAAa;AAAA,MACxD,EAAO,SAAI,oBAAoB,SAAS,oBAAoB,IAAI;AAAA,QAC9D,QAAQ;AAAA,MACV;AAAA,MACA,MAAM,OAAoB;AAAA,QACxB,aAAa,UAAU,QAAQ;AAAA,QAC/B,aAAa,KAAK,eAAe;AAAA,QACjC;AAAA,QACA,eAAe,UAAU,QAAQ;AAAA,QACjC,MAAM,UAAU;AAAA,QAChB,OAAO,UAAU;AAAA,QAKjB,YAAY,OAAO,YACjB,WAAW,IAAI,CAAC,cAAc;AAAA,UAC5B,UAAU;AAAA,UACV;AAAA,eACK;AAAA,YACH,OAAO,aAAa,UAAU,UAAU,UAAU,KAAK;AAAA,UACzD;AAAA,QACF,CAAC,CACH;AAAA,QACA,YAAY,EAAE,SAAS,UAAU,QAAQ,WAAW,SAAS,MAAM;AAAA,QACnE,OAAO,UAAU;AAAA,QACjB,MAAM,UAAU;AAAA,QAChB;AAAA,QACA,OAAO,KAAK,SAAS,UAAU;AAAA,QAC/B,SAAS,KAAK,WAAW;AAAA,MAC3B;AAAA,MAGA,IAAI,UAAU,aAAa,WAAW;AAAA,QACpC,KAAK,WAAW,UAAU;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,UACX,GAAG,SAAS,IAAI,CAAC,aAAa;AAAA,YAC5B,MAAM,mBAAmB,UAAU;AAAA,YACnC;AAAA,YACA,UAAU;AAAA,UACZ,EAAE;AAAA,UACF,GAAG,gBAAgB,IAAI,CAAC,aAAa;AAAA,YACnC,MAAM,cAAc,UAAU;AAAA,YAC9B,SAAS,MAAM,mBAAmB,UAAU,UAAU;AAAA,YACtD,UAAU;AAAA,UACZ,EAAE;AAAA,UAIF,GAAI,WAAW,WAAW,IACtB;AAAA,YACE;AAAA,cACE,MAAM,GAAG;AAAA,cACT,SAAS,GAAG,mBAAmB,UAAU,aAAa,UAAU;AAAA,cAChE,UAAU;AAAA,cACV,YAAY,kBAAkB,UAAU;AAAA,YAC1C;AAAA,UACF,IACA,CAAC;AAAA,QACP;AAAA,QACA,SAAS,YAAY,MAAM,YAAY,SAAS;AAAA,QAChD,YAAY,cAAc,MAAM,IAAI;AAAA,QACpC,MAAM,UAAU;AAAA,QAChB;AAAA,MACF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,OAAO;AAAA,QACL,MAAM,GAAG;AAAA,QAGT,SAAS,kBAAkB,mBAAmB,UAAU,aAAa,UAAU,UAAW,MAAgB;AAAA,QAI1G,UAAU,IAAI,SAAS,UAAU,UAAU;AAAA,QAG3C,YACE,iBAAiB,mBACb,oBAAoB,UAAU,QAC9B;AAAA,MACR;AAAA;AAAA;AAAA,EAIJ,MAAM,QAAO,YAAuC;AAAA,IAClD,MAAM,UAAU,MAAM,QAAQ,IAAI,WAAW,IAAI,aAAa,CAAC;AAAA,IAC/D,MAAM,UAAyB,CAAC;AAAA,IAIhC,MAAM,cAA4B,WAAW,QAAQ,CAAC,eACnD,UAAU,cAAc,CAAC,GAAG,IAAI,CAAC,aAAa;AAAA,MAC7C,MAAM;AAAA,MACN;AAAA,MACA,UAAU;AAAA,IACZ,EAAE,CACJ;AAAA,IACA,MAAM,OAAoB,CAAC;AAAA,IAC3B,MAAM,aAAyC,CAAC;AAAA,IAChD,WAAW,UAAU,SAAS;AAAA,MAC5B,IAAI,cAAc,QAAQ;AAAA,QACxB,YAAY,KAAK,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,KAAK,OAAO,QAAQ,OAAO;AAAA,MAC3B,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,MAC9B,OAAO,OAAO,YAAY,OAAO,UAAU;AAAA,MAC3C,YAAY,KAAK,GAAG,OAAO,WAAW;AAAA,IACxC;AAAA,IACA,SAAS;AAAA,IACT,OAAO,EAAE,aAAa,SAAS,WAAW;AAAA;AAAA,EAG5C,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,MAAM;AAAA,IACN,aAAa,MAAM;AAAA,IACnB,QAAQ;AAAA,EACV;AAAA;;;ACvYF,uBAAS,sBAAY;AACrB,qBAAS;AAET,oBAAS,wBAAS,qBAAY,mBAAM,sBAAU;AAC9C,iBAAS;;;ACkBF,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EAKA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,IAAM,qBAAqB,MAChC,kBAAkB,IAAI,CAAC,QAAQ,MAAM,QAAQ;AAMxC,IAAM,0BAA0B;AAGhC,IAAM,qBAAqB,CAAC,aACjC,SACG,IAAI,CAAC,YAAY,0BAA0B,KAAK,OAAO,GAAG,QAAQ,GAAG,EACrE,OAAO,CAAC,QAAuB,QAAQ,SAAS;AAU9C,IAAM,wBAAwB,CACnC,UACA,aAA+B,yBAC/B,gBAA8C,MAAM,UAC1B;AAAA,EAC1B,MAAM,SAAS,IAAI,IAAI,UAAU;AAAA,EACjC,OAAO,CAAC,QAAQ,aAAa;AAAA,IAC3B,IACE,aAAa,QACb,SACG,MAAM,QAAQ,EACd,KAAK,CAAC,YAAY,OAAO,IAAI,OAAO,KAAK,cAAc,OAAO,CAAC,GAClE;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS;AAAA;AAAA;;;AD7CN,IAAM,mBAAmB,CAC9B,YACqD;AAAA,EACrD,MAAM,cAAc,YAAW,QAAQ,IAAI,IACvC,QAAQ,OACR,MAAK,SAAQ,QAAQ,WAAW,GAAG,QAAQ,IAAI;AAAA,EAEnD,MAAM,QAAO,YAAuC;AAAA,IAClD,MAAM,QAAQ,MAAM,MAAK,QAAQ,SAAS;AAAA,MACxC,UAAU;AAAA,MACV,KAAK;AAAA,MAIL,QAAQ,CAAC,GAAG,QAAQ,SAAS,GAAG,mBAAmB,CAAC;AAAA,MACpD,WAAW;AAAA,IACb,CAAC;AAAA,IACD,MAAM,KAAK;AAAA,IAEX,MAAM,UAAU,MAAM,QAAQ,IAC5B,MAAM,IAAI,OAAO,SAA+B;AAAA,MAC9C,MAAM,SAAS,MAAM,UAAS,MAAM,OAAO;AAAA,MAC3C,MAAM,MAAM,SAAQ,IAAI,EAAE,YAAY;AAAA,MACtC,MAAM,SAAS,QAAQ,SAAS,QAAQ;AAAA,MACxC,MAAM,SAAS,oBAAO,MAAM;AAAA,MAC5B,OAAO;AAAA,QACL,MAAM,EAAE,QAAQ,MAAM,OAAO,QAAQ;AAAA,QACrC,MAAM,OAAO;AAAA,QAIb,KAAK;AAAA,QACL,KAAK,UAAS,aAAa,IAAI;AAAA,QAC/B,YAAY;AAAA,MACd;AAAA,KACD,CACH;AAAA,IAEA,OAAO,EAAE,aAAa,CAAC,GAAG,QAAQ;AAAA;AAAA,EAGpC,MAAM,WAAW,MAAY;AAAA,IAC3B,IAAI,CAAC,YAAW,WAAW,GAAG;AAAA,MAC5B,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM,QAAQ,eAAe;AAAA,QAC7B,MAAM;AAAA,QACN,SAAS,2BAA2B,QAAQ;AAAA,QAC5C,UAAU;AAAA,QACV,YAAY,aAAa,QAAQ;AAAA,MACnC,CAAC;AAAA,IACH;AAAA;AAAA,EAOF,MAAM,kBAAkB,IAAI,IAAI;AAAA,IAC9B,GAAG;AAAA,IACH,GAAG,mBAAmB,QAAQ,OAAO;AAAA,EACvC,CAAC;AAAA,EAED,MAAM,QAAQ,CAAC,aAAuC;AAAA,IACpD,IAAI,CAAC,YAAW,WAAW,GAAG;AAAA,MAC5B,OAAO,MAAM;AAAA,IAGf;AAAA,IACA,MAAM,UAAU,QACd,aACA,EAAE,WAAW,KAAK,GAClB,sBAAsB,UAAU,eAAe,CACjD;AAAA,IACA,OAAO,MAAM,QAAQ,MAAM;AAAA;AAAA,EAG7B,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,MAAM,CAAC,QACL,UAAS,MAAK,aAAa,GAAG,GAAG,OAAO;AAAA,IAC1C,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAAA;;;AE3HF,yBAAS;AACT;AACA,qBAAS;AACT;AACA;AAsDA,IAAM,gBAAgB;AACtB,IAAM,WAAW;AAEjB,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,cAAc;AAMpB,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AAKxB,IAAM,iBAAiB;AACvB,IAAM,cAAa;AACnB,IAAM,oBAAoB;AAG1B,IAAM,YAAY,IAAI,IAAI,CAAC,QAAQ,WAAW,QAAQ,eAAe,CAAC;AAUtE,IAAM,qBAAqB,CAAC,SAAqC;AAAA,EAC/D,MAAM,OAAO,cAAa,KAAK,WAAW,gBAAgB,SAAS,GAAG;AAAA,IACpE,YAAY,CAAC,IAAI,CAAC;AAAA,IAClB,iBAAiB,CAAC,gBAAgB,CAAC;AAAA,EACrC,CAAC;AAAA,EACD,MAAM,OAAO,KAAK,SACf,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC,EAG1C,IAAI,CAAC,SACJ,eAAc,MAAM,EAAE,aAAa,OAAO,iBAAiB,MAAM,CAAC,CACpE,EACC,KAAK,GAAG,EACR,WAAW,aAAY,GAAG,EAC1B,KAAK;AAAA,EACR,IAAI,CAAC,MAAM;AAAA,IACT;AAAA,EACF;AAAA,EACA,IAAI,aAAY,IAAI,KAAK,iBAAiB;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,QAAQ,cAAc,MAAM,kBAAkB,CAAC;AAAA,EACrD,MAAM,WAAW,MAAM,YAAY,GAAG;AAAA,EACtC,MAAM,QACJ,aAAa,MAAM,aAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,kBACxD,MAAM,MAAM,GAAG,QAAQ,IACvB,OACJ,QAAQ,mBAAmB,EAAE;AAAA,EAC/B,OAAO,GAAG;AAAA;AAIZ,IAAM,aAAa,CAAC,QAClB,IAAI,YAAY,EAAE,WAAW,UAAU,GAAG,EAAE,WAAW,aAAa,EAAE;AAGxE,IAAM,gBAAgB,MAAe;AAAA,EACnC,MAAM,UAAU,IAAI,QAAQ,EAAE,QAAQ,8BAA8B,CAAC;AAAA,EACrE,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,IAAI,OAAO;AAAA,IACT,QAAQ,IAAI,iBAAiB,UAAU,OAAO;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAsBT,IAAM,iBAAiB,CAAC,YAAwC;AAAA,EAC9D,MAAM,UAAU,QAAQ,SAAS,QAAQ,WAAW,EAAE;AAAA,EACtD,MAAM,QAAQ,QAAQ,MAAM,KAAK,KAAK,QAAQ;AAAA,EAC9C,MAAM,OAAO,QAAQ,gBAAgB,QAAQ;AAAA,EAC7C,MAAM,WAAW,QAAQ,aAAa,eAAe;AAAA,EACrD,MAAM,QAAQ,QAAQ,QAAQ,IAAI,WAAW;AAAA,GAAQ;AAAA,CAAI,EAAE,KAAK;AAAA,EAIhE,MAAM,cAAc,mBAAmB,IAAI;AAAA,EAG3C,MAAM,OAA6B;AAAA,IACjC,WAAW,EAAE,UAAU,QAAQ;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,IAAI,aAAa;AAAA,IACf,KAAK,MAAM,EAAE,YAAY;AAAA,EAC3B;AAAA,EACA,KAAK,QAAQ;AAAA,EACb,KAAK,OAAO;AAAA,EACZ,MAAM,MAAM,oBAAO,UAAU,GAAG;AAAA,GAAU,IAAI;AAAA,EAC9C,MAAM,cAAc,WAAW,QAAQ;AAAA,EACvC,MAAM,MAAM,GAAG,WAAW,QAAQ,QAAQ,KAAK;AAAA,EAC/C,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,IAGjC,MAAM,KAAK,KAAK;AAAA,IAChB,SAAS,QAAQ;AAAA,IACjB,MAAM,SAAS,GAAG;AAAA,IAClB,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF;AAAA;AAUK,IAAM,uBAAuB,CAClC,SACA,QACkB;AAAA,EAClB,MAAM,UAAU,QAAQ,aAAa,WAAW;AAAA,EAChD,MAAM,QAAQ,QAAQ,WAAW,gBAAgB,QAAQ,QAAQ,EAAE;AAAA,EACnE,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC7B,MAAM,QAAQ,cAAc,IAAI,QAAQ;AAAA,EACxC,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,UAAU,CAAC,aACd,QAAQ,UAAU,CAAC,QAAQ,WAC3B,QAAQ,eAAe,CAAC,QAAQ;AAAA,EAEnC,MAAM,YAAY,OAAO,SAA2C;AAAA,IAClE,MAAM,MAAM,GAAG,cAAc,QAAQ,SAAS,QAAQ,0BAA0B,iBAAiB;AAAA,IACjG,MAAM,MAAM,MAAM,QAAQ,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;AAAA,IAC3D,IAAI,CAAC,IAAI,IAAI;AAAA,MACX,MAAM,IAAI,MAAM,GAAG,UAAU,IAAI,QAAQ;AAAA,IAC3C;AAAA,IAGA,OAAQ,MAAM,IAAI,KAAK;AAAA;AAAA,EAGzB,MAAM,gBAAgB,YAAsC;AAAA,IAC1D,MAAM,YAA6B,CAAC;AAAA,IACpC,IAAI,OAAO;AAAA,IACX,OAAO,UAAU,SAAS,KAAK;AAAA,MAE7B,MAAM,QAAQ,MAAM,UAAU,IAAI;AAAA,MAClC,UAAU,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAAA,MACvC,IAAI,MAAM,SAAS,UAAU;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IACV;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAG/B,MAAM,QAAO,OACX,UAAU,IAAI,WAAW,SACK;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,QACV,MAAM,WAAW,MAAM,cAAc;AAAA,QACrC,OAAO,SAAS,IAAI,cAAc;AAAA,SAEpC,OACF;AAAA,MACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,MACpE,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MAKd,WAAW,IAAI;AAAA,MAGf,OAAO;AAAA,QACL,aAAa;AAAA,UACX;AAAA,YACE,MAAM;AAAA,YACN,SAAS,WAAW,QAAQ,0CAA2C,MAAgB;AAAA,YACvF,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,QACA,SAAS,CAAC;AAAA,MACZ;AAAA;AAAA;AAAA,EAIJ,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,IAC3C,OAAO,OAAO,OAAO,OAAO,KAAK,QAAQ;AAAA;AAAA,EAG3C,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,MAAK,IAAI,GACf,QAAQ,cACR,MAAM,MAAK,CACb,IACA;AAAA,EACN;AAAA;;;AC3SF;AAkDA,IAAM,eAAe,IAAI,IAAI,CAAC,kBAAkB,2BAA2B,CAAC;AAE5E,IAAM,iBAAgB,CAAC,QAAwC;AAAA,EAC7D,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,IAAI,CAAC,OAAO;AAAA,IACV,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI,OAAO;AAAA,EACX,IAAI;AAAA,IACF,OAAO,IAAI,IAAI,GAAG,EAAE;AAAA,IACpB,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA,EAEV,OAAO,aAAa,IAAI,IAAI,IAAI,EAAE,eAAe,UAAU,QAAQ,IAAI,CAAC;AAAA;AAS1E,IAAM,kBAAkB,OACtB,QACA,SACA,YACuD;AAAA,EACvD,QAAQ,OAAO,MAAM,QAAQ;AAAA,EAC7B,MAAM,OAAO,OAAO,KAAK,WAAW,aAAa,EAAE;AAAA,EACnD,MAAM,UAAU,gCAAgC,SAAS,kBAAkB;AAAA,EAC3E,MAAM,MAAM,MAAM,QAAQ,SAAS,EAAE,SAAS,eAAc,OAAO,EAAE,CAAC;AAAA,EACtE,IAAI,CAAC,IAAI,IAAI;AAAA,IACX,MAAM,IAAI,MAAM,GAAG,cAAc,IAAI,QAAQ;AAAA,EAC/C;AAAA,EAGA,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,EAI7B,MAAM,SAAS,OAAO,GAAG,UAAU;AAAA,EACnC,MAAM,WAAW,UAAU,OAAO;AAAA,EAClC,MAAM,QAAQ,KAAK,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS;AAAA,IAC/C,IAAI,EAAE,KAAK,SAAS,UAAU,KAAK,KAAK,WAAW,MAAM,IAAI;AAAA,MAC3D,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,MAAM;AAAA,IACzC,IAAI,CAAC,SAAS,GAAG,GAAG;AAAA,MAClB,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,QACE,SAAS,sBAAsB,SAAS,aAAa,OAAO,SAAS;AAAA,QACrE,UAAU,qCAAqC,SAAS,QAAQ,OAAO,SAAS;AAAA,QAChF,KAAK;AAAA,MACP;AAAA,IACF;AAAA,GACD;AAAA,EAGD,OAAO,EAAE,MAAM,WAAW,KAAK,cAAc,KAAK;AAAA;AAQ7C,IAAM,kBAAkB,CAC7B,SACA,QACkB;AAAA,EAClB,MAAM,UAAU,QAAQ,aAAa,WAAW;AAAA,EAChD,MAAM,QAAQ,cAAc,IAAI,QAAQ;AAAA,EACxC,IAAI,WAAW,IAAI;AAAA,EAMnB,MAAM,mBAAmB,MAAY;AAAA,IACnC,IAAI,QAAQ,UAAW,QAAQ,SAAS,QAAQ,KAAM;AAAA,MACpD;AAAA,IACF;AAAA,IACA,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ;AAAA,MAC5B,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAGH,MAAM,YAAY,YAGZ;AAAA,IACJ,IAAI,QAAQ,QAAQ;AAAA,MAClB,OAAO,MAAM,gBAAgB,QAAQ,QAAQ,QAAQ,SAAS,OAAO;AAAA,IACvE;AAAA,IACA,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAAA,IACnD,MAAM,WAAW,UAAU,QAAQ,OAAO;AAAA,IAC1C,MAAM,QAAQ,QAAQ,SAAS,CAAC,GAAG,QAAQ,CAAC,QAC1C,SAAS,GAAG,IACR,CAAC,EAAE,SAAS,GAAG,QAAQ,OAAO,UAAU,GAAG,QAAQ,OAAO,IAAI,CAAC,IAC/D,CAAC,CACP;AAAA,IACA,OAAO,EAAE,MAAM,WAAW,MAAM;AAAA;AAAA,EAGlC,MAAM,aAAa,OAAO,SAA0C;AAAA,IAClE,MAAM,MAAM,MAAM,QAAQ,KAAK,UAAU;AAAA,MACvC,SAAS,eAAc,KAAK,QAAQ;AAAA,IACtC,CAAC;AAAA,IACD,IAAI,CAAC,IAAI,IAAI;AAAA,MACX,MAAM,IAAI,MAAM,GAAG,KAAK,eAAe,IAAI,QAAQ;AAAA,IACrD;AAAA,IACA,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,IAC5B,MAAM,SAAS,oBAAO,IAAI;AAAA,IAC1B,MAAM,SAAS,KAAK,IAAI,YAAY,EAAE,SAAS,MAAM,IAAI,QAAQ;AAAA,IACjE,OAAO;AAAA,MACL,MAAM,EAAE,QAAQ,MAAM,OAAO,QAAQ;AAAA,MACrC,MAAM,OAAO;AAAA,MACb,SAAS,KAAK;AAAA,MACd,MAAM,SAAS,IAAI;AAAA,MACnB,KAAK;AAAA,MACL,KAAK,KAAK;AAAA,IACZ;AAAA;AAAA,EAGF,MAAM,QAAO,OACX,UAAU,IAAI,WAAW,SACK;AAAA,IAC9B,iBAAiB;AAAA,IACjB,MAAM,UAAwB,CAAC;AAAA,IAC/B,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,QAAQ,MAAM,cAAc,MAAM,UAAU;AAAA,MAC5C,IAAI,WAAW;AAAA,QACb,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,SAAS,WAAW,QAAQ;AAAA,UAC5B,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,MACA,MAAM,UAAU,MAAM,QAAQ,IAC5B,KAAK,IAAI,OAAO,QAAQ;AAAA,QACtB,IAAI;AAAA,UACF,OAAO,MAAM,WAAW,GAAG;AAAA,UAC3B,OAAO,OAAO;AAAA,UACd,QAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YAGN,SAAS,WAAW,QAAQ,kBAAkB,IAAI,SAAU,MAAgB;AAAA,YAC5E,UAAU;AAAA,UACZ,CAAC;AAAA,UACD,OAAO;AAAA;AAAA,OAEV,CACH;AAAA,MACA,MAAM,UAAU,QAAQ,OACtB,CAAC,UAAgC,UAAU,IAC7C;AAAA,MAIA,IAAI,KAAK,SAAS,KAAK,QAAQ,WAAW,GAAG;AAAA,QAC3C,QAAQ,SAAS;AAAA,QACjB,MAAM,IAAI,MAAM,OAAO,KAAK,uCAAuC;AAAA,MACrE;AAAA,MACA,OAAO;AAAA,OAET,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO;AAAA,SACF;AAAA,MACH,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,OAAO;AAAA,IACjD;AAAA;AAAA,EAGF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,IAC3C,OAAO,OAAO,OAAO,OAAO,KAAK,QAAQ;AAAA;AAAA,EAG3C,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,MAAK,IAAI,GACf,QAAQ,cACR,MAAM,MAAK,CACb,IACA;AAAA,EACN;AAAA;;;AC/PF,uBAAS;AAET;AACA,iBAAS;;;ACHT,kBAAS,qBAAO;AAEhB,oBAAS,kBAAS;AAKlB,IAAM,YAAW;AACjB,IAAM,SAAS;AACf,IAAM,WAAW;AACjB,IAAM,mBACJ;AAGF,IAAM,cAAc;AAWpB,IAAM,SAAS,CAAC,QAAwB;AAAA,EACtC,MAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,MAAM;AAAA,EACnC,MAAM,MAAM,SAAQ,KAAK;AAAA,EACzB,OAAO,SAAS,KAAK,GAAG,IAAI,IAAI,YAAY,IAAI;AAAA;AAS3C,IAAM,oBAAoB,OAC/B,UACA,QAC6D;AAAA,EAC7D,MAAM,UAAU,IAAI,aAAa,WAAW;AAAA,EAC5C,MAAM,cAA4B,CAAC;AAAA,EAKnC,MAAM,SAAmB,CAAC;AAAA,EAC1B,MAAM,SAAS,SAAS,QAAQ,kBAAkB,CAAC,UAAU;AAAA,IAC3D,OAAO,KAAK,KAAK;AAAA,IACjB,OAAO,mBAAqB,OAAO,SAAS;AAAA,GAC7C;AAAA,EAED,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,SAAS,OAAO,SAAS,SAAQ,GAAG;AAAA,IAC7C,MAAM,MAAM,MAAM,QAAQ;AAAA,IAC1B,IAAI,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,MAC3B,KAAK,IAAI,GAAG;AAAA,IACd;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,QAAQ,IACZ,CAAC,GAAG,IAAI,EAAE,IAAI,OAAO,QAAQ;AAAA,IAC3B,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,QAAQ,GAAG;AAAA,MAC7B,IAAI,CAAC,IAAI,IAAI;AAAA,QACX,MAAM,IAAI,MAAM,GAAG,IAAI,QAAQ;AAAA,MACjC;AAAA,MACA,MAAM,QAAQ,IAAI,WAAW,MAAM,IAAI,YAAY,CAAC;AAAA,MAMpD,MAAM,OAAO,GAAG,SAAS,IAAI,MAAM,GAAG,EAAE,MAAM,GAAG,IAAI,OAAO,GAAG;AAAA,MAC/D,MAAM,OAAM,IAAI,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,MAC9C,MAAM,WAAU,MAAK,IAAI,WAAW,IAAI,GAAG,KAAK;AAAA,MAChD,SAAS,IAAI,KAAK,GAAG,IAAI,iBAAiB,MAAM;AAAA,MAChD,OAAO,OAAO;AAAA,MAGd,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,4BAA4B,QAAS,MAAgB;AAAA,QAC9D,UAAU;AAAA,MACZ,CAAC;AAAA;AAAA,GAEJ,CACH;AAAA,EAEA,MAAM,YAAY,OACf,WAAW,WAAU,CAAC,OAAO,KAAK,QAAQ;AAAA,IACzC,MAAM,QAAQ,SAAS,IAAI,GAAG;AAAA,IAC9B,OAAO,QAAQ,KAAK,QAAQ,WAAW;AAAA,GACxC,EACA,WAAW,aAAa,CAAC,OAAO,UAAU,OAAO,OAAO,KAAK,MAAM,KAAK;AAAA,EAE3E,OAAO,EAAE,aAAa,UAAU,UAAU;AAAA;;;ADuD5C,IAAM,iBAAiB,CAAC,OAAyB,CAAC,MAChD,KACG,IAAI,CAAC,SAAS;AAAA,EACb,IAAI,OAAO,KAAK;AAAA,EAChB,IAAI,KAAK,aAAa,MAAM;AAAA,IAC1B,OAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,KAAK,aAAa,MAAM;AAAA,IAC1B,OAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,KAAK,aAAa,QAAQ;AAAA,IAC5B,OAAO,IAAI;AAAA,EACb;AAAA,EACA,IAAI,KAAK,aAAa,eAAe;AAAA,IACnC,OAAO,KAAK;AAAA,EACd;AAAA,EACA,OAAO,KAAK,OAAO,IAAI,SAAS,KAAK,UAAU;AAAA,CAChD,EACA,KAAK,EAAE;AAEZ,IAAM,iBAAiB,CACrB,UACgC,OAAO,UAAU;AAGnD,IAAM,YAAY,CAAC,UAAuD;AAAA,EACxE,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC1B,OAAO,eAAe,KAAK,IAAI,QAAQ;AAAA;AAGzC,IAAM,aAAa,CAAC,UAClB,UAAU,KAAK,GAAG,aAAa,CAAC;AAElC,IAAM,eAAe;AACrB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,aAAY;AAClB,IAAM,sBAAsB;AAU5B,IAAM,kBAAkB,OACtB,MACA,UAAU,MACK;AAAA,EACf,IAAI;AAAA,IACF,OAAO,MAAM,KAAK;AAAA,IAClB,OAAO,OAAO;AAAA,IAId,QAAQ,WAAW;AAAA,IACnB,IAAI,WAAW,gBAAgB,YAAY,aAAa;AAAA,MACtD,MAAM;AAAA,IACR;AAAA,IAIA,MAAM,aAAa,OAChB,MAA+C,UAAU,cAC5D;AAAA,IACA,MAAM,OACJ,aAAa,IACT,aAAa,aACb,gBAAgB,KAAK,WAAW,IAAI,KAAK,OAAO;AAAA,IACtD,MAAM,OAAM,IAAI;AAAA,IAChB,OAAO,gBAAgB,MAAM,UAAU,CAAC;AAAA;AAAA;AAK5C,IAAM,aAAa,OACjB,MACA,QACA,MAAW,CAAC,MACK;AAAA,EACjB,MAAM,MAAM,MAAM,KAAK,MAAM;AAAA,EAC7B,MAAM,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,OAAO;AAAA,EACnC,OAAO,IAAI,YAAY,IAAI,cACvB,WAAW,MAAM,IAAI,aAAa,GAAG,IACrC;AAAA;AAGN,IAAM,cAAc,IAAI,IAAI;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,aAAa,CAAC,UAClB,UAAU,aAAa,YAAY,IAAI,MAAM,IAAI;AAGnD,IAAM,aAAa,CAAC,UAAsC;AAAA,EACxD,MAAM,OAAO,UAAU,KAAK,KAAK,CAAC;AAAA,EAClC,MAAM,OAAO,eAAe,WAAW,KAAK,CAAC;AAAA,EAC7C,QAAQ,MAAM;AAAA,SACP,aAAa;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,KAAK;AAAA,IACd;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,MAAM;AAAA,IACf;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,OAAO;AAAA,IAChB;AAAA,SACK,sBAAsB;AAAA,MACzB,OAAO,KAAK;AAAA,IACd;AAAA,SACK,sBAAsB;AAAA,MACzB,OAAO,MAAM;AAAA,IACf;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,MAAM,KAAK,UAAU,MAAM,QAAQ;AAAA,IAC5C;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,KAAK;AAAA,IACd;AAAA,SACK,WAAW;AAAA,MACd,OAAO;AAAA,IACT;AAAA,SACK,QAAQ;AAAA,MACX,OAAO,SAAS,KAAK,YAAY;AAAA,EAAO;AAAA;AAAA,IAC1C;AAAA,SACK,SAAS;AAAA,MACZ,MAAM,MAAM,KAAK,UAAU,OAAO,KAAK,MAAM;AAAA,MAC7C,OAAO,MAAM,KAAK,eAAe,KAAK,OAAO,MAAM,SAAS;AAAA,IAC9D;AAAA,aACS;AAAA,MACP,OAAO;AAAA,IACT;AAAA;AAAA;AASG,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,QAAQ,QAAQ,cAAc,CAAC;AAAA,EAMrC,MAAM,QAAQ,OAAO,KAAK,IAAI,GAAG,QAAQ,eAAe,mBAAmB,CAAC;AAAA,EAG5E,MAAM,aAAa,CAAI,SACrB,gBAAgB,MAAM,MAAM,IAAI,CAAC;AAAA,EACnC,MAAM,QAAQ,cACZ,KAAK,YAAY,MAAK,UAAU,SAAS,QAAQ,IAAI,CACvD;AAAA,EACA,MAAM,YACJ,KAAK,aAAa,MAAK,UAAU,UAAU,gBAAgB,QAAQ,IAAI;AAAA,EACzE,MAAM,gBAAgB,KAAK,iBAAiB,iBAAiB,QAAQ;AAAA,EACrE,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,gBAAgB,YAAuC;AAAA,IAC3D,IAAI,QAAQ,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,MAIF,MAAM,MAAe,MAAa;AAAA,OAIjC,EAAE,OAAO,IAAI;AAAA,MAGd,MAAM;AAAA,MACN,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ;AAAA,QAC5B,UAAU;AAAA,MACZ,CAAC;AAAA;AAAA,IAEH,OAAO,IAAI,OAAO,EAAE,MAAM,QAAQ,SAAS,QAAQ,IAAI,aAAa,CAAC;AAAA;AAAA,EAGvE,MAAM,aAAa,CACjB,QACA,YAEA,WAAW,CAAC,WACV,WAAW,MACT,OAAO,OAAO,SAAS,KAAK,EAAE,UAAU,SAAS,cAAc,OAAO,CAAC,CACzE,CACF;AAAA,EAIF,MAAM,kBAAkB,OACtB,QACA,OACA,WACoB;AAAA,IACpB,MAAM,WAAW,OAAO,WAAyC;AAAA,MAC/D,IAAI,CAAC,OAAO,cAAc;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA,OAAO,OAAO,QAAQ,MAAM,WAAW,QAAQ,OAAO,EAAE,CAAC;AAAA;AAAA,IAG3D,IAAI,MAAM,SAAS,WAAW;AAAA,MAC5B,MAAM,OAAO,CAAC,eAAe,WAAW,KAAK,CAAC,GAAG,MAAM,SAAS,KAAK,CAAC,EACnE,OAAO,OAAO,EACd,KAAK;AAAA;AAAA,CAAM;AAAA,MACd,OAAO;AAAA,EAAc;AAAA;AAAA,IACvB;AAAA,IACA,IAAI,MAAM,SAAS,UAAU;AAAA,MAC3B,MAAM,QAAQ,KAAK,UAAU,eAAe,WAAW,KAAK,CAAC,CAAC;AAAA,MAC9D,OAAO;AAAA,uBAAqC;AAAA,EAAW,MAAM,SAAS,KAAK;AAAA;AAAA;AAAA,IAC7E;AAAA,IACA,IAAI,MAAM,SAAS,eAAe;AAAA,MAChC,MAAM,OAAO,MAAM,WAAW,QAAQ,MAAM,EAAE;AAAA,MAC9C,MAAM,WAAW,MAAM,QAAQ,IAC7B,KAAK,IAAI,OAAO,QAAQ;AAAA,EAAa,MAAM,SAAS,GAAG;AAAA,UAAc,CACvE;AAAA,MACA,OAAO;AAAA,EAAc,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,IACzC;AAAA,IACA,OAAO,iCAAiC,MAAM;AAAA;AAAA,EAGhD,MAAM,eAAe,OACnB,QACA,WACoB;AAAA,IACpB,MAAM,QAAQ,MAAM,QAAQ,IAC1B,OAAO,IAAI,OAAO,UAAU;AAAA,MAC1B,MAAM,OAAO,WAAW,KAAK;AAAA,MAC7B,IAAI,SAAS,MAAM;AAAA,QACjB,OAAO,gBAAgB,QAAQ,OAAO,YAAY;AAAA,MACpD;AAAA,MAGA,IAAI,CAAC,MAAM,cAAc;AAAA,QACvB,OAAO;AAAA,MACT;AAAA,MACA,MAAM,SAAS,MAAM,aACnB,QACA,MAAM,WAAW,QAAQ,MAAM,EAAE,CACnC;AAAA,MACA,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,IAAI,WAAW,KAAK,GAAG;AAAA,QAGrB,MAAM,SAAS,IAAI,OACjB,MAAM,SAAS,uBAAuB,IAAI,CAC5C;AAAA,QACA,MAAM,WAAW,OACd,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,SAAU,OAAO,GAAG,SAAS,SAAS,IAAK,EAChD,KAAK;AAAA,CAAI;AAAA,QACZ,OAAO,GAAG;AAAA,EAAS;AAAA,MACrB;AAAA,MAIA,OAAO,GAAG;AAAA;AAAA,EAAW;AAAA,KACtB,CACH;AAAA,IAGA,MAAM,QAAQ,OAAO,QAAQ,CAAC,OAAO,MAAM;AAAA,MACzC,MAAM,OAAO,MAAM,MAAM;AAAA,MACzB,OAAO,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC;AAAA,KACpC;AAAA,IACD,OAAO,MACJ,IAAI,CAAC,MAAM,MAAM;AAAA,MAChB,IAAI,MAAM,GAAG;AAAA,QACX,OAAO,KAAK;AAAA,MACd;AAAA,MACA,MAAM,QAAQ,WAAW,MAAM,IAAI,IAAI,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACtE,OAAO,GAAG,QAAQ;AAAA,IAAO;AAAA;AAAA,IAAS,KAAK;AAAA,KACxC,EACA,KAAK,EAAE;AAAA;AAAA,EAGZ,MAAM,gBAAgB,CAAC,SAAiD;AAAA,IACtE,IAAI,MAAM,OAAO;AAAA,MACf,OAAO,KAAK,WAAW,MAAM;AAAA,IAC/B;AAAA,IACA,OAAO,OAAO,OAAO,KAAK,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAAA;AAAA,EAGtE,MAAM,UAAU,CAAC,SAA8B;AAAA,IAC7C,MAAM,OAAO,KAAK,WAAW,MAAM,UAAU;AAAA,IAC7C,MAAM,SAAS,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAGnD,OAAO,QACL,UAAU,YAAY,QAAQ,kBAAkB,YAClD;AAAA;AAAA,EAGF,MAAM,UAAU,CAAC,SAAyC;AAAA,IACxD,MAAM,QAAQ,KAAK,WAAW,MAAM,SAAS,UAAU;AAAA,IACvD,OAAO,UAAU,OAAO,YAAY;AAAA;AAAA,EAGtC,MAAM,cAAc,CAAC,SAAqB;AAAA,IACxC,MAAM,OAA0B,CAAC;AAAA,IACjC,MAAM,QAAQ,eAAe,cAAc,IAAI,GAAG,KAAK;AAAA,IACvD,IAAI,OAAO;AAAA,MACT,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,MAAM,cAAc,eAClB,KAAK,WAAW,MAAM,eAAe,gBAAgB,SACvD;AAAA,IACA,IAAI,aAAa;AAAA,MACf,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI,QAAQ,IAAI,GAAG;AAAA,MACjB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAC1B,IAAI,UAAU,WAAW;AAAA,MACvB,KAAK,UAAU,EAAE,MAAM;AAAA,IACzB;AAAA,IACA,MAAM,WAAW,eACf,KAAK,WAAW,MAAM,QAAQ,SAAS,SACzC;AAAA,IAGA,MAAM,OAAO,YAAY,YAAY,KAAK,KAAK,KAAK;AAAA,IACpD,OAAO,EAAE,MAAM,KAAK;AAAA;AAAA,EAGtB,MAAM,WAAU,OACd,QACA,SAC+D;AAAA,IAC/D,QAAQ,MAAM,SAAS,YAAY,IAAI;AAAA,IACvC,MAAM,MAAM,MAAM,aAAa,QAAQ,MAAM,WAAW,QAAQ,KAAK,EAAE,CAAC;AAAA,IACxE,MAAM,SAAS,MAAM,kBAAkB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,IACD,MAAM,MAAM,oBAAO,UAAU,OAAO,UAAU,IAAI;AAAA,IAClD,OAAO;AAAA,MACL,aAAa,OAAO;AAAA,MACpB,OAAO;AAAA,QACL,MAAM,EAAE,QAAQ,OAAO,MAAM,OAAO,SAAS;AAAA,QAC7C;AAAA,QACA,MAAM,SAAS,GAAG;AAAA,QAClB,cAAc,KAAK;AAAA,QACnB;AAAA,QACA,KAAK,GAAG;AAAA,MACV;AAAA,IACF;AAAA;AAAA,EAKF,MAAM,oBAAoB,OACxB,WACoB;AAAA,IACpB,MAAM,WAAW,MAAM,WAAW,MAChC,OAAO,UAAU,SAAS,EAAE,aAAa,QAAQ,SAAS,CAAC,CAC7D;AAAA,IACA,OAAO,cAAc,SAAS;AAAA,IAC9B,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,2BAA2B,QAAQ;AAAA,QAC/D,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,IACA,OAAO,WAAW;AAAA;AAAA,EAKpB,MAAM,kBAAkB,CACtB,QACA,cACA,WAEA,WAAW,MACT,OAAO,YAAY,MAAM;AAAA,IACvB,gBAAgB;AAAA,IAChB,cAAc;AAAA,EAChB,CAAC,CACH;AAAA,EAEF,MAAM,QAAO,OACX,UAAU,KAAK,WAAW,SACI;AAAA,IAC9B,MAAM,mBAAiC,CAAC;AAAA,IACxC,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,MAAM,SAAS,MAAM,cAAc;AAAA,MACnC,MAAM,eAAe,MAAM,kBAAkB,MAAM;AAAA,MACnD,MAAM,QAAQ,MAAM,WAAW,CAAC,WAC9B,gBAAgB,QAAQ,cAAc,MAAM,CAC9C;AAAA,MACA,MAAM,QAAQ,MAAM,QAAQ,IAC1B,MAAM,IAAI,CAAC,SAAS,SAAQ,QAAQ,IAAI,CAAC,CAC3C;AAAA,MACA,WAAW,QAAQ,OAAO;AAAA,QACxB,iBAAiB,KAAK,GAAG,KAAK,WAAW;AAAA,MAC3C;AAAA,MACA,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,OAEvC,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO;AAAA,MACL,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,gBAAgB;AAAA,MACxD,SAAS,OAAO;AAAA,IAClB;AAAA;AAAA,EAGF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,OAAO;AAAA;AAAA,EAGhD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,MAAK,IAAI,GACf,QAAQ,cACR,MAAM,MAAK,CACb,IACA;AAAA,EACN;AAAA;;;AEpmBF,uBAAS,sBAAY;AAErB,8BAAkB;AAElB,qBAAS,yBAAU,qBAAY,mBAAM,sBAAU;AA8D/C,IAAM,gBAAgB;AAEtB,IAAM,mBAAmB;AASzB,IAAM,WACJ;AAkBF,IAAM,WAAW,CAAC,UAChB,MAAM,UAAU,KAAK,EAAE,YAAY;AAGrC,IAAM,cAAc;AAMpB,IAAM,eAAe;AAQrB,IAAM,aAAa,CAAC,SAClB,SACE,KAAK,WAAW,aAAa,SAAS,EAAE,WAAW,cAAc,EAAE,CACrE;AASF,IAAM,uBAAuB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,iBAAiB,IAAI,IAAY,eAAe,MAAM,EAAE,OAAO;AAQrE,IAAM,eAAe,CAAC,YACpB,YAAY,QAAQ,QAAQ,eAAe,EAAE,CAAC;AA+ChD,IAAM,YAAY,OAA0B;AAAA,EAC1C,WAAW,CAAC;AAAA,EACZ,SAAS,CAAC;AAAA,EACV,OAAO,CAAC;AACV;AAUA,IAAM,cAAc,CAClB,QACA,MACA,SACW;AAAA,EACX,MAAM,MAAM,KAAK,QAAQ,MAAM;AAAA,EAC/B,MAAM,SAAS,OAAO,QAAQ,SAAS,GAAG,IAAI,MAAO,OAAO,QAAQ,MAAM;AAAA,EAC1E,OAAO,eAAe,OAAO,cAAc,QAAQ,IAAI;AAAA;AASzD,IAAM,eAAe,CAAC,QAA0B;AAAA,EAC9C,MAAM,WAAW,IAAI,QAAQ,eAAe,EAAE,EAAE,MAAM,GAAG;AAAA,EACzD,OAAO,SAAS,IAAI,CAAC,GAAG,SAAS,SAAS,SAAS,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA;AAI3E,IAAM,eAAe;AASrB,IAAM,YAAY,CAAC,MAAc,OAAwB;AAAA,EACvD,IAAI,cAAc;AAAA,EAClB,SAAS,IAAI,KAAK,EAAG,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,GAAG;AAAA,IACvD,eAAe;AAAA,EACjB;AAAA,EACA,OAAO,cAAc,MAAM;AAAA;AAQ7B,IAAM,eAAe,CAAC,SAAgC;AAAA,EACpD,MAAM,OAAsB,CAAC;AAAA,EAC7B,WAAW,SAAS,KAAK,SAAS,YAAY,GAAG;AAAA,IAC/C,MAAM,UAAU,UAAU,MAAM,MAAM,KAAK;AAAA,IAC3C,MAAM,KAAK,UAAU,MAAM,QAAQ,IAAI,MAAM;AAAA,IAC7C,MAAM,SAAS,UAAU,MAAM,GAAG,SAAS,IAAI,MAAM,GAAG;AAAA,IACxD,IAAI,SAAS,GAAG;AAAA,MACd,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAgBT,IAAM,cAAc,CAClB,MACA,MACA,WACW;AAAA,EACX,SAAS,IAAI,KAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC1C,IAAI,KAAK,IAAI,WAAW,QAAQ;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAST,IAAM,eAAe,CACnB,MACA,SACuB;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,IACvC,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ,aAAa,IAAI,KAAK,MAAM;AAAA,MACtC;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,YAAY,MAAM,IAAI,GAAG,IAAI,MAAM;AAAA,IACjD,IAAI,UAAU,IAAI;AAAA,MAChB,OAAO,EAAE,MAAM,KAAK,QAAQ,MAAM,KAAK,IAAI,QAAQ,OAAO,IAAI,GAAG;AAAA,IACnE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,eAAe;AACrB,IAAM,gBAAgB;AAOtB,IAAM,cAAc,CAAC,MAAc,SAAqC;AAAA,EACtE,MAAM,QAAQ,KAAK,QAAQ,cAAc,IAAI;AAAA,EAC7C,IAAI,UAAU,IAAI;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAK,QAAQ,eAAe,QAAQ,aAAa,MAAM;AAAA,EACrE,OAAO,UAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,cAAc,QAAQ,MAAM;AAAA;AAU1E,IAAM,gBAAgB,CAAC,SAA8B;AAAA,EACnD,MAAM,OAAO,aAAa,IAAI;AAAA,EAC9B,MAAM,SAAsB,CAAC;AAAA,EAC7B,IAAI,SAAS;AAAA,EACb,UAAS;AAAA,IACP,MAAM,OAAO,aAAa,MAAM,MAAM;AAAA,IACtC,MAAM,UAAU,YAAY,MAAM,MAAM;AAAA,IACxC,MAAM,OACJ,SAAS,QAAS,YAAY,QAAQ,QAAQ,QAAQ,KAAK,QACvD,UACA;AAAA,IACN,IAAI,SAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,KACL,EAAE,SAAS,OAAO,MAAM,KAAK,MAAM,QAAQ,KAAK,KAAK,EAAE,GACvD,EAAE,SAAS,MAAM,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG,EAAE,CAC1D;AAAA,IACA,SAAS,KAAK;AAAA,EAChB;AAAA,EACA,OAAO,KAAK,EAAE,SAAS,OAAO,MAAM,KAAK,MAAM,MAAM,EAAE,CAAC;AAAA,EACxD,OAAO;AAAA;AAIT,IAAM,iBAAiB,CACrB,OACA,OACA,MACA,eAEA,MAAM,WAAW,kBAAkB,EAAE,EAAE,WAAW,UAAU,IAAI,SAAS;AAAA,EAGvE,MAAM,SAAS,KAAK,GAAG,EAAE;AAAA,EACzB,MAAM,UAAU,OAAO,UAAU,IAAI,KAAK;AAAA,EAC1C,MAAM,UAAU,OAAO,SAAS,KAAK;AAAA,EACrC,MAAM,QAAQ,OAAO,OAAO,KAAK,KAAK,WAAW;AAAA,EAGjD,IAAI,OAAO,OAAO;AAAA,IAEhB,OAAO,KAAK;AAAA,EACd;AAAA,EAGA,IAAI,WAAW,IAAI;AAAA,IACjB,IAAI,YAAY,WAAW;AAAA,MAEzB,OAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,UAAU,YAAY,MAAM,MAAM,MAAM,IAAI;AAAA,IAKlD,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,MAC3B,OAAO,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,MAAM,CAAC,MAAM;AAAA,IAC1D;AAAA,IACA,MAAM,MAAM,KAAK,QAAQ,IAAI,WAAW,OAAO,CAAC;AAAA,IAChD,IAAI,QAAQ,WAAW;AAAA,MAGrB,WAAW,QAAQ,KAAK,IAAI,SAAS;AAAA,MACrC,OAAO,IAAI,UAAU;AAAA,IACvB;AAAA,IACA,OAAO,IAAI,UAAU,WAAW;AAAA,EAClC;AAAA,EAGA,MAAM,MAAM,SAAS,OAAO,QAAQ,eAAe,EAAE,CAAC;AAAA,EACtD,MAAM,OAAO,MAAM,MAAM,IAAI,GAAG;AAAA,EAChC,IAAI,SAAS,WAAW;AAAA,IACtB,WAAW,MAAM,KAAK,MAAM;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,MAAM,UAAU,IAAI,GAAG;AAAA,EACrC,IAAI,UAAU,WAAW;AAAA,IACvB,WAAW,UAAU,KAAK,KAAK;AAAA,EACjC;AAAA,EACA,MAAM,OAAO,YAAY,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/C,IAAI,YAAY,WAAW;AAAA,IACzB,OAAO,IAAI,UAAU;AAAA,EACvB;AAAA,EAGA,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,IAC3B,OAAO,IAAI,OAAO,OAAO,KAAK,KAAK,WAAW;AAAA,EAChD;AAAA,EACA,MAAM,SAAS,KAAK,QAAQ,IAAI,WAAW,OAAO,CAAC;AAAA,EACnD,IAAI,WAAW,WAAW;AAAA,IAGxB,WAAW,QAAQ,KAAK,GAAG,UAAU,SAAS;AAAA,IAC9C,OAAO,IAAI,UAAU;AAAA,EACvB;AAAA,EACA,OAAO,IAAI,UAAU,QAAQ;AAAA,CAC9B;AAMH,IAAM,iBAAiB,CACrB,MACA,OACA,MACA,eAEA,cAAc,IAAI,EACf,IAAI,CAAC,UACJ,MAAM,UACF,MAAM,OACN,eAAe,MAAM,MAAM,OAAO,MAAM,UAAU,CACxD,EACC,KAAK,EAAE;AAGZ,IAAM,iBAAgB;AAEtB,IAAM,YAAY;AAGlB,IAAM,WAAW,CAAC,SAChB,KAAK,SAAS,KAAK,UAAU,EAAE;AAMjC,IAAM,YAAY,CAAC,MAAc,WAA6B;AAAA,EAC5D,IAAI,KAAK,KAAK,MAAM,IAAI;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,KAAK,IAAI,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,IAAI,IAAI,SAAS;AAAA;AAWlE,IAAM,aAAa,CACjB,MACA,OACA,aACA,WACe;AAAA,EACf,MAAM,aACJ,UAAU,OACN,UAAU,CAAC,eAAc,KAAK,IAAI,IAClC,SAAS,IAAI,KAAK,cAAc;AAAA,EACtC,OAAO,aAAa,eAAe,MAAM,KAAK,IAAI;AAAA;AASpD,IAAM,gBAAgB,CACpB,MACA,OACA,MACA,eACW;AAAA,EACX,IAAI,QAAoB;AAAA,EAGxB,IAAI,cAAc;AAAA,EAKlB,IAAI,aAAa;AAAA,EACjB,IAAI,eAAe;AAAA,EACnB,IAAI,SAAS;AAAA,EACb,MAAM,MAAgB,CAAC;AAAA,EACvB,IAAI,QAAkB,CAAC;AAAA,EACvB,MAAM,QAAQ,MAAY;AAAA,IACxB,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,IAAI,KAAK,eAAe,MAAM,KAAK;AAAA,CAAI,GAAG,OAAO,MAAM,UAAU,CAAC;AAAA,MAClE,QAAQ,CAAC;AAAA,IACX;AAAA;AAAA,EAEF,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,MAAM,QAAQ,KAAK,KAAK,MAAM;AAAA,IAC9B,IAAI,UAAU,QAAQ,cAAc;AAAA,MAClC,IAAI,SAAS,eAAc,KAAK,IAAI,GAAG;AAAA,QACrC,IAAI,KAAK,IAAI;AAAA,QACb,aAAa;AAAA,QACb;AAAA,MACF;AAAA,MACA,eAAe;AAAA,IACjB;AAAA,IACA,SAAS,UAAU,MAAM,MAAM;AAAA,IAC/B,IACE,UAAU,QACV,cACA,EAAE,SAAS,WACX,eAAc,KAAK,IAAI,GACvB;AAAA,MACA,MAAM;AAAA,MACN,eAAe;AAAA,MACf,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,OAAmB,WAAW,MAAM,OAAO,aAAa,MAAM;AAAA,IACpE,IAAI,UAAU,QAAQ,SAAS,MAAM;AAAA,MACnC,IAAI,UAAU,MAAM;AAAA,QAClB,cAAc,SAAS,IAAI;AAAA,MAC7B;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,OAAO;AAAA,MAKT,MAAM;AAAA,MACN,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,KAAK,IAAI;AAAA,IACf,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,OAAO,IAAI,KAAK;AAAA,CAAI;AAAA;AAetB,IAAM,cAAc,CAAC,MAAmB,UAA2B;AAAA,EACjE,MAAM,MAAM,gBAAgB,KAAK,KAAK,OAAO;AAAA,EAC7C,MAAM,YAAY,IAAI,KACpB,CAAC,YACC,eAAe,QAAQ,MAAM,OAAO,KAAK,MAAM,UAAU,CAAC,MAC1D,QAAQ,IACZ;AAAA,EACA,MAAM,WAAW,YACb,gBACE,cAAc,KAAK,KAAK,SAAS,OAAO,KAAK,MAAM,UAAU,CAAC,CAChE,IACA;AAAA,EACJ,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,MAAM,WAAW,QAAQ,IAAI;AAAA,IAGnC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,GAAG;AAAA,MAC/B,KAAK,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,IACzC;AAAA,EACF;AAAA;AAaF,IAAM,iBAAiB,CACrB,OACA,YACc;AAAA,EACd,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,UAAU,CAAC,SAAkC;AAAA,IACjD,MAAM,SAAS,QAAQ,IAAI,KAAK,GAAG;AAAA,IACnC,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT;AAAA,IAIA,MAAM,QAAQ,kBACZ,EAAE,KAAK,KAAK,KAAK,MAAM,aAAa,KAAK,UAAU,OAAO,EAAE,GAC5D,OACA,cAAc,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,WACjD,OACF;AAAA,IACA,MAAM,QAAqB;AAAA,MACzB,SAAS,IAAI;AAAA,MACb,SAAS,MAAM;AAAA,MACf,cAAc,MAAM;AAAA,IACtB;AAAA,IACA,QAAQ,IAAI,KAAK,KAAK,KAAK;AAAA,IAC3B,OAAO;AAAA;AAAA,EAET,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,OAAO;AAAA,IACxB,WAAW,OAAO,aAAa,KAAK,GAAG,GAAG;AAAA,MACxC,MAAM,UAAU,OAAO,IAAI,GAAG;AAAA,MAC9B,IAAI,SAAS;AAAA,QACX,QAAQ,KAAK,IAAI;AAAA,MACnB,EAAO;AAAA,QACL,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA;AAAA,IAE1B;AAAA,EACF;AAAA,EACA,MAAM,YAAY,IAAI,IACpB,MAAM,IAAI,CAAC,SAAS,SAAS,KAAK,IAAI,QAAQ,eAAe,EAAE,CAAC,CAAC,CACnE;AAAA,EACA,MAAM,QAAmB;AAAA,IACvB,WAAW,IAAI;AAAA,IACf,MAAM,QAAQ;AAAA,IACd,OAAO,IAAI;AAAA,EACb;AAAA,EACA,YAAY,KAAK,cAAc,QAAQ;AAAA,IACrC,OAAO,UAAU,QAAQ;AAAA,IACzB,IAAI,KAAK,SAAS,KAAK,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,GAAG;AAAA,MAChE,MAAM,UAAU,IACd,KACA,GAAG,QAAQ,UAAU,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,KAAK,IAAI,IACxD;AAAA,IACF;AAAA,IACA,MAAM,MAAM,IAAI,KAAK,QAAQ,KAAK,CAAC;AAAA,EACrC;AAAA,EACA,MAAM,QAAQ,MAAM,IAAI,CAAC,SAAS;AAAA,IAChC,MAAM,OAAO,QAAQ,IAAI;AAAA,IAGzB,MAAM,MAAM,IAAI,SAAS,KAAK,IAAI,QAAQ,eAAe,EAAE,CAAC,GAAG,IAAI;AAAA,IACnE,OAAO,EAAE,MAAM,KAAK;AAAA,GACrB;AAAA,EAGD,WAAW,QAAQ,OAAO;AAAA,IACxB,YAAY,MAAM,KAAK;AAAA,EACzB;AAAA,EACA,OAAO,EAAE,OAAO,MAAM;AAAA;AAQxB,IAAM,WAAW,CACf,KACA,qBACuB;AAAA,EACvB,IAAI,cAAc,gBAAgB,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,UAAS,GAAG,EAAE,QAAQ,eAAe,EAAE;AAAA,EACxD,OAAO,SAAS,YAAY,MAAM,UAAU,YAAY;AAAA;AAS1D,IAAM,cAAc,CAClB,MACA,YAIgB;AAAA,EAChB,MAAM,YAAY,cAAc,KAAK,IAAI,IAAI,KAAK,OAAO,QAAQ;AAAA,EACjE,MAAM,WACJ,cAAc,YACV,CAAC,IACA,QAAQ,sBAAsB,cAAc,CAAC;AAAA,EACpD,OAAO,IAAI,IAAI,CAAC,GAAI,QAAQ,mBAAmB,CAAC,GAAI,GAAG,QAAQ,CAAC;AAAA;AAUlE,IAAM,cAAc,CAClB,MACA,OACA,SAIA,eACgB;AAAA,EAChB,QAAQ,SAAS;AAAA,EACjB,MAAM,QAAQ,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,EAChD,MAAM,OAAO,YAAY,KAAK,MAAM,OAAO;AAAA,EAC3C,MAAM,OAAO,OAAO,YAClB,OAAO,QAAQ,KAAK,IAAI,EAAE,OACxB,EAAE,SACA,CAAC,qBAAqB,IAAI,GAAG,MAC5B,eAAe,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,EAC5C,CACF;AAAA,EACA,MAAM,SAAS,UAAU,YAAY,OAAO,KAAK,MAAM,MAAM;AAAA,EAC7D,MAAM,OAAO,cAAc,KAAK,QAAQ,KAAK,GAAG,OAAO,KAAK,MAAM,UAAU;AAAA,EAC5E,MAAM,MAAM,oBAAO,UAAU,GAAG;AAAA,GAAU,MAAM;AAAA,EAChD,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,MAAM,KAAK;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM,SAAS,GAAG;AAAA,IAClB;AAAA,IACA,KAAK,KAAK;AAAA,IACV,MAAM,aAAa,KAAK,UAAU,OAAO;AAAA,IACzC,YAAY,KAAK;AAAA,EACnB;AAAA;AASF,IAAM,WAAW,OACf,UACA,KACA,YAC+B;AAAA,EAC/B,MAAM,UAAU,MAAK,UAAU,GAAG;AAAA,EAClC,IAAI;AAAA,IACF,QAAQ,SAAS,SAAS,oBAAO,MAAM,UAAS,SAAS,OAAO,CAAC;AAAA,IACjE,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MAIA,WAAW,cAAc,KAAK,OAAO,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,OAAO,OAAO;AAAA,IAGd,IAAK,MAAgC,SAAS,UAAU;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA;AAAA;AAgBV,IAAM,WAAW,CAAC,SAA0B,KAAK,WAAW,GAAG;AAU/D,IAAM,WAAW,OAAO,KAAa,UAAuC;AAAA,EAC1E,IAAI,CAAC,MAAM,eAAe,GAAG;AAAA,IAC3B,OAAO;AAAA,MACL,WAAW,MAAM,YAAY;AAAA,MAC7B,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,MAAM;AAAA,IACd;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,KAAK,MAAK,KAAK,MAAM,IAAI,CAAC;AAAA,IAC/C,OAAO;AAAA,MACL,WAAW,OAAO,YAAY;AAAA,MAC9B,MAAM,OAAO,OAAO;AAAA,MACpB,MAAM,MAAM;AAAA,IACd;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,MAAM,cAAc,KAAK,MAAM,IAAI;AAAA,MACnC,MAAM,MAAM;AAAA,IACd;AAAA;AAAA;AASJ,IAAM,eAAe,CAAC,GAAe,MACnC,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,KACxC,EAAE,KAAK,cAAc,EAAE,MAAM,MAAM,EAAE,SAAS,MAAM,aAAa,OAAO,CAAC,MACxE,EAAE,OAAO,EAAE,OAAO,KAAK;AAG1B,IAAM,YAAY,OAChB,KACA,MACA,YACsB;AAAA,EACtB,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,SAAS,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,EACzD,MAAM,UAAU,MAAM,QAAQ,IAC5B,OACG,OAAO,CAAC,UAAU,EAAE,SAAS,MAAM,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,EAAE,EACpE,IAAI,CAAC,UAAU,SAAS,KAAK,KAAK,CAAC,CACxC;AAAA,EACA,WAAW,SAAS,QAAQ,SAAS,YAAY,GAAG;AAAA,IAClD,MAAM,OAAO,MAAK,KAAK,MAAM,IAAI;AAAA,IACjC,IAAI,MAAM,WAAW;AAAA,MAEnB,MAAM,KAAK,GAAI,MAAM,UAAU,MAAM,MAAM,OAAO,CAAE;AAAA,IACtD,EAAO,SAAI,MAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,GAAG;AAAA,MACvD,MAAM,KAAK,UAAS,MAAM,IAAI,CAAC;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,SAAS,CAAC,YACd,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAG7C,IAAM,wBAAwB,CAC5B,MACA,eACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,IAAI,WAAW,MAAM,SAAS,GAAG;AAAA,IAC/B,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,MAAM,yCAAyC,OAAO,WAAW,KAAK;AAAA,MACpH,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,UAAU,SAAS,GAAG;AAAA,IACnC,MAAM,QAAQ,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,IAC5C,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,UAAU,yBAAyB,qDAAqD,OAAO,WAAW,SAAS;AAAA,MACjK,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,QAAQ,SAAS,GAAG;AAAA,IACjC,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,QAAQ,4CAA4C,OAAO,WAAW,OAAO;AAAA,MAC3H,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAYF,IAAM,iBAAiB,CAC5B,SACA,QACkB;AAAA,EAClB,MAAM,WAAW,SAAQ,IAAI,aAAa,QAAQ,KAAK;AAAA,EAKvD,MAAM,UAAU,IAAI,IAAI,CAAC,GAAG,mBAAmB,GAAI,QAAQ,WAAW,CAAC,CAAE,CAAC;AAAA,EAE1E,MAAM,QAAO,YAAuC;AAAA,IAClD,MAAM,QAAQ,MAAM,UAAU,UAAU,UAAU,OAAO;AAAA,IACzD,MAAM,QAAO,MAAM,QAAQ,IACzB,MAAM,IAAI,CAAC,QAAQ,SAAS,UAAU,KAAK,OAAO,CAAC,CACrD;AAAA,IACA,MAAM,QAAQ,MAAK,OAAO,CAAC,SAA6B,SAAS,IAAI;AAAA,IAGrE,QAAQ,OAAO,UAAU,eAAe,OAAO,OAAO;AAAA,IACtD,MAAM,aAAa,UAAU;AAAA,IAC7B,MAAM,UAAU,MAAM,IAAI,CAAC,SACzB,YAAY,MAAM,OAAO,SAAS,UAAU,CAC9C;AAAA,IACA,OAAO;AAAA,MACL,aAAa,sBAAsB,QAAQ,MAAM,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA;AAAA,EAOF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,UAAU,SAAQ,UAAU,GAAG;AAAA,IAKrC,MAAM,MAAM,UAAS,UAAU,OAAO;AAAA,IACtC,IAAI,IAAI,WAAW,IAAI,KAAK,YAAW,GAAG,GAAG;AAAA,MAC3C,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,sBAAsB;AAAA,QAClD,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,OAAO,MAAM,UAAS,SAAS,OAAO;AAAA;AAAA,EAGxC,MAAM,WAAW,MAAY;AAAA,IAG3B,MAAM,QAAQ,SAAS,UAAU,EAAE,gBAAgB,MAAM,CAAC;AAAA,IAC1D,IAAI,OAAO,YAAY,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,IACA,MAAM,UAAU,QAAQ,uBAAuB;AAAA,IAC/C,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ,oBAAoB,QAAQ,iBAAiB;AAAA,MACzE,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA;AAAA,EAOH,MAAM,QAAQ,CAAC,aAAuC;AAAA,IACpD,IAAI,CAAC,YAAW,QAAQ,GAAG;AAAA,MACzB,OAAO,MAAM;AAAA,IAGf;AAAA,IACA,MAAM,UAAU,SACd,UACA,EAAE,WAAW,KAAK,GAClB,sBAAsB,UAAU,SAAS,QAAQ,CACnD;AAAA,IACA,OAAO,MAAM,QAAQ,MAAM;AAAA;AAAA,EAG7B,OAAO;AAAA,IAIL,aAAa;AAAA,IACb;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAAA;;;AC7gCF,iBAAS;;;ACuDT,IAAM,iBAAiB,IAAI,IAAI;AAAA,EAC7B,CAAC,MAAM,IAAI;AAAA,EACX,CAAC,MAAM,KAAK;AAAA,EACZ,CAAC,MAAM,MAAM;AAAA,EACb,CAAC,MAAM,OAAO;AAAA,EACd,CAAC,MAAM,QAAQ;AAAA,EACf,CAAC,MAAM,SAAS;AAClB,CAAC;AASD,IAAM,oBAAoB;AAE1B,IAAM,aAAa,CAAC,SAClB,KAAK,WAAW,mBAAmB,OAAO,QAAQ;AAGpD,IAAM,aAAa,CACjB,MACA,SACW;AAAA,EAGX,MAAM,SAAS,KAAK,OAAO,SAAS,MAAM,KAAK;AAAA,EAC/C,IAAI,OAAO,SAAU,KAAK,QAAQ,KAAM,WAAW,KAAK,QAAQ,EAAE;AAAA,EAClE,IAAI,CAAC,KAAK,SAAS,KAAK,MAAM,WAAW,GAAG;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,EACJ,WAAW,QAAQ,KAAK,OAAO;AAAA,IAC7B,QAAQ;AAAA,WACD,UAAU;AAAA,QACb,OAAO,KAAK;AAAA,QACZ;AAAA,MACF;AAAA,WACK,MAAM;AAAA,QACT,OAAO,IAAI;AAAA,QACX;AAAA,MACF;AAAA,WACK,QAAQ;AAAA,QACX,OAAO,KAAK;AAAA,QACZ;AAAA,MACF;AAAA,WACK,kBAAkB;AAAA,QACrB,OAAO,KAAK;AAAA,QACZ;AAAA,MACF;AAAA,eACS;AAAA,QACP,MAAM,MAAM,KAAK,IAAI,IAAI;AAAA,QACzB,IAAI,KAAK,UAAU,QAAQ;AAAA,UACzB,OAAO;AAAA,QACT;AAAA,MACF;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO,MAAM,OAAO,IAAI,SAAS,KAAK,UAAU;AAAA;AAIlD,IAAM,iBAAiB,CAAC,UAAqC;AAAA,EAC3D,MAAM,OAAO,IAAI,KACd,MAAM,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAU,CAC9D;AAAA,EACA,QAAQ,MAAM,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,WAAW,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE;AAAA;AAI7E,IAAM,YAAY,CAAC,UACjB,OAAO,UAAU;AAEnB,IAAM,cAAc,CAClB,OACA,YACW;AAAA,EACX,MAAM,SAAS,QAAQ,cAAc,MAAM;AAAA,EAC3C,IAAI,QAAQ;AAAA,IACV,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,MAAM,UAAU,SAAS;AAAA,IAC3B,MAAM,MAAM,QAAQ,WAAW,KAAK;AAAA,IACpC,MAAM,MAAM,UAAU,MAAM,GAAG,IAAI,MAAM,MAAM;AAAA,IAC/C,OAAO,MAAM,KAAK,QAAQ,SAAS;AAAA,EACrC;AAAA,EACA,IAAI,MAAM,UAAU,SAAS;AAAA,IAC3B,OAAO,yCAAyC,MAAM;AAAA,EACxD;AAAA,EAEA,MAAM,SAAS,eAAe,KAAK;AAAA,EACnC,IAAI,MAAM,UAAU;AAAA,IAClB,MAAM,SAAS,KAAK,OAAO,KAAK,IAAI,IAAI,MAAM,SAAS,KAAK,CAAC,CAAC;AAAA,IAC9D,MAAM,SAAS,MAAM,aAAa,WAAW,OAAO;AAAA,IACpD,OAAO,GAAG,SAAS,UAAU;AAAA,EAC/B;AAAA,EACA,IAAI,MAAM,UAAU,cAAc;AAAA,IAChC,OAAO,KAAK;AAAA,EACd;AAAA,EACA,OAAO,GAAG,eAAe,IAAI,MAAM,SAAS,QAAQ,KAAK,KAAK;AAAA;AAIzD,IAAM,yBAAyB,CACpC,QACA,UAA+B,CAAC,MACrB;AAAA,EACX,MAAM,QAAQ,OAAO,IAAI,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC;AAAA,EAE/D,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,WAAW,QAAQ,OAAO,IAAI,IAAI,QAAQ;AAAA,IAChD,MAAM,WAAW,QAAQ,OAAO,IAAI,QAAQ;AAAA,IAC5C,IAAI,IAAI,GAAG;AAAA,MACT,IAAI,KAAK,YAAY,WAAW;AAAA,IAAO;AAAA;AAAA,CAAM;AAAA,IAC/C;AAAA,IACA,IAAI,KAAK,IAAI;AAAA,EACf;AAAA,EACA,OAAO,GAAG,IAAI,KAAK,EAAE;AAAA;AAAA;;;ADtHvB,IAAM,YAAY;AA2BlB,IAAM,gBAAgB,CACpB,UAC4B,OAAO,UAAU,YAAY,UAAU;AAGrE,IAAM,UAAU,CACd,KACA,SAC4B;AAAA,EAC5B,IAAI,UAAmC;AAAA,EACvC,WAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AAAA,IACjC,IAAI,cAAc,OAAO,GAAG;AAAA,MAC1B,UAAU,QAAQ;AAAA,IACpB,EAAO;AAAA,MACL;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,iBAAgB,CAAC,UACrB,OAAO,UAAU;AAEnB,IAAM,WAAW,CAAC,UAChB,eAAc,KAAK,IAAI,QAAQ;AAGjC,IAAM,kBAAkB,CACtB,KACA,WACA,YACkB;AAAA,EAClB,MAAM,QAAQ,IAAI,MAAM,SAAS;AAAA,EACjC,IAAI,CAAC,OAAO,QAAQ;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,IAAI,MAAM,QAAQ,MAAM;AAAA,EAChC,OAAO,gCAAgC,aAAa,WAAW,MAAM,QAAQ;AAAA;AAa/E,IAAM,gBAAgB,OACpB,SACA,YAC8B;AAAA,EAC9B,IAAI,QAAQ,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,KAID,EAAE,aAAa,IAAK,MAAa;AAAA,IAGlC,MAAM;AAAA,IACN,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ;AAAA,MAC5B,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAEH,OAAO,aAAa;AAAA,IAClB,YAAY,QAAQ,cAAc;AAAA,IAClC,SAAS,QAAQ;AAAA,IAEjB,aAAa,UAAU,kBAAkB;AAAA,IACzC,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ,SAAS,QAAQ,IAAI;AAAA,IACpC,QAAQ,CAAC;AAAA,EACX,CAAC;AAAA;AAOI,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,QAAQ,UAAU,CAAC;AAAA,EAGlC,MAAM,QAAQ,cACZ,KAAK,YAAY,MAAK,UAAU,SAAS,QAAQ,IAAI,CACvD;AAAA,EACA,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,WAAU,CAAC,QAAqC;AAAA,IACpD,MAAM,YACJ,SAAS,QAAQ,KAAK,OAAO,QAAQ,cAAc,CAAC,KACpD,SAAS,IAAI,GAAG,KAChB;AAAA,IAMF,MAAM,OACJ,YAAY,SAAS,KAAK,SAAQ,SAAS,IAAI,GAAG,KAAK,EAAE,KAAK;AAAA,IAEhE,MAAM,OAA0B,CAAC;AAAA,IACjC,MAAM,QAAQ,SAAS,QAAQ,KAAK,OAAO,SAAS,OAAO,CAAC;AAAA,IAC5D,MAAM,cAAc,SAClB,QAAQ,KAAK,OAAO,eAAe,aAAa,CAClD;AAAA,IACA,IAAI,OAAO;AAAA,MACT,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,IAAI,aAAa;AAAA,MACf,KAAK,cAAc;AAAA,IACrB;AAAA,IAKA,MAAM,SAAU,QAAQ,KAAK,OAAO,QAAQ,MAAM,KAChD,CAAC;AAAA,IACH,MAAM,WAAW,MAAM,QAAQ,MAAM,IACjC,uBAAuB,QAAQ;AAAA,MAC7B,UAAU,CAAC,UAAU;AAAA,QAInB,MAAM,MAAO,MAAM,OAAyC;AAAA,QAC5D,OAAO,MACH,gBAAgB,KAAK,QAAQ,WAAW,QAAQ,OAAO,IACvD;AAAA;AAAA,MAEN,aAAa,QAAQ;AAAA,IACvB,CAAC,IACD;AAAA,IAEJ,MAAM,MAAM,oBAAO,UAAU,UAAU,IAAI;AAAA,IAC3C,OAAO;AAAA,MACL,MAAM,EAAE,QAAQ,MAAM,MAAM,SAAS;AAAA,MAGrC,MAAM,KAAK,KAAK;AAAA,MAChB,MAAM,SAAS,GAAG;AAAA,MAClB,cAAc,SAAS,QAAQ,KAAK,OAAO,gBAAgB,YAAY,CAAC;AAAA,MACxE;AAAA,MACA,KAAK,GAAG;AAAA,IACV;AAAA;AAAA,EAGF,MAAM,QAAO,OACX,UAAU,KAAK,WAAW,SACI;AAAA,IAC9B,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,MAAM,SAAS,MAAM,cAAc,SAAS,KAAK,WAAW,KAAK;AAAA,MACjE,MAAM,OAAO,MAAM,OAAO,MAAwB,QAAQ,KAAK;AAAA,MAC/D,OAAO,KAAK,IAAI,QAAO;AAAA,OAEzB,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO;AAAA;AAAA,EAGT,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,OAAO;AAAA;AAAA,EAGhD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,MAAK,IAAI,GACf,QAAQ,cACR,MAAM,MAAK,CACb,IACA;AAAA,EACN;AAAA;;;AnB3QF,IAAM,cAAc,MAAkC;AAAA,EACpD,MAAM,OAAO,IAAI;AAAA,EACjB,OAAO,CAAC,SAAS;AAAA,IACf,IAAI,OAAO;AAAA,IACX,IAAI,IAAI;AAAA,IACR,OAAO,KAAK,IAAI,IAAI,GAAG;AAAA,MACrB,OAAO,GAAG,QAAQ;AAAA,MAClB,KAAK;AAAA,IACP;AAAA,IACA,KAAK,IAAI,IAAI;AAAA,IACb,OAAO;AAAA;AAAA;AAWX,IAAM,gBAAgB,CACpB,SACA,MACA,aACmB;AAAA,EACnB,eAAe,iBAAiB;AAAA,EAChC,WAAW,MAAK,QAAQ,QAAQ,UAAU,gBAAgB,IAAI;AAAA,EAC9D,UAAU,MAAK,QAAQ,QAAQ,SAAS,IAAI;AAAA,EAC5C,MAAM,QAAQ;AAAA,EACd,SAAS,QAAQ;AAAA,EACjB,aAAa,QAAQ;AAAA,EACrB,SAAS,QAAQ,WAAW,QAAQ,SAAS;AAC/C;AAOA,IAAM,sBAAsB,CAC1B,WAEA,OAAO,YACL,OAAO,QAAQ,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS;AAAA,EACxD;AAAA,EACA,OAAO,KAAK,IAAI,WAAW;AAC7B,CAAC,CACH;AAEF,IAAM,cAAc,CAClB,KACA,MACA,QACA,SACA,YACkB;AAAA,EAClB,IAAI,IAAI,SAAS,cAAc;AAAA,IAC7B,OAAO,iBAAiB;AAAA,MACtB,SAAS,IAAI;AAAA,MACb,SAAS,IAAI;AAAA,MACb;AAAA,MACA,QAAQ,IAAI;AAAA,MACZ,aAAa,QAAQ;AAAA,MACrB,MAAM,IAAI;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,IAAI,SAAS,UAAU;AAAA,IAGzB,OAAO,IAAI,OAAO,SAAS,OAAO,IAAI,SAAS,KAAK,IAAI,QAAQ,KAAK;AAAA,EACvE;AAAA,EACA,IAAI,IAAI,SAAS,UAAU;AAAA,IACzB,OAAO,aACL;AAAA,MACE,YAAY,IAAI;AAAA,MAChB,SAAS,IAAI;AAAA,MACb,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA,cAAc,IAAI;AAAA,MAClB,QAAQ,IAAI;AAAA,MACZ,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,IACb,GACA,cAAc,SAAS,MAAM,OAAO,CACtC;AAAA,EACF;AAAA,EACA,IAAI,IAAI,SAAS,UAAU;AAAA,IACzB,OAAO,aACL;AAAA,MACE,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd;AAAA,MACA,cAAc,IAAI;AAAA,MAClB,QAAQ,IAAI;AAAA,MACZ,YAAY,IAAI;AAAA,MAChB,gBAAgB,IAAI;AAAA,IACtB,GACA,cAAc,SAAS,MAAM,OAAO,CACtC;AAAA,EACF;AAAA,EACA,IAAI,IAAI,SAAS,YAAY;AAAA,IAC3B,OAAO,eACL;AAAA,MACE,aAAa,OAAO,QAAQ;AAAA,MAC5B,SAAS,IAAI;AAAA,MACb,iBAAiB,OAAO,KAAK,OAAO,YAAY,MAAM;AAAA,MACtD,MAAM,OAAO;AAAA,MACb;AAAA,MACA,QAAQ,IAAI;AAAA,MACZ,qBAAqB,oBAAoB,MAAM;AAAA,MAC/C,OAAO,IAAI;AAAA,MACX,UAAU,OAAO;AAAA,IACnB,GACA,cAAc,SAAS,MAAM,OAAO,CACtC;AAAA,EACF;AAAA,EACA,IAAI,IAAI,SAAS,mBAAmB;AAAA,IAClC,OAAO,qBACL;AAAA,MACE,QAAQ,IAAI;AAAA,MACZ,OAAO,IAAI;AAAA,MACX;AAAA,MACA,OAAO,IAAI;AAAA,MACX,cAAc,IAAI;AAAA,MAClB,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,MAAM,IAAI;AAAA,IACZ,GACA,cAAc,SAAS,MAAM,OAAO,CACtC;AAAA,EACF;AAAA,EACA,OAAO,gBACL;AAAA,IACE,OAAO,IAAI;AAAA,IACX,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,IACb;AAAA,IACA,cAAc,IAAI;AAAA,IAClB,QAAQ,IAAI;AAAA,IACZ,KAAK,IAAI;AAAA,EACX,GACA,cAAc,SAAS,MAAM,OAAO,CACtC;AAAA;AAIF,IAAM,cAAc,CAAC,aAAqB,SACxC,YAAW,IAAI,IAAI,OAAO,MAAK,SAAQ,WAAW,GAAG,IAAI;AAmBpD,IAAM,wBAAwB,CACnC,QACA,YACmB;AAAA,EACnB,MAAM,cAAc,OAAO,QAAQ,WAAW,CAAC,GAAG,OAChD,CAAC,QAAQ,IAAI,SAAS,YACxB;AAAA,EACA,MAAM,OAAO,WAAW,WAAW,IAAI,WAAW,KAAK;AAAA,EACvD,IAAI,MAAM;AAAA,IACR,OAAO;AAAA,MACL,MAAM,YAAY,QAAQ,MAAM,KAAK,IAAI;AAAA,MACzC,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,SAAS,OAAO,QAAQ;AAAA,IACxB,SAAS,OAAO,QAAQ;AAAA,EAC1B;AAAA;AAIF,IAAM,WAAW,CAAC,QAAqC;AAAA,EACrD,IAAI,IAAI,SAAS,UAAU;AAAA,IACzB,OAAO,IAAI,OAAO;AAAA,EACpB;AAAA,EACA,OAAO,IAAI,UAAU,IAAI;AAAA;AAI3B,IAAM,iBAAiB,CACrB,QACA,SACA,YACoB;AAAA,EACpB,MAAM,OAAO,OAAO,QAAQ;AAAA,EAC5B,IAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAAA,IAC9B,OAAO;AAAA,MACL,iBAAiB;AAAA,QACf,SAAS,OAAO,QAAQ;AAAA,QACxB,SAAS,OAAO,QAAQ;AAAA,QACxB,MAAM;AAAA,QACN,aAAa,QAAQ;AAAA,QACrB,MAAM,OAAO,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,YAAY;AAAA,EAC5B,OAAO,KAAK,IAAI,CAAC,QACf,YAAY,KAAK,QAAQ,SAAS,GAAG,CAAC,GAAG,QAAQ,SAAS,OAAO,CACnE;AAAA;AAUK,IAAM,iBAAiB,CAC5B,QACA,SACA,YACoB;AAAA,EACpB,MAAM,UAAU,eAAe,QAAQ,SAAS,OAAO;AAAA,EAEvD,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,QAAQ,KACN,cAAc,YAAY,cAAc,SAAS,WAAW,OAAO,CAAC,CACtE;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AfhNF,IAAM,WAAW,CAAC,KAAa,SAA0B;AAAA,EAC9D,MAAM,MAAM,UAAS,KAAK,IAAI;AAAA,EAC9B,OAAO,EAAE,IAAI,WAAW,IAAI,KAAK,YAAW,GAAG;AAAA;AAIjD,IAAM,uBAAuB,CAC3B,QACA,cACmB;AAAA,EACnB,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH,SAAS;AAAA,SACJ,OAAO;AAAA,MACV,MAAM,UAAU,eAAe,OAAO,QAAQ;AAAA,IAChD;AAAA,IACA,YAAY;AAAA,SACP,OAAO;AAAA,MACV,SAAS,UAAU,WAAW,OAAO,WAAW;AAAA,MAChD,MAAM,UAAU,QAAQ,OAAO,WAAW;AAAA,MAC1C,QAAQ,UAAU,UAAU,OAAO,WAAW;AAAA,IAChD;AAAA,EACF;AAAA;AAyCF,IAAM,qBAAqB,CACzB,OACA,mBACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,QAAQ,OAAO;AAAA,IAGxB,IAAI,KAAK,cAAc,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,GAAG;AAAA,MACpE;AAAA,IACF;AAAA,IACA,KAAK,IAAI,KAAK,UAAU;AAAA,IACxB,MAAM,WAAW,UAAS,gBAAgB,KAAK,UAAU,EACtD,MAAM,IAAI,EACV,KAAK,GAAG;AAAA,IACX,MAAM,UAAU,KAAK,WAAW,KAAK,OAAO;AAAA,IAC5C,IAAI,aAAa,SAAS;AAAA,MACxB,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,QACX,SAAS,mBAAmB,KAAK,OAAO,wDAAwD,KAAK,4BAA4B,+CAA+C;AAAA,QAChL,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,IAAM,yBAAyB,CAC7B,QACA,WACG;AAAA,EAIH,MAAM,oBACJ,OAAO,KAAK,OAAO,YAAY,MAAM,EAAE,SAAS,IAC5C,OAAO,YAAY,SACnB;AAAA,EACN,MAAM,gBAAgB,OAAO,QAAQ,OAAO,QAAQ,KAAK,EAAE,OACzD,IAAI,UAAU,OAAO,KAAK,KAAK,WAAW,EAAE,SAAS,CACvD;AAAA,EACA,MAAM,kBACJ,cAAc,SAAS,IACnB,OAAO,YACL,cAAc,IAAI,EAAE,MAAM,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAC9D,IACA;AAAA,EAEN,MAAM,QAAsB,CAAC;AAAA,EAC7B,MAAM,iBAA+B,CAAC;AAAA,EACtC,IAAI,eAAe;AAAA,EACnB,aAAa,QAAQ,SAAS,iBAAiB,QAAQ;AAAA,IACrD,eAAe,KAAK,GAAG,WAAW;AAAA,IAClC,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,aAAa,eAAe,OAAO;AAAA,QACvC,UAAU,OAAO;AAAA,QACjB,aAAa,OAAO,QAAQ;AAAA,QAC5B;AAAA,QACA,MAAM,OAAO;AAAA,QACb,QAAQ;AAAA,UACN,MAAM,OAAO;AAAA,UACb,QAAQ,OAAO;AAAA,UACf,QAAQ,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,QACA,UAAU,OAAO;AAAA,MACnB,CAAC;AAAA,MACD,IAAI,WAAW,MAAM,WAAW,KAAK,WAAW,YAAY,SAAS,GAAG;AAAA,QACtE,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,GAAG,WAAW,KAAK;AAAA,MAC9B,eAAe,KAAK,GAAG,WAAW,WAAW;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,OAAO,EAAE,aAAa,gBAAgB,cAAc,MAAM;AAAA;AASrD,IAAM,cAAc,OACzB,MACA,UASI,CAAC,MACqB;AAAA,EAC1B,MAAM,OAAO,QAAQ,QAAQ;AAAA,EAC7B,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,eAAe,MAAM,WAAW,MAAM;AAAA,IAC1C,cAAc,QAAQ;AAAA,EACxB,CAAC;AAAA,EAKD,MAAM,SAAS,mBACb,qBAAqB,aAAa,QAAQ,QAAQ,SAAS,CAC7D;AAAA,EACA,MAAM,UAAU,sBAAsB,MAAM,QAAQ;AAAA,IAClD,YAAY,QAAQ;AAAA,EACtB,CAAC;AAAA,EAID,MAAM,UAAU,eAAe,QAAQ,SAAS;AAAA,IAC9C;AAAA,IACA;AAAA,IACA,SAAS,QAAQ;AAAA,EACnB,CAAC;AAAA,EACD,WAAW,UAAU,SAAS;AAAA,IAC5B,OAAO,WAAW;AAAA,EACpB;AAAA,EAKA,MAAM,cAAkC,QAAQ,QAAQ,CAAC,WACvD,OAAO,UAAU,CAAC,OAAO,cACrB,CAAC,IACD,CAAC,EAAE,QAAQ,OAAO,QAAQ,MAAM,OAAO,YAAY,CAAC,CAC1D;AAAA,EAOA,MAAM,aACJ,OAAO,QAAQ,OAAO,KAAK,WAAW,QAClC,OAAO,KAAK,QAAQ,QAAQ,CAAC,WAC3B,OAAO,SAAS,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,CAChE,IACA;AAAA,EAEN,OAAO,QAAQ,cAAc,MAAM,QAAQ,IAAI;AAAA,IAC7C,QAAQ,IACN,QAAQ,IAAI,OAAO,YAAY,EAAE,WAAY,MAAM,OAAO,KAAK,EAAG,EAAE,CACtE;AAAA,IACA,mBAAmB,aAAa;AAAA,MAC9B;AAAA,MACA,aAAa,OAAO,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,IACpE,CAAC;AAAA,EACH,CAAC;AAAA,EAOD,MAAM,qBAAmC,CAAC;AAAA,EAC1C,MAAM,QAAQ,IACZ,OAAO,QAAQ,GAAG,QAAQ,cAAc;AAAA,IACtC,IAAI,OAAO,UAAU,CAAC,OAAO,aAAa;AAAA,MACxC,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO,QAAQ,IAAI,OAAO,UAAU;AAAA,MAClC,IAAI,CAAC,MAAM,cAAc,CAAC,qBAAqB,MAAM,KAAK,IAAI,GAAG;AAAA,QAC/D;AAAA,MACF;AAAA,MACA,MAAM,YAAY,MAAM,eAAe,MAAM,KAAK,MAAM;AAAA,QACtD,aAAa,OAAO;AAAA,QACpB,YAAY,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,QACzD,YAAY,MAAM;AAAA,MACpB,CAAC;AAAA,MACD,MAAM,WAAW;AAAA,MACjB,mBAAmB,KAAK,GAAG,UAAU,MAAM;AAAA,KAC5C;AAAA,GACF,CACH;AAAA,EAMA,MAAM,mBAAmB,IAAI,IAAI;AAAA,IAC/B,GAAG,OAAO,QAAQ,GAAG,YAAY,iBAC/B,OAAO,QAAQ,cAAc,CAAC,CAAC,CACjC;AAAA,IACA,GAAG,WAAW;AAAA,EAChB,CAAC;AAAA,EAED;AAAA,IACE,aAAa;AAAA,IACb;AAAA,IACA,OAAO;AAAA,MACL,uBAAuB,QAAQ,MAAM;AAAA,EAGzC,MAAM,QACJ,SAAS,WAAW,CAAC,UACjB,SAAS,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,IAC1C;AAAA,EAKN,MAAM,eAAe,0BAA0B,OAAO,YAAY;AAAA,EAClE,MAAM,uBAAqC,CAAC;AAAA,EAC5C,IAAI,aAAa,WAAW,aAAa,WAAW,OAAO;AAAA,IACzD,MAAM,UAAU,MACb,IAAI,CAAC,SAAS,KAAK,UAAU,EAC7B,OAAO,CAAC,SAAyB,SAAS,SAAS;AAAA,IAMtD,MAAM,UAAU,kBAAkB,QAAQ,IAAI;AAAA,IAC9C,MAAM,eAAe,QAClB,QAAQ,CAAC,WAAY,OAAO,cAAc,CAAC,OAAO,WAAW,IAAI,CAAC,CAAE,EACpE,OAAO,CAAC,QAAQ,YAAY,QAAQ,SAAS,SAAS,GAAG,CAAC;AAAA,IAC7D,MAAM,WAAW,qBACf,QAAQ,MACR,cACA,SACA,OACF;AAAA,IACA,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,CAAC,KAAK,gBAAgB,KAAK,YAAY;AAAA,QACzC,KAAK,eAAe,SAAS,IAAI,KAAK,UAAU;AAAA,MAClD;AAAA,IACF;AAAA,IAMA,MAAM,UAAU,MAAM,OACpB,CAAC,SACC,KAAK,cACL,CAAC,KAAK,gBACN,aAAa,KAAK,CAAC,QAAQ,SAAS,KAAK,KAAK,cAAc,EAAE,CAAC,CACnE,EAAE;AAAA,IACF,qBAAqB,KACnB,GAAG,2BAA2B,QAAQ,MAAM,OAAO,CACrD;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,kBAAkB,OAAO;AAAA,IACrC,UAAU,OAAO;AAAA,IACjB,YAAY,WAAW;AAAA,IACvB,MAAM,OAAO;AAAA,IACb,YAAY,OAAO;AAAA,IACnB;AAAA,IACA,UAAU,OAAO;AAAA,EACnB,CAAC;AAAA,EACD,MAAM,WAAW,cAAc,EAAE,QAAQ,SAAS,MAAM,CAAC;AAAA,EAEzD,MAAM,eAAe,OAAO,OACxB,gBAAgB,OAAO,OAAO,MAAM,OAAO,QAAQ,IACnD,CAAC;AAAA,EACL,MAAM,kBAAkB,OAAO,WAC3B,oBAAoB,OAAO,OAAO,QAAQ,IAC1C,CAAC;AAAA,EAEL,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,aAAa;AAAA,MACX,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,WAAW;AAAA,MACd,GAAG,mBAAmB,OAAO,sBAAsB,QAAQ,OAAO,EAAE,IAAI;AAAA,MACxE,GAAG,MAAM;AAAA,MACT,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB,aAAa;AAAA,EACrC;AAAA;",
|
|
45
|
-
"debugId": "
|
|
45
|
+
"mappings": "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",
|
|
46
|
+
"debugId": "A3A6EEB99D149F0C64756E2164756E21",
|
|
46
47
|
"names": []
|
|
47
48
|
}
|